Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/SafeStack/X86/debug-loc2.ll
Show All 11 Lines | |||||
entry: | entry: | ||||
; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr | ; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr | ||||
%x1 = alloca i32, align 4 | %x1 = alloca i32, align 4 | ||||
%x2 = alloca i32, align 4 | %x2 = alloca i32, align 4 | ||||
%0 = bitcast i32* %x1 to i8*, !dbg !13 | %0 = bitcast i32* %x1 to i8*, !dbg !13 | ||||
%1 = bitcast i32* %x2 to i8*, !dbg !14 | %1 = bitcast i32* %x2 to i8*, !dbg !14 | ||||
; Unhandled dbg.value: expression does not start with OP_DW_deref | ; Unhandled dbg.value: expression does not start with OP_DW_deref | ||||
; CHECK: call void @llvm.dbg.value(metadata ![[EMPTY:.*]], metadata !{{.*}}, metadata !{{.*}}) | ; CHECK: call void @llvm.dbg.value(metadata i32* undef, metadata !{{.*}}, metadata !{{.*}}) | ||||
tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !23), !dbg !16 | tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !23), !dbg !16 | ||||
; Unhandled dbg.value: expression does not start with OP_DW_deref | ; Unhandled dbg.value: expression does not start with OP_DW_deref | ||||
; CHECK: call void @llvm.dbg.value(metadata ![[EMPTY]], metadata !{{.*}}, metadata !{{.*}}) | ; CHECK: call void @llvm.dbg.value(metadata i32* undef, metadata !{{.*}}, metadata !{{.*}}) | ||||
tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !24), !dbg !16 | tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !24), !dbg !16 | ||||
; Supported dbg.value: rewritted based on the [[USP]] value. | ; Supported dbg.value: rewritted based on the [[USP]] value. | ||||
; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref, DW_OP_LLVM_fragment, 0, 4)) | ; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref, DW_OP_LLVM_fragment, 0, 4)) | ||||
tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !25), !dbg !16 | tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !25), !dbg !16 | ||||
; Supported dbg.value: rewritted based on the [[USP]] value. | ; Supported dbg.value: rewritted based on the [[USP]] value. | ||||
; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref)) | ; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref)) | ||||
tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !15), !dbg !16 | tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !15), !dbg !16 | ||||
call void @capture(i32* nonnull %x1), !dbg !17 | call void @capture(i32* nonnull %x1), !dbg !17 | ||||
; An extra non-dbg.value metadata use of %x2. Replaced with an empty metadata. | ; An extra non-dbg.value metadata use of %x2. Replaced with undef. | ||||
; CHECK: call void @llvm.random.metadata.use(metadata ![[EMPTY]]) | ; CHECK: call void @llvm.random.metadata.use(metadata i32* undef | ||||
call void @llvm.random.metadata.use(metadata i32* %x2) | call void @llvm.random.metadata.use(metadata i32* %x2) | ||||
; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X2:.*]], metadata !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_deref)) | ; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X2:.*]], metadata !DIExpression(DW_OP_constu, 8, DW_OP_minus, DW_OP_deref)) | ||||
call void @llvm.dbg.value(metadata i32* %x2, metadata !12, metadata !15), !dbg !18 | call void @llvm.dbg.value(metadata i32* %x2, metadata !12, metadata !15), !dbg !18 | ||||
call void @capture(i32* nonnull %x2), !dbg !19 | call void @capture(i32* nonnull %x2), !dbg !19 | ||||
ret void, !dbg !20 | ret void, !dbg !20 | ||||
} | } | ||||
Show All 18 Lines | |||||
!llvm.dbg.cu = !{!0} | !llvm.dbg.cu = !{!0} | ||||
!llvm.module.flags = !{!3, !4} | !llvm.module.flags = !{!3, !4} | ||||
!llvm.ident = !{!5} | !llvm.ident = !{!5} | ||||
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 (trunk 271022) (llvm/trunk 271027)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) | !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 (trunk 271022) (llvm/trunk 271027)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) | ||||
!1 = !DIFile(filename: "../llvm/2.cc", directory: "/code/build-llvm") | !1 = !DIFile(filename: "../llvm/2.cc", directory: "/code/build-llvm") | ||||
; CHECK-DAG: ![[EMPTY]] = !{} | |||||
!2 = !{} | !2 = !{} | ||||
!3 = !{i32 2, !"Dwarf Version", i32 4} | !3 = !{i32 2, !"Dwarf Version", i32 4} | ||||
!4 = !{i32 2, !"Debug Info Version", i32 3} | !4 = !{i32 2, !"Debug Info Version", i32 3} | ||||
!5 = !{!"clang version 3.9.0 (trunk 271022) (llvm/trunk 271027)"} | !5 = !{!"clang version 3.9.0 (trunk 271022) (llvm/trunk 271027)"} | ||||
!6 = distinct !DISubprogram(name: "f", linkageName: "_Z1fv", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9) | !6 = distinct !DISubprogram(name: "f", linkageName: "_Z1fv", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !9) | ||||
!7 = !DISubroutineType(types: !8) | !7 = !DISubroutineType(types: !8) | ||||
!8 = !{null} | !8 = !{null} | ||||
!9 = !{!10, !12} | !9 = !{!10, !12} | ||||
Show All 21 Lines |