mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 12:02:58 +02:00
[DebugInfo][LoopVectorize] Preserve DL in generated phi instruction
When creating `phi` instructions to resume at the scalar part of the loop, copy the DebugLoc from the original phi over to the new one. Differential Revision: https://reviews.llvm.org/D48769 llvm-svn: 336256
This commit is contained in:
parent
72ae081881
commit
6f5c420176
@ -2912,6 +2912,8 @@ BasicBlock *InnerLoopVectorizer::createVectorizedLoopSkeleton() {
|
||||
// Create phi nodes to merge from the backedge-taken check block.
|
||||
PHINode *BCResumeVal = PHINode::Create(
|
||||
OrigPhi->getType(), 3, "bc.resume.val", ScalarPH->getTerminator());
|
||||
// Copy original phi DL over to the new one.
|
||||
BCResumeVal->setDebugLoc(OrigPhi->getDebugLoc());
|
||||
Value *&EndValue = IVEndValues[OrigPhi];
|
||||
if (OrigPhi == OldInduction) {
|
||||
// We know what the end value is.
|
||||
|
@ -1,10 +1,14 @@
|
||||
; RUN: opt < %s -loop-vectorize -S 2>&1 | FileCheck %s
|
||||
; RUN: opt < %s -debugify -loop-vectorize -S | FileCheck %s -check-prefix DEBUGLOC
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
; This test makes sure we don't duplicate the loop vectorizer's metadata
|
||||
; while marking them as already vectorized (by setting width = 1), even
|
||||
; at lower optimization levels, where no extra cleanup is done
|
||||
|
||||
; DEBUGLOC-LABEL: define void @_Z3fooPf(
|
||||
; Check that the phi to resume the scalar part of the loop
|
||||
; has Debug Location.
|
||||
define void @_Z3fooPf(float* %a) {
|
||||
entry:
|
||||
br label %for.body
|
||||
@ -19,6 +23,11 @@ for.body: ; preds = %for.body, %entry
|
||||
%exitcond = icmp eq i64 %indvars.iv.next, 1024
|
||||
br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !0
|
||||
|
||||
; DEBUGLOC: scalar.ph:
|
||||
; DEBUGLOC-NEXT: %bc.resume.val = phi {{.*}} !dbg ![[DbgLoc:[0-9]+]]
|
||||
;
|
||||
; DEBUGLOC: ![[DbgLoc]] = !DILocation(line: 2
|
||||
|
||||
for.end: ; preds = %for.body
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user