David Blaikie 42043c423f Reapply "Verifier: Add check for DICompositeType elements being null"
This remove some erroneous debug info from tests that should address the
test failures that showed up when the this was previously committed.

This reverts commit 6716ce8b641f0e42e2343e1694ee578b027be0c4.
2025-01-23 22:29:30 +00:00

117 lines
5.9 KiB
LLVM

; Test set representation in DWARF debug info:
; RUN: llc -debugger-tune=gdb -dwarf-version=4 -filetype=obj -o %t.o < %s
; RUN: llvm-dwarfdump -debug-info %t.o | FileCheck %s --check-prefix=CHECK
; ModuleID = 'Main.mb'
source_filename = "../src/Main.m3"
target datalayout = "e-m:e-p:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
%M_Const_struct = type { [7 x i8], [1 x i8], [4 x i8], [4 x i8], ptr, ptr, ptr, ptr, [8 x i8], [14 x i8], [2 x i8] }
%M_Main_struct = type { ptr, [32 x i8], ptr, [24 x i8], ptr, [8 x i8], ptr, i64, [8 x i8], ptr, ptr, [8 x i8], ptr, [8 x i8] }
@M_Const = internal constant %M_Const_struct { [7 x i8] c"Main_M3", [1 x i8] zeroinitializer, [4 x i8] c"Test", [4 x i8] zeroinitializer, ptr @Main_M3, ptr @M_Const, ptr @Main__Test, ptr getelementptr inbounds (i8, ptr @M_Const, i64 8), [8 x i8] zeroinitializer, [14 x i8] c"../src/Main.m3", [2 x i8] zeroinitializer }, align 8
@M_Main = internal global %M_Main_struct { ptr getelementptr inbounds (i8, ptr @M_Const, i64 56), [32 x i8] zeroinitializer, ptr getelementptr inbounds (i8, ptr @M_Const, i64 16), [24 x i8] zeroinitializer, ptr getelementptr inbounds (i8, ptr @M_Main, i64 104), [8 x i8] zeroinitializer, ptr @Main_M3, i64 3, [8 x i8] zeroinitializer, ptr @Main_I3, ptr getelementptr inbounds (i8, ptr @M_Main, i64 128), [8 x i8] zeroinitializer, ptr @RTHooks_I3, [8 x i8] zeroinitializer }, align 8
@m3_jmpbuf_size = external global i64, align 8
declare ptr @Main_I3()
declare ptr @RTHooks_I3()
; Function Attrs: uwtable
define void @Main__Test() #0 !dbg !5 {
entry:
%as = alloca i64, align 8
%bs = alloca i64, align 8
br label %second, !dbg !21
second: ; preds = %entry
call void @llvm.dbg.declare(metadata ptr %as, metadata !22, metadata !DIExpression()), !dbg !25
call void @llvm.dbg.declare(metadata ptr %bs, metadata !26, metadata !DIExpression()), !dbg !25
store i64 36028797018972298, ptr %as, align 8, !dbg !28
store i64 197, ptr %bs, align 8, !dbg !29
ret void, !dbg !21
}
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
declare ptr @alloca()
; Function Attrs: uwtable
define ptr @Main_M3(i64 %mode) #0 !dbg !30 {
entry:
%mode1 = alloca i64, align 8
store i64 %mode, ptr %mode1, align 8
br label %second, !dbg !36
second: ; preds = %entry
call void @llvm.dbg.declare(metadata ptr %mode1, metadata !37, metadata !DIExpression()), !dbg !38
%v.3 = load i64, ptr %mode1, align 8, !dbg !38
%icmp = icmp eq i64 %v.3, 0, !dbg !38
br i1 %icmp, label %if_1, label %else_1, !dbg !38
else_1: ; preds = %second
call void @Main__Test(), !dbg !36
br label %if_1, !dbg !36
if_1: ; preds = %else_1, %second
ret ptr @M_Main, !dbg !36
}
attributes #0 = { uwtable "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nofree nosync nounwind readnone speculatable willreturn }
!llvm.ident = !{!0}
!llvm.dbg.cu = !{!1}
!llvm.module.flags = !{!18, !19, !20}
!0 = !{!"versions- cm3: d5.10.0 llvm: 9.0"}
!1 = distinct !DICompileUnit(language: DW_LANG_Modula3, file: !2, producer: "cm3", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3)
!2 = !DIFile(filename: "Main.m3", directory: "/home/cm3/settest/src")
!3 = !{!4}
!4 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Enum", scope: !5, file: !2, line: 11, size: 8, align: 8, elements: !9)
!5 = distinct !DISubprogram(name: "Test", linkageName: "Main__Test", scope: !2, file: !2, line: 11, type: !6, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !1, retainedNodes: !8)
!6 = !DISubroutineType(types: !7)
!7 = !{null}
!8 = !{}
!9 = !{!10, !11, !12, !13, !14, !15, !16, !17}
!10 = !DIEnumerator(name: "alpha", value: 0)
!11 = !DIEnumerator(name: "beta", value: 1)
!12 = !DIEnumerator(name: "gamma", value: 2)
!13 = !DIEnumerator(name: "delta", value: 3)
!14 = !DIEnumerator(name: "epsilon", value: 4)
!15 = !DIEnumerator(name: "theta", value: 5)
!16 = !DIEnumerator(name: "psi", value: 6)
!17 = !DIEnumerator(name: "zeta", value: 7)
!18 = !{i64 2, !"Dwarf Version", i64 4}
!19 = !{i64 2, !"Debug Info Version", i64 3}
!20 = !{i64 2, !"wchar_size", i64 2}
!21 = !DILocation(line: 20, scope: !5)
!22 = !DILocalVariable(name: "as", scope: !5, file: !2, line: 11, type: !23)
!23 = !DIDerivedType(tag: DW_TAG_set_type, name: "SS", scope: !2, file: !2, line: 11, baseType: !24, size: 64, align: 64)
!24 = !DIBasicType(name: "SR", size: 8, encoding: DW_ATE_signed)
; CHECK: DW_TAG_set_type
; CHECK: DW_AT_type{{.*}}"SR"
; CHECK: DW_AT_name ("SS")
; CHECK: DW_AT_byte_size (0x08)
!25 = !DILocation(line: 11, scope: !5)
!26 = !DILocalVariable(name: "bs", scope: !5, file: !2, line: 11, type: !27)
!27 = !DIDerivedType(tag: DW_TAG_set_type, name: "ST", scope: !2, file: !2, line: 11, baseType: !4, size: 64, align: 64)
; CHECK: DW_TAG_set_type
; CHECK: DW_AT_type{{.*}}"Enum"
; CHECK: DW_AT_name ("ST")
; CHECK: DW_AT_byte_size (0x08)
!28 = !DILocation(line: 17, scope: !5)
!29 = !DILocation(line: 18, scope: !5)
!30 = distinct !DISubprogram(name: "Main_M3", linkageName: "Main_M3", scope: !2, file: !2, line: 22, type: !31, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !1, retainedNodes: !8)
!31 = !DISubroutineType(types: !32)
!32 = !{!33, !35}
!33 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "ADDR", baseType: !34, size: 64, align: 64)
!34 = !DICompositeType(tag: DW_TAG_class_type, name: "ADDR__HeapObject", scope: !5, file: !2, line: 22, size: 64, align: 64, identifier: "AJWxb1")
!35 = !DIBasicType(name: "INTEGER", size: 64, encoding: DW_ATE_signed)
!36 = !DILocation(line: 23, scope: !30)
!37 = !DILocalVariable(name: "mode", arg: 1, scope: !30, file: !2, line: 22, type: !35)
!38 = !DILocation(line: 22, scope: !30)