Fix ValueTracking to conclude that debug intrinsics are safe to
authorChandler Carruth <chandlerc@gmail.com>
Sat, 7 Apr 2012 19:22:18 +0000 (19:22 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 7 Apr 2012 19:22:18 +0000 (19:22 +0000)
commitc0d18b669674d3b173e6a3eca6ada98871bb808f
treeee2db681607bd7924f05ba9fcc92e51ee6878706
parentc77764591b06655bca4313ccfb5b1b773849387e
Fix ValueTracking to conclude that debug intrinsics are safe to
speculate. Without this, loop rotate (among many other places) would
suddenly stop working in the presence of debug info. I found this
looking at loop rotate, and have augmented its tests with a reduction
out of a very hot loop in yacr2 where failing to do this rotation costs
sometimes more than 10% in runtime performance, perturbing numerous
downstream optimizations.

This should have no impact on performance without debug info, but the
change in performance when debug info is enabled can be extreme. As
a consequence (and this how I got to this yak) any profiling of
performance problems should be treated with deep suspicion -- they may
have been wildly innacurate of debug info was enabled for profiling. =/
Just a heads up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154263 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ValueTracking.cpp
test/Transforms/LoopRotate/dbgvalue.ll