Files
clang-p2996/llvm/test/Transforms/EarlyCSE/debuginfo-dce.ll
Nikita Popov 3c514d31d7 [EarlyCSE] Update tests to use opaque pointers (NFC)
Update the EarlyCSE tests to use opaque pointers.

Worth noting that this leaves some bitcast ptr to ptr instructions
in the input IR behind which are no longer necessary. This is
because these use numbered instructions, so it's hard to drop them
in an automated fashion (as it would require renumbering all other
instructions as well). I'm leaving that as a problem for another day.

The test updates have been performed using
https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34.

Differential Revision: https://reviews.llvm.org/D127278
2022-06-10 09:53:35 +02:00

65 lines
2.7 KiB
LLVM

; RUN: opt -early-cse -earlycse-debug-hash -S %s -o - | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; Function Attrs: nounwind uwtable
define i32 @foo() !dbg !6 {
entry:
%0 = call i64 @llvm.ctpop.i64(i64 0), !dbg !14
%1 = inttoptr i64 %0 to ptr, !dbg !14
call void @llvm.dbg.value(metadata ptr %1, i64 0, metadata !11, metadata !13), !dbg !14
; CHECK: call void @llvm.dbg.value(metadata i64 0, metadata !11, metadata !DIExpression()), !dbg !13
%call = call ptr (...) @baa(), !dbg !15
%2 = ptrtoint ptr %call to i64, !dbg !16
%3 = inttoptr i64 %2 to ptr, !dbg !16
call void @llvm.dbg.value(metadata ptr %3, i64 0, metadata !11, metadata !13), !dbg !14
%tobool = icmp ne ptr %3, null, !dbg !17
br i1 %tobool, label %if.end, label %if.then, !dbg !19
if.then: ; preds = %entry
br label %cleanup, !dbg !20
if.end: ; preds = %entry
%4 = ptrtoint ptr %3 to i32, !dbg !21
br label %cleanup, !dbg !22
cleanup: ; preds = %if.end, %if.then
%retval.0 = phi i32 [ %4, %if.end ], [ 0, %if.then ]
ret i32 %retval.0, !dbg !22
}
declare ptr @baa(...)
; Function Attrs: nounwind readnone
declare i64 @llvm.ctpop.i64(i64)
; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4}
!llvm.ident = !{!5}
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 6.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "test.c", directory: "/dir")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
!5 = !{!"clang version 6.0.0"}
!6 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !7, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, retainedNodes: !10)
!7 = !DISubroutineType(types: !8)
!8 = !{!9}
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!10 = !{!11}
!11 = !DILocalVariable(name: "ptr", scope: !6, file: !1, line: 4, type: !12)
!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64)
!13 = !DIExpression()
!14 = !DILocation(line: 4, column: 8, scope: !6)
!15 = !DILocation(line: 5, column: 9, scope: !6)
!16 = !DILocation(line: 5, column: 7, scope: !6)
!17 = !DILocation(line: 7, column: 7, scope: !18)
!18 = distinct !DILexicalBlock(scope: !6, file: !1, line: 7, column: 6)
!19 = !DILocation(line: 7, column: 6, scope: !6)
!20 = !DILocation(line: 8, column: 5, scope: !18)
!21 = !DILocation(line: 10, column: 10, scope: !6)
!22 = !DILocation(line: 11, column: 1, scope: !6)