aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-20 20:49:53 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-07-20 20:49:53 +0000
commitf62c07f1470a55f57118e5a24334cf97cb749c59 (patch)
tree2a909ab39ecd973df6b0b8e5924118fce2351851 /clang/lib/Frontend/CompilerInvocation.cpp
parent9bca21ed25c98c2a2cfea1a02d36b2a753e3a145 (diff)
downloadllvm-f62c07f1470a55f57118e5a24334cf97cb749c59.zip
llvm-f62c07f1470a55f57118e5a24334cf97cb749c59.tar.gz
llvm-f62c07f1470a55f57118e5a24334cf97cb749c59.tar.bz2
Split loop exiting edges more aggressively.
PHIElimination splits critical edges when it predicts it can resolve interference and eliminate copies. It doesn't split the edge if the interference wouldn't be resolved anyway because the phi-use register is live in the critical edge anyway. Teach PHIElimination to split loop exiting edges with interference, even if it wouldn't resolve the interference. This removes the necessary copies from the loop, which is still an improvement from injecting the copies into the loop. The test case demonstrates the improvement. Before: LBB0_1: cmpb $0, (%rdx) leaq 1(%rdx), %rdx movl %esi, %eax je LBB0_1 After: LBB0_1: cmpb $0, (%rdx) leaq 1(%rdx), %rdx je LBB0_1 movl %esi, %eax llvm-svn: 160571
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions