| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
| |
for each fragment (not yet used).
llvm-svn: 103438
|
| |
|
|
|
|
|
|
| |
match failure.
Also, fixes a few memory leak FIXMEs.
llvm-svn: 102986
|
| |
|
|
| |
llvm-svn: 100709
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
| |
llvm-svn: 99529
|
| |
|
|
| |
llvm-svn: 99528
|
| |
|
|
| |
llvm-svn: 99500
|
| |
|
|
| |
llvm-svn: 99474
|
| |
|
|
| |
llvm-svn: 99473
|
| |
|
|
| |
llvm-svn: 99467
|
| |
|
|
|
|
| |
MCAsmLayout object.
llvm-svn: 99380
|
| |
|
|
| |
llvm-svn: 99350
|
| |
|
|
|
|
| |
Also, both MCMachOStreamer and MCAssembler are now target independent!
llvm-svn: 99256
|
| |
|
|
|
|
| |
particular instruction + fixups might need relaxation.
llvm-svn: 99249
|
| |
|
|
|
|
| |
dependencies in MCMachOStreamer and MCAssembler.
llvm-svn: 99248
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 99229
|
| |
|
|
|
|
| |
would do, and sprinkle in some const.
llvm-svn: 99218
|
| |
|
|
| |
llvm-svn: 99217
|
| |
|
|
|
|
| |
of a MCDataFragment). Object files should only need the generic MCFragment features.
llvm-svn: 99205
|
| |
|
|
| |
llvm-svn: 99203
|
| |
|
|
|
|
| |
important.
llvm-svn: 99202
|
| |
|
|
|
|
| |
- MCAssembler is now object-file independent, although we will surely need more work to fully support ELF/COFF.
llvm-svn: 98955
|
| |
|
|
| |
llvm-svn: 98954
|
| |
|
|
| |
llvm-svn: 98953
|
| |
|
|
| |
llvm-svn: 98952
|
| |
|
|
| |
llvm-svn: 98950
|
| |
|
|
| |
llvm-svn: 98949
|
| |
|
|
| |
llvm-svn: 98948
|
| |
|
|
|
|
| |
specific not object writer specific task.
llvm-svn: 98947
|
| |
|
|
|
|
| |
and eliminate MCAsmFixup::FixedValue.
llvm-svn: 98944
|
| |
|
|
|
|
| |
changes the object writer may need to make to the assembler from the actual .o writing.
llvm-svn: 98943
|
| |
|
|
|
|
| |
evaluation / relocation handling from the actual .o writing.
llvm-svn: 98942
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
- 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
|
| |
|
|
|
|
| |
some corner cases.
llvm-svn: 98924
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
need this for accessing to symbol modifiers.
llvm-svn: 98791
|
| |
|
|
|
|
| |
external relocations, but we don't have x86_64 relocations yet).
llvm-svn: 98583
|
| |
|
|
| |
llvm-svn: 98582
|
| |
|
|
| |
llvm-svn: 98456
|
| |
|
|
| |
llvm-svn: 98454
|
| |
|
|
|
|
|
| |
relative to the fragment address, not its offset. This was masked by the text
section normally being at address 0.
llvm-svn: 98420
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- The implementation is currently very brain dead and inefficient, but I have a
clear plan on how to fix it.
- The good news is, it works and correctly assembles 403.gcc (when built with
Clang, at '-Os', '-Os -g', and '-O3'). Even better, at '-Os' and '-Os -g',
the resulting binary is exactly equivalent to that when built with the system
assembler. So it probably works! :)
llvm-svn: 98396
|
| |
|
|
| |
llvm-svn: 98381
|
| |
|
|
| |
llvm-svn: 98266
|
| |
|
|
|
|
| |
assembly time value of variables.
llvm-svn: 98241
|