diff options
author | Chris Lattner <sabre@nondot.org> | 2011-02-13 22:25:43 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-02-13 22:25:43 +0000 |
commit | 46c01a30f4574798135719f3c639a5ce086baab5 (patch) | |
tree | 6805261c2f48d8e5e1c5e4812fb4c9a132ba69c6 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | db8a18c78843688b80dde273af950993f2279e7f (diff) | |
download | bcm5719-llvm-46c01a30f4574798135719f3c639a5ce086baab5.tar.gz bcm5719-llvm-46c01a30f4574798135719f3c639a5ce086baab5.zip |
Enhance ComputeMaskedBits to know that aligned frameindexes
have their low bits set to zero. This allows us to optimize
out explicit stack alignment code like in stack-align.ll:test4 when
it is redundant.
Doing this causes the code generator to start turning FI+cst into
FI|cst all over the place, which is general goodness (that is the
canonical form) except that various pieces of the code generator
don't handle OR aggressively. Fix this by introducing a new
SelectionDAG::isBaseWithConstantOffset predicate, and using it
in places that are looking for ADD(X,CST). The ARM backend in
particular was missing a lot of addressing mode folding opportunities
around OR.
llvm-svn: 125470
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions