function-local-metadata.3.5.ll 1.2 KB

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