llvm-6502/lib/MC
Daniel Dunbar 0cc8bd4861 MC: Stop restarting layout on every relaxation.
- Still O(N^2), just a faster form, and now its the MCAsmLayout's fault.

On the .s I am tuning against (combine.s from 403.gcc):
--
ddunbar@lordcrumb:MC$ diff stats-before.txt stats-after.txt
5,10c5,10
<    1728 assembler - Number of assembler layout and relaxation steps
<    7707 assembler - Number of emitted assembler fragments
<  120588 assembler - Number of emitted object file bytes
< 2233448 assembler - Number of evaluated fixups
<    1727 assembler - Number of relaxed instructions
< 6723845 mcexpr    - Number of MCExpr evaluations
---
>      3 assembler - Number of assembler layout and relaxation steps
>   7707 assembler - Number of emitted assembler fragments
> 120588 assembler - Number of emitted object file bytes
>  14796 assembler - Number of evaluated fixups
>   1727 assembler - Number of relaxed instructions
>  67889 mcexpr    - Number of MCExpr evaluations
--
Feel free to LOL at the -before numbers, if you like.

I am a little surprised we make more than 2 relaxation passes. It's pretty
trivial for us to do relaxation out-of-order if that would give a speedup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99543 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 19:35:56 +00:00
..
MCParser MC: Allow modifiers in MCSymbolRefExpr, and eliminate X86MCTargetExpr. 2010-03-15 23:51:06 +00:00
CMakeLists.txt MC/Mach-O: Move to MachObjectWriter.{h,cpp}. 2010-03-19 10:43:15 +00:00
MachObjectWriter.cpp MC/Mach-O: Switch to MCSectionData::getOrdinal. 2010-03-25 08:08:54 +00:00
Makefile
MCAsmInfo.cpp move fastcall/stdcall mangling up into Mangler. 2010-03-12 21:03:47 +00:00
MCAsmInfoCOFF.cpp move fastcall/stdcall mangling up into Mangler. 2010-03-12 21:03:47 +00:00
MCAsmInfoDarwin.cpp move three lowering hooks from MAI to TLOF and make one of them 2010-03-10 07:20:42 +00:00
MCAsmStreamer.cpp MCInst: Add ::dump_pretty. 2010-03-22 21:49:34 +00:00
MCAssembler.cpp MC: Stop restarting layout on every relaxation. 2010-03-25 19:35:56 +00:00
MCCodeEmitter.cpp MCCodeEmitter: Add target independent fixup flag for is-pc-relative. 2010-03-19 10:43:23 +00:00
MCContext.cpp fix GetOrCreateTemporarySymbol to require a name, clients 2010-03-17 05:41:18 +00:00
MCDisassembler.cpp
MCExpr.cpp MC: Fix refacto in MCExpr evaluation, I mistakenly replaced a fragment address with a symbol address. 2010-03-25 01:03:17 +00:00
MCInst.cpp MCInst: Add ::dump_pretty. 2010-03-22 21:49:34 +00:00
MCInstPrinter.cpp add a new MCInstPrinter::getOpcodeName interface, when it is 2010-02-11 22:39:10 +00:00
MCMachOStreamer.cpp MC: Switch to using MCInst fragments to do relaxation. 2010-03-23 05:09:03 +00:00
MCNullStreamer.cpp make the NullStreamer set the section on a label when emitted so that isDefined() works. 2010-03-09 23:12:18 +00:00
MCObjectWriter.cpp MC/Mach-O: Move to MachObjectWriter.{h,cpp}. 2010-03-19 10:43:15 +00:00
MCSection.cpp Put MCSectionCOFF::Name into the MCContext instead of leaking it. 2010-03-22 23:26:12 +00:00
MCSectionELF.cpp
MCSectionMachO.cpp
MCStreamer.cpp add a EmitSymbolValue convenience method to MCStreamer. 2010-03-09 00:39:24 +00:00
MCSymbol.cpp
MCValue.cpp MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will need this for accessing to symbol modifiers. 2010-03-18 00:59:10 +00:00
TargetAsmBackend.cpp MC/Darwin: Add a new target hook for whether the target uses "reliable" symbol differences, basically whether the assembler should attempt to understand atoms when using scattered symbols. 2010-03-18 00:58:53 +00:00