diff options
author | Zhaoshi Zheng <zhaoshiz@coduaurora.org> | 2017-12-26 23:31:21 +0000 |
---|---|---|
committer | Zhaoshi Zheng <zhaoshiz@coduaurora.org> | 2017-12-26 23:31:21 +0000 |
commit | 8af1e1cb784ae2a94775fcbd04ad283f8702606e (patch) | |
tree | 4f5ce16b0656adb5cfbd2b4f2c15d567dcf6d902 /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | |
parent | b17c204cc010b821659e500ceb9a2118a90b2b2e (diff) | |
download | bcm5719-llvm-8af1e1cb784ae2a94775fcbd04ad283f8702606e.tar.gz bcm5719-llvm-8af1e1cb784ae2a94775fcbd04ad283f8702606e.zip |
[Unroll][DebugInfo] Propagate loop body's debug location to epilog preheader
NewExit and epilog PreHeader should has the same debug loc as the original loop
body, instead of original loop exit.
llvm-svn: 321465
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp index efff06f79cb..e00541d3c81 100644 --- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp @@ -648,8 +648,13 @@ bool llvm::UnrollRuntimeLoopRemainder(Loop *L, unsigned Count, SmallVector<BasicBlock*, 4> Preds(predecessors(LatchExit)); NewExit = SplitBlockPredecessors(LatchExit, Preds, ".unr-lcssa", DT, LI, PreserveLCSSA); + // NewExit gets its DebugLoc from LatchExit, which is not part of the + // original Loop. + // Fix this by setting Loop's DebugLoc to NewExit. + auto *NewExitTerminator = NewExit->getTerminator(); + NewExitTerminator->setDebugLoc(Header->getTerminator()->getDebugLoc()); // Split NewExit to insert epilog remainder loop. - EpilogPreHeader = SplitBlock(NewExit, NewExit->getTerminator(), DT, LI); + EpilogPreHeader = SplitBlock(NewExit, NewExitTerminator, DT, LI); EpilogPreHeader->setName(Header->getName() + ".epil.preheader"); } else { // If prolog remainder |