llvm-6502/test/Bitcode/metadata.3.5.ll
Duncan P. N. Exon Smith e39dba9f07 Bitcode: Add METADATA_NODE and METADATA_VALUE
This reflects the typelessness of `Metadata` in the bitcode format,
removing types from all metadata operands.

`METADATA_VALUE` represents a `ValueAsMetadata`, and always has two
fields: the type and the value.

`METADATA_NODE` represents an `MDNode`, and unlike `METADATA_OLD_NODE`,
doesn't store types.  It stores operands at their ID+1 so that `0` can
reference `nullptr` operands.

Part of PR21532.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224073 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-11 23:02:24 +00:00

27 lines
661 B
LLVM

; RUN: llvm-dis < %s.bc | FileCheck %s
; Check that metadata encoded in 3.5 is correctly understood going forward.
;
; Bitcode assembled by llvm-as v3.5.0.
define void @foo(i32 %v) {
; CHECK: entry:
entry:
; CHECK-NEXT: call void @llvm.bar(metadata !0)
call void @llvm.bar(metadata !0)
; CHECK-NEXT: ret void, !baz !1
ret void, !baz !1
}
declare void @llvm.bar(metadata)
@global = global i32 0
; CHECK: !0 = metadata !{metadata !1, metadata !2, i32* @global, null}
; CHECK: !1 = metadata !{metadata !2, null}
; CHECK: !2 = metadata !{}
!0 = metadata !{metadata !1, metadata !2, i32* @global, null}
!1 = metadata !{metadata !2, null}
!2 = metadata !{}