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