MC: Stop restarting layout on every relaxation.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 25 Mar 2010 19:35:56 +0000 (19:35 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 25 Mar 2010 19:35:56 +0000 (19:35 +0000)
commit0cc8bd48619b943379f5c2cc11a19fb189342925
tree3242abaa26cea94b400c0b5ec25da1a071415671
parent6307dd263f52fb1fb3cbb2389a51d7d81ef106c1
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
include/llvm/MC/MCAsmLayout.h
include/llvm/MC/MCAssembler.h
lib/MC/MCAssembler.cpp