xref: /aosp_15_r20/external/llvm/test/DebugInfo/ARM/selectiondag-deadcode.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -filetype=asm < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget triple = "thumbv7-apple-ios7.0.0"
3*9880d681SAndroid Build Coastguard Worker%class.Matrix3.0.6.10 = type { [9 x float] }
4*9880d681SAndroid Build Coastguard Workerdefine arm_aapcscc void @_Z9GetMatrixv(%class.Matrix3.0.6.10* noalias nocapture sret %agg.result) #0 !dbg !39 {
5*9880d681SAndroid Build Coastguard Worker  br i1 fcmp oeq (float fadd (float fadd (float fmul (float undef, float undef), float fmul (float undef, float undef)), float fmul (float undef, float undef)), float 0.000000e+00), label %_ZN7Vector39NormalizeEv.exit, label %1
6*9880d681SAndroid Build Coastguard Worker  tail call arm_aapcscc void @_ZL4Sqrtd() #3
7*9880d681SAndroid Build Coastguard Worker  br label %_ZN7Vector39NormalizeEv.exit
8*9880d681SAndroid Build Coastguard Worker_ZN7Vector39NormalizeEv.exit:                     ; preds = %1, %0
9*9880d681SAndroid Build Coastguard Worker  ; rdar://problem/15094721.
10*9880d681SAndroid Build Coastguard Worker  ;
11*9880d681SAndroid Build Coastguard Worker  ; When this (partially) dead use gets eliminated (and thus the def
12*9880d681SAndroid Build Coastguard Worker  ; of the vreg holding %agg.result) the dbg_value becomes dangling
13*9880d681SAndroid Build Coastguard Worker  ; and SelectionDAGISel crashes.  It should definitely not
14*9880d681SAndroid Build Coastguard Worker  ; crash. Drop the dbg_value instead.
15*9880d681SAndroid Build Coastguard Worker  ; CHECK-NOT: "matrix"
16*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.dbg.declare(metadata %class.Matrix3.0.6.10* %agg.result, metadata !45, metadata !DIExpression(DW_OP_deref))
17*9880d681SAndroid Build Coastguard Worker  %2 = getelementptr inbounds %class.Matrix3.0.6.10, %class.Matrix3.0.6.10* %agg.result, i32 0, i32 0, i32 8
18*9880d681SAndroid Build Coastguard Worker  ret void
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.declare(metadata, metadata, metadata) #1
21*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcscc void @_ZL4Sqrtd() #2
22*9880d681SAndroid Build Coastguard Worker!4 = !DICompositeType(tag: DW_TAG_class_type, name: "Matrix3", line: 20, size: 288, align: 32, file: !5, identifier: "_ZTS7Matrix3")
23*9880d681SAndroid Build Coastguard Worker!5 = !DIFile(filename: "test.ii", directory: "/Volumes/Data/radar/15094721")
24*9880d681SAndroid Build Coastguard Worker!39 = distinct !DISubprogram(name: "GetMatrix", linkageName: "_Z9GetMatrixv", line: 32, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 32, file: !5, scope: !40, type: !41)
25*9880d681SAndroid Build Coastguard Worker!40 = !DIFile(filename: "test.ii", directory: "/Volumes/Data/radar/15094721")
26*9880d681SAndroid Build Coastguard Worker!41 = !DISubroutineType(types: null)
27*9880d681SAndroid Build Coastguard Worker!45 = !DILocalVariable(name: "matrix", line: 35, scope: !39, file: !40, type: !4)
28