1234567891011121314151617181920212223242526272829303132333435 |
- ; RUN: llvm-dis < %s.bc | FileCheck %s
- ; Check that function-local metadata is dropped correctly when it's not a
- ; direct argument to a call instruction.
- ;
- ; Bitcode assembled by llvm-as v3.5.0.
- define void @foo(i32 %v) {
- ; CHECK: entry:
- entry:
- ; CHECK-NEXT: call void @llvm.bar(metadata i32 %v)
- call void @llvm.bar(metadata !{i32 %v})
- ; Note: these supposedly legal instructions fired an assertion in llvm-as:
- ;
- ; Assertion failed: (I != ValueMap.end() && "Value not in slotcalculator!"), function getValueID, file lib/Bitcode/Writer/ValueEnumerator.cpp, line 138.
- ;
- ; So, I didn't test them; it looks like bitcode compatability is irrelevant.
- ; call void @llvm.bar(metadata !{i32 0, i32 %v})
- ; call void @llvm.bar(metadata !{i32 %v, i32 0})
- ; call void @llvm.bar(metadata !{metadata !{}, i32 %v})
- ; call void @llvm.bar(metadata !{i32 %v, metadata !{}})
- ; CHECK-NEXT: call void @llvm.bar(metadata !0)
- ; CHECK-NEXT: call void @llvm.bar(metadata !0)
- call void @llvm.bar(metadata !{i32 %v, i32 %v})
- call void @llvm.bar(metadata !{metadata !{i32 %v}})
- ; CHECK-NEXT: ret void{{$}}
- ret void, !baz !{i32 %v}
- }
- declare void @llvm.bar(metadata)
- ; CHECK: !0 = !{}
|