Please review these experimental changes that enable us to measure the impact of our various code size optimizations in a recent LLVM trunk. My approach was to DISABLE everything by default and add command line controls as necessary to selectively enable individual optimizations.
I am in the process of running experiments, but at the moment, everything seems to be working fine and showing reasonable results. Here is list of the changed files with the suggested reviewers:
InlineCost.cpp: Zia (inline heuristic change)
PrologEpilogInserter.cpp: Zia (stack symbol ordering)
TargetLowering.cpp: Anton (soft float compares)
X86.td: Andrey (lakemont support)
X86CallFrameOptimization: Zia (store to push)
X86FixupLEAs.cpp: Anton (INC/DEC improvement)
X86ISelDAGToDAG.cpp: Zia (Immediate merging)
X86ISelLowering.cpp: Andrey (lakemont support & avoid integer compare promotion)
X86OptimizeLEAs.cpp: Andrey (LEA optimization)
X86Subtarget.cpp: Andrey (lakemont support)
X86Subtarget.h: Andrey (lakemont support)
X86AsmBackend.cpp: Zia (immediate encodings)
All tools/clang changes: Andrey (-miamcu & lakemont support)
Thanks,
- Dave