IR: Make metadata typeless in assembly
Audit RequiredrL224257

Description

IR: Make metadata typeless in assembly

Now that Metadata is typeless, reflect that in the assembly. These
are the matching assembly changes for the metadata/value split in
r223802.

  • Only use the metadata type when referencing metadata from a call intrinsic -- i.e., only when it's used as a Value.
  • Stop pretending that ValueAsMetadata is wrapped in an MDNode when referencing it from call intrinsics.

So, assembly like this:

define @foo(i32 %v) {
  call void @llvm.foo(metadata !{i32 %v}, metadata !0)
  call void @llvm.foo(metadata !{i32 7}, metadata !0)
  call void @llvm.foo(metadata !1, metadata !0)
  call void @llvm.foo(metadata !3, metadata !0)
  call void @llvm.foo(metadata !{metadata !3}, metadata !0)
  ret void, !bar !2
}
!0 = metadata !{metadata !2}
!1 = metadata !{i32* @global}
!2 = metadata !{metadata !3}
!3 = metadata !{}

turns into this:

define @foo(i32 %v) {
  call void @llvm.foo(metadata i32 %v, metadata !0)
  call void @llvm.foo(metadata i32 7, metadata !0)
  call void @llvm.foo(metadata i32* @global, metadata !0)
  call void @llvm.foo(metadata !3, metadata !0)
  call void @llvm.foo(metadata !{!3}, metadata !0)
  ret void, !bar !2
}
!0 = !{!2}
!1 = !{i32* @global}
!2 = !{!3}
!3 = !{}

I wrote an upgrade script that handled almost all of the tests in llvm
and many of the tests in cfe (even handling many CHECK lines). I've
attached it (or will attach it in a moment if you're speedy) to PR21532
to help everyone update their out-of-tree testcases.

This is part of PR21532.

Details

Auditors
dsanders
Committed
dexonsmithDec 15 2014, 11:07 AM
Parents
rL224256: Warn when attribute 'optnone' conflicts with attributes on a
Branches
Unknown
Tags
Unknown