summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAssembler.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* MC: Drop support for alignment in ZeroFill fragment, we can just useDaniel Dunbar2010-05-121-11/+4
| | | | | | MCAlignFragments for this. llvm-svn: 103661
* Simplify.Daniel Dunbar2010-05-121-5/+3
| | | | llvm-svn: 103651
* MC: Factor out MCAssembler::LayoutFragmentDaniel Dunbar2010-05-121-74/+78
| | | | llvm-svn: 103649
* MC: Tweak section layout to not relying on accumulating address value.Daniel Dunbar2010-05-121-7/+13
| | | | llvm-svn: 103648
* MC: Simplify LayoutSection to just take the index of the section to layout.Daniel Dunbar2010-05-121-18/+16
| | | | llvm-svn: 103627
* MC: Track section layout order explicitly, and use to simplify.Daniel Dunbar2010-05-121-31/+15
| | | | llvm-svn: 103616
* MC/Mach-O/x86_64: Add a new hook for checking whether a particular section canDaniel Dunbar2010-05-121-0/+6
| | | | | | | | be diced into atoms, and adjust getAtom() to take this into account. - This fixes relocations to symbols in fixed size literal sections, for example. llvm-svn: 103532
* MC/Mach-O x86_64: Switch to using fragment atom symbol.Daniel Dunbar2010-05-111-37/+6
| | | | | | | | | - This eliminates getAtomForAddress() (which was a linear search) and simplifies getAtom(). - This also fixes some correctness problems where local labels at the same address as non-local labels could be assigned to the wrong atom. llvm-svn: 103480
* MC/Mach-O: Explicitly track atoms, as represented by their defining symbol, ↵Daniel Dunbar2010-05-101-5/+1
| | | | | | for each fragment (not yet used). llvm-svn: 103438
* llvm-mc: Fix case were we would skip a line in the .s file after an instructionDaniel Dunbar2010-05-041-1/+3
| | | | | | | | match failure. Also, fixes a few memory leak FIXMEs. llvm-svn: 102986
* rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner2010-04-071-6/+6
| | | | llvm-svn: 100709
* llvm-mc: Add a -mc-relax-all option, which relaxes every fixup. We always needDaniel Dunbar2010-03-251-6/+18
| | | | | | | exactly two passes in that case, and don't ever need to recompute any layout, so this is a nice baseline for relaxation performance. llvm-svn: 99563
* MC: Stop restarting layout on every relaxation.Daniel Dunbar2010-03-251-6/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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. llvm-svn: 99543
* MC: Simplify main section layout process by moving alignment into LayoutSection.Daniel Dunbar2010-03-251-30/+31
| | | | llvm-svn: 99529
* MC: Sink Section address assignment into LayoutSection.Daniel Dunbar2010-03-251-6/+6
| | | | llvm-svn: 99528
* MC: Explicity track section and fragment ordinals.Daniel Dunbar2010-03-251-0/+13
| | | | llvm-svn: 99500
* MC: Route access to SectionData offset and file size through MCAsmLayout.Daniel Dunbar2010-03-251-10/+31
| | | | llvm-svn: 99474
* MC: Route access to Fragment offset and effective size through MCAsmLayout.Daniel Dunbar2010-03-251-30/+54
| | | | llvm-svn: 99473
* MC: Eliminate MC{Fragment,{Section,Symbol}Data}::getAddress.Daniel Dunbar2010-03-251-9/+7
| | | | llvm-svn: 99467
* MC: Direct all {fragment,section,symbol} address access through the ↵Daniel Dunbar2010-03-241-21/+49
| | | | | | MCAsmLayout object. llvm-svn: 99380
* MC: Sprinkle in some more interesting statistics.Daniel Dunbar2010-03-231-1/+18
| | | | llvm-svn: 99350
* MC: Switch to using MCInst fragments to do relaxation.Daniel Dunbar2010-03-231-78/+50
| | | | | | Also, both MCMachOStreamer and MCAssembler are now target independent! llvm-svn: 99256
* MC: Add TargetAsmBackend::MayNeedRelaxation, for checking whether a ↵Daniel Dunbar2010-03-231-1/+1
| | | | | | particular instruction + fixups might need relaxation. llvm-svn: 99249
* MC: Add TargetAsmBackend::WriteNopData and use to eliminate some target ↵Daniel Dunbar2010-03-231-62/+9
| | | | | | dependencies in MCMachOStreamer and MCAssembler. llvm-svn: 99248
* MC: Tweak MCInstFragment to include the encoded data and fixups, so that we ↵Daniel Dunbar2010-03-231-13/+5
| | | | | | don't need to recompute them during relaxation. I will revisit this once all the other pieces of fast relaxation are in place. llvm-svn: 99244
* MC: Add MCInstFragment, not used yet.Daniel Dunbar2010-03-221-4/+80
| | | | llvm-svn: 99229
* MC: Fix a few more cases we were passing an MCDataFragment when a MCFragment ↵Daniel Dunbar2010-03-221-3/+4
| | | | | | would do, and sprinkle in some const. llvm-svn: 99218
* Simplify.Daniel Dunbar2010-03-221-4/+2
| | | | llvm-svn: 99217
* MC: Change MCObjectWriter::RecordRelocation to take an MCFragment (instead ↵Daniel Dunbar2010-03-221-1/+1
| | | | | | of a MCDataFragment). Object files should only need the generic MCFragment features. llvm-svn: 99205
* MC: Eliminate MCFragment::getMaxFileSize.Daniel Dunbar2010-03-221-2/+7
| | | | llvm-svn: 99203
* MC: Share the MCAsmLayout object, although its still not used for anything ↵Daniel Dunbar2010-03-221-15/+10
| | | | | | important. llvm-svn: 99202
* MC: Add TargetAsmBackend::createObjectWriter.Daniel Dunbar2010-03-191-7/+7
| | | | | | - MCAssembler is now object-file independent, although we will surely need more work to fully support ELF/COFF. llvm-svn: 98955
* MCCodeEmitter: Add target independent fixup flag for is-pc-relative.Daniel Dunbar2010-03-191-12/+4
| | | | llvm-svn: 98954
* MC: Sink code emitter into MCAssembler.Daniel Dunbar2010-03-191-2/+3
| | | | llvm-svn: 98953
* MC/Mach-O: Move to MachObjectWriter.{h,cpp}.Daniel Dunbar2010-03-191-820/+1
| | | | llvm-svn: 98952
* MC: Add TargetAsmBackend::isVirtualSection hook.Daniel Dunbar2010-03-191-15/+7
| | | | llvm-svn: 98950
* MC: Split MCObjectWriter out of MCAssembler.cpp.Daniel Dunbar2010-03-191-131/+30
| | | | llvm-svn: 98949
* MCAssembler: Pull out MCObjectWriter class.Daniel Dunbar2010-03-191-82/+126
| | | | llvm-svn: 98948
* MCAssembler: Move ApplyFixup to the TargetAsmBackend, this is a target ↵Daniel Dunbar2010-03-191-12/+1
| | | | | | specific not object writer specific task. llvm-svn: 98947
* MC/Mach-O: Lift the fixup evaluation and application up (to the same place), ↵Daniel Dunbar2010-03-191-35/+31
| | | | | | and eliminate MCAsmFixup::FixedValue. llvm-svn: 98944
* MC/Mach-O: Factor out ExecutePostLayoutBinding, to separate the post-layout ↵Daniel Dunbar2010-03-191-31/+33
| | | | | | changes the object writer may need to make to the assembler from the actual .o writing. llvm-svn: 98943
* MC/Mach-O: Lift relocation emission logic a bit higher to separate ↵Daniel Dunbar2010-03-191-56/+77
| | | | | | evaluation / relocation handling from the actual .o writing. llvm-svn: 98942
* MC/Mach-O: Add isScatteredFixupFullyResolved, which implements the correct ↵Daniel Dunbar2010-03-191-1/+59
| | | | | | | | algorithm (used on x86_64) for determining whether an evaluated fixup is fully resolved (doesn't need relocation). - Test cases will follow, once we have x86_64 relocation support. llvm-svn: 98926
* MC/Mach-O/x86_64: Add getAtom[ForAddress].Daniel Dunbar2010-03-191-0/+36
| | | | | | - These find the defining symbol which identifies the containing atom for a symbol or address. They are currently very slow, but will be eliminated eventually. llvm-svn: 98925
* MC/Mach-O: Factor out isScatteredFixupFullyResolvedSimple predicate, and fix ↵Daniel Dunbar2010-03-191-15/+52
| | | | | | some corner cases. llvm-svn: 98924
* MC/Mach-O: Factor out isSymbolLinkerVisible method; "linker visible" is a ↵Daniel Dunbar2010-03-191-10/+18
| | | | | | made up term to refer to non-temporary labels + temporary labels in sections-which-require symbols. For Darwin, it corresponds to symbols which effectively define an atom. llvm-svn: 98923
* MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will ↵Daniel Dunbar2010-03-181-14/+14
| | | | | | need this for accessing to symbol modifiers. llvm-svn: 98791
* MC/Mach-O/x86_64: Temporary labels in cstring sections require symbols (and ↵Daniel Dunbar2010-03-151-2/+8
| | | | | | external relocations, but we don't have x86_64 relocations yet). llvm-svn: 98583
* MC/Mach-O: Add MCSectionMachO::getType()Daniel Dunbar2010-03-151-12/+5
| | | | llvm-svn: 98582
* MC/X86_64: Symbol support.Daniel Dunbar2010-03-131-6/+10
| | | | llvm-svn: 98456
OpenPOWER on IntegriCloud