aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/DemoteRegToStack.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2015-02-09 01:20:53 +0000
committerTim Northover <tnorthover@apple.com>2015-02-09 01:20:53 +0000
commit854c927de5caf761d85a89cfef4acbafd51bf01b (patch)
tree99ffe5c438d701146f4163ce848e29d021b50075 /llvm/lib/Transforms/Utils/DemoteRegToStack.cpp
parent114b4f324b24760d6c3e12e60b0ea75956e8168e (diff)
downloadllvm-854c927de5caf761d85a89cfef4acbafd51bf01b.zip
llvm-854c927de5caf761d85a89cfef4acbafd51bf01b.tar.gz
llvm-854c927de5caf761d85a89cfef4acbafd51bf01b.tar.bz2
DeadArgElim: assess uses of entire return value aggregate.
Previously, a non-extractvalue use of an aggregate return value meant the entire return was considered live (the algorithm gave up entirely). This was correct, but conservative. It's better to actually look at that Use, making the analysis results apply to all sub-values under consideration. E.g. %val = call { i32, i32 } @whatever() [...] ret { i32, i32 } %val The return is using the entire aggregate (sub-values 0 and 1). We can still simplify @whatever if we can prove that this return is itself unused. Also unifies the logic slightly between aggregate and non-aggregate cases.. llvm-svn: 228558
Diffstat (limited to 'llvm/lib/Transforms/Utils/DemoteRegToStack.cpp')
0 files changed, 0 insertions, 0 deletions