[llvm-dev] debug info "ref" parameter
Carlo Kok via llvm-dev
llvm-dev at lists.llvm.org
Tue Dec 20 22:43:03 PST 2016
I want to emit a ref parameter (ie i32*) as if it was i32 in debug info,
however when I emit it with llvm.debug.declare referring to the
parameter register it shows the actual pointer value of the debug
register, instead of the value it refers to. This works fine if the
llvm.debug.declare points to a local alloca, how can this be and how can
I make it work so both show the integer value directly?
define void @test1(i32) #0 !dbg !5 {
BasicBlock0:
%1 = alloca i32
store i32 %0, i32* %1
call void @llvm.dbg.declare(metadata i32* %1, metadata !20, metadata
!22), !dbg !23
// This one is fine
%2 = load i32, i32* %1, !dbg !24
%3 = add i32 %2, 1, !dbg !24
store i32 %3, i32* %1, !dbg !24
ret void, !dbg !25
}
define void @ms_t1a_issuedebugouttest.__Global4_MEH2n_o_i32(i32*) #0
!dbg !9 {
BasicBlock3:
call void @llvm.dbg.declare(metadata i32* %0, metadata !26, metadata
!22), !dbg !28
%1 = load i32, i32* %0, !dbg !29
%2 = add i32 %1, 1, !dbg !29
store i32 %2, i32* %0, !dbg !29
ret void, !dbg !30
}
!22 = !DIExpression()
!20 = !DILocalVariable(name: "i", scope: !21, file: !6, line: 11, type: !13)
!26 = !DILocalVariable(name: "i", scope: !27, file: !6, line: 15, type: !13)
!13 = !DIDerivedType(tag: DW_TAG_typedef, name: "Integer", scope: !2,
file: !3, baseType: !14)
!14 = !DIBasicType(name: "Integer", size: 32, align: 32, encoding:
DW_ATE_signed)
--
Carlo Kok
RemObjects Software
More information about the llvm-dev
mailing list