xref: /aosp_15_r20/external/llvm/test/Bitcode/function-local-metadata.3.5.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-dis < %s.bc | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Check that function-local metadata is dropped correctly when it's not a
4*9880d681SAndroid Build Coastguard Worker; direct argument to a call instruction.
5*9880d681SAndroid Build Coastguard Worker;
6*9880d681SAndroid Build Coastguard Worker; Bitcode assembled by llvm-as v3.5.0.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 %v) {
9*9880d681SAndroid Build Coastguard Worker; CHECK: entry:
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.bar(metadata i32 %v)
12*9880d681SAndroid Build Coastguard Worker  call void @llvm.bar(metadata !{i32 %v})
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker; Note: these supposedly legal instructions fired an assertion in llvm-as:
15*9880d681SAndroid Build Coastguard Worker;
16*9880d681SAndroid Build Coastguard Worker; Assertion failed: (I != ValueMap.end() && "Value not in slotcalculator!"), function getValueID, file lib/Bitcode/Writer/ValueEnumerator.cpp, line 138.
17*9880d681SAndroid Build Coastguard Worker;
18*9880d681SAndroid Build Coastguard Worker; So, I didn't test them; it looks like bitcode compatability is irrelevant.
19*9880d681SAndroid Build Coastguard Worker  ; call void @llvm.bar(metadata !{i32 0, i32 %v})
20*9880d681SAndroid Build Coastguard Worker  ; call void @llvm.bar(metadata !{i32 %v, i32 0})
21*9880d681SAndroid Build Coastguard Worker  ; call void @llvm.bar(metadata !{metadata !{}, i32 %v})
22*9880d681SAndroid Build Coastguard Worker  ; call void @llvm.bar(metadata !{i32 %v, metadata !{}})
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.bar(metadata !0)
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.bar(metadata !0)
26*9880d681SAndroid Build Coastguard Worker  call void @llvm.bar(metadata !{i32 %v, i32 %v})
27*9880d681SAndroid Build Coastguard Worker  call void @llvm.bar(metadata !{metadata !{i32 %v}})
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret void{{$}}
30*9880d681SAndroid Build Coastguard Worker  ret void, !baz !{i32 %v}
31*9880d681SAndroid Build Coastguard Worker}
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.bar(metadata)
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker; CHECK: !0 = !{}
36