forked from OSchip/llvm-project
[DebugInfo] Maintain DI for sunken bitcasts
When a bitcast is being sunk in -codegenprepare pass, its DI wasn't copied over to the newly created instruction. This patch fixes that bug. Patch by Kareem Ergawy! Differential Revision: https://reviews.llvm.org/D47282 llvm-svn: 333133
This commit is contained in:
parent
eadce02741
commit
9374c0432b
|
@ -1050,6 +1050,7 @@ static bool SinkCast(CastInst *CI) {
|
|||
assert(InsertPt != UserBB->end());
|
||||
InsertedCast = CastInst::Create(CI->getOpcode(), CI->getOperand(0),
|
||||
CI->getType(), "", &*InsertPt);
|
||||
InsertedCast->setDebugLoc(CI->getDebugLoc());
|
||||
}
|
||||
|
||||
// Replace a use of the cast with a use of the new cast.
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
; RUN: opt -S -debugify -codegenprepare < %s | FileCheck %s
|
||||
|
||||
target datalayout =
|
||||
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
declare void @foo(i32)
|
||||
|
||||
declare void @slowpath(i32, i32*)
|
||||
|
||||
; Is DI maintained after sinking bitcast?
|
||||
define void @test(i1 %cond, i64* %base) {
|
||||
; CHECK-LABEL: @test
|
||||
entry:
|
||||
%addr = getelementptr inbounds i64, i64* %base, i64 5
|
||||
%casted = bitcast i64* %addr to i32*
|
||||
br i1 %cond, label %if.then, label %fallthrough
|
||||
|
||||
if.then:
|
||||
; CHECK-LABEL: if.then:
|
||||
; CHECK: bitcast i64* %addr to i32*, !dbg ![[castLoc:[0-9]+]]
|
||||
%v1 = load i32, i32* %casted, align 4
|
||||
call void @foo(i32 %v1)
|
||||
%cmp = icmp eq i32 %v1, 0
|
||||
br i1 %cmp, label %rare.1, label %fallthrough
|
||||
|
||||
fallthrough:
|
||||
ret void
|
||||
|
||||
rare.1:
|
||||
; CHECK-LABEL: rare.1:
|
||||
; CHECK: bitcast i64* %addr to i32*, !dbg ![[castLoc]]
|
||||
call void @slowpath(i32 %v1, i32* %casted) ;; NOT COLD
|
||||
br label %fallthrough
|
||||
}
|
||||
|
||||
; CHECK: ![[castLoc]] = !DILocation(line: 2
|
Loading…
Reference in New Issue