diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2012-04-07 19:22:18 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2012-04-07 19:22:18 +0000 |
commit | c0d18b669674d3b173e6a3eca6ada98871bb808f (patch) | |
tree | ee2db681607bd7924f05ba9fcc92e51ee6878706 /lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | c77764591b06655bca4313ccfb5b1b773849387e (diff) |
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
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
0 files changed, 0 insertions, 0 deletions