aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/MC/MCAsmLayout.h
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-25 19:35:56 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-25 19:35:56 +0000
commit0cc8bd48619b943379f5c2cc11a19fb189342925 (patch)
tree3242abaa26cea94b400c0b5ec25da1a071415671 /include/llvm/MC/MCAsmLayout.h
parent6307dd263f52fb1fb3cbb2389a51d7d81ef106c1 (diff)
downloadexternal_llvm-0cc8bd48619b943379f5c2cc11a19fb189342925.zip
external_llvm-0cc8bd48619b943379f5c2cc11a19fb189342925.tar.gz
external_llvm-0cc8bd48619b943379f5c2cc11a19fb189342925.tar.bz2
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
Diffstat (limited to 'include/llvm/MC/MCAsmLayout.h')
-rw-r--r--include/llvm/MC/MCAsmLayout.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/MC/MCAsmLayout.h b/include/llvm/MC/MCAsmLayout.h
index f7f32ae..ebf0520 100644
--- a/include/llvm/MC/MCAsmLayout.h
+++ b/include/llvm/MC/MCAsmLayout.h
@@ -33,6 +33,11 @@ public:
/// Get the assembler object this is a layout for.
MCAssembler &getAssembler() const { return Assembler; }
+ /// \brief Update the layout because a fragment has been resized. The
+ /// fragments size should have already been updated, the \arg SlideAmount is
+ /// the delta from the old size.
+ void UpdateForSlide(MCFragment *F, int SlideAmount);
+
/// @name Fragment Layout Data
/// @{