diff options
author | Hal Finkel <hfinkel@anl.gov> | 2014-12-11 22:51:06 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2014-12-11 22:51:06 +0000 |
commit | b5e9b0426acff0a0c7abb16ab071d68026dd1bba (patch) | |
tree | 732f822efdc0ada7bd0bc09187a88de0b836c3c3 /clang/lib/Lex/PPMacroExpansion.cpp | |
parent | 005f9f433c4d2559677152795c30090c4cd9270e (diff) | |
download | bcm5719-llvm-b5e9b0426acff0a0c7abb16ab071d68026dd1bba.tar.gz bcm5719-llvm-b5e9b0426acff0a0c7abb16ab071d68026dd1bba.zip |
[PowerPC] Better lowering for add/or of a FrameIndex
If we have an add (or an or that is really an add), where one operand is a
FrameIndex and the other operand is a small constant, we can combine the
lowering of the FrameIndex (which is lowered as an add of the FI and a zero
offset) with the constant operand.
Amusingly, this is an old potential improvement entry from
lib/Target/PowerPC/README.txt which had never been resolved. In short, we used
to lower:
%X = alloca { i32, i32 }
%Y = getelementptr {i32,i32}* %X, i32 0, i32 1
ret i32* %Y
as:
addi 3, 1, -8
ori 3, 3, 4
blr
and now we produce:
addi 3, 1, -4
blr
which is much more sensible.
llvm-svn: 224071
Diffstat (limited to 'clang/lib/Lex/PPMacroExpansion.cpp')
0 files changed, 0 insertions, 0 deletions