summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAssembler.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* MC: Move Layout{Fragment,Section} into MCAsmLayout, and add LayoutFile().Daniel Dunbar2010-05-131-26/+27
| | | | llvm-svn: 103738
* MC: Factor out MCAssembler::ComputeFragmentSize.Daniel Dunbar2010-05-131-36/+44
| | | | llvm-svn: 103724
* MC: Add section layout order indices to MCSectionData.Daniel Dunbar2010-05-131-0/+4
| | | | llvm-svn: 103715
* MC: Move ordinal calculation, to make sure fragments synthesized for layout ↵Daniel Dunbar2010-05-131-21/+21
| | | | | | get assigned ordinals properly. llvm-svn: 103711
* MC: Create dummy fragments to avoid ever having empty sections, which ↵Daniel Dunbar2010-05-131-8/+9
| | | | | | simplifies layout. llvm-svn: 103710
* MC: Add MCAsmLayout::FragmentReplaced() helper function.Daniel Dunbar2010-05-131-4/+6
| | | | llvm-svn: 103709
* Fix -Asserts warning.Daniel Dunbar2010-05-131-4/+2
| | | | llvm-svn: 103697
* MC: Eliminate MCSectionData::{,Address,File}Size, which can now be computed byDaniel Dunbar2010-05-131-42/+28
| | | | | | utility functions. llvm-svn: 103695
* MC: Switch to using explicit MCAlignFragments with OnlyAlignAddress bit insteadDaniel Dunbar2010-05-131-22/+31
| | | | | | | | of manually doing padding/editing layout in LayoutSection(). - This probably seems like six-of-one and half-dozen of another, but there is a method to my madness. llvm-svn: 103693
* MC: Add MCAlignFragment::OnlyAlignAddress bit. This is a bit of magic that ↵Daniel Dunbar2010-05-131-1/+17
| | | | | | says the align fragment shouldn't contribute to the logical section size, it is will be used for cleaning up the code to handle section alignment. llvm-svn: 103690
* MC: Add MCSectionData::AddressSize, which is the size of the address space ↵Daniel Dunbar2010-05-131-6/+15
| | | | | | consumed by the section. This can differ from both the section logical size, and the section size on disk (although the current code handles this without making an explicit distinction). llvm-svn: 103689
* MC: Move MCAlignFragment::EmitNops value out of the constructor.Daniel Dunbar2010-05-121-1/+1
| | | | llvm-svn: 103665
* MC: Eliminate MCZeroFillFragment, it is no longer needed.Daniel Dunbar2010-05-121-23/+1
| | | | llvm-svn: 103664
* MC: Explicitly check that only virtual fragments appear in virtual sections.Daniel Dunbar2010-05-121-0/+23
| | | | llvm-svn: 103663
* MC: Switch MCFillFragment to storing total fill size instead of a count. ↵Daniel Dunbar2010-05-121-3/+3
| | | | | | This allows using ValueSize==0 to represent a virtual fill. llvm-svn: 103662
* 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
OpenPOWER on IntegriCloud