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