aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCELFStreamer.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-09-25 05:26:18 +0000
committerOwen Anderson <resistor@mac.com>2010-09-25 05:26:18 +0000
commitb0ba0f4170dcfe1dbce17680c16cffce311e3ad8 (patch)
tree716553f742e1467d69a529722534887435221692 /lib/MC/MCELFStreamer.cpp
parent5981fc67883bfa74ac13625b05442b54ea7f6a1f (diff)
LoadPRE was not properly checking that the load it was PRE'ing post-dominated the block it was being hoisted to.
Splitting critical edges at the merge point only addressed part of the issue; it is also possible for non-post-domination to occur when the path from the load to the merge has branches in it. Unfortunately, full anticipation analysis is time-consuming, so for now approximate it. This is strictly more conservative than real anticipation, so we will miss some cases that real PRE would allow, but we also no longer insert loads into paths where they didn't exist before. :-) This is a very slight net positive on SPEC for me (0.5% on average). Most of the benchmarks are largely unaffected, but when it pays off it pays off decently: 181.mcf improves by 4.5% on my machine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114785 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCELFStreamer.cpp')
0 files changed, 0 insertions, 0 deletions