[cfe-dev] [LLVMdev] [RFC] Module Flags Metadata

James Molloy james.molloy at arm.com
Fri Jan 27 00:35:36 PST 2012

Just to add to the renderscript example, the ARM ABI requires a build
attribute to be emitted giving the size of wchar_t for library selection.
Having a way to pass that from the frontend to backend would be absolutely
ideal, and module level metadata/attributes seem fit for that purpose. 

-----Original Message-----
From: cfe-dev-bounces at cs.uiuc.edu [mailto:cfe-dev-bounces at cs.uiuc.edu] On
Behalf Of Bill Wendling
Sent: 27 January 2012 05:59
To: Nick Lewycky
Cc: cfe-dev at cs.uiuc.edu Developers; llvmdev at cs.uiuc.edu Mailing List
Subject: Re: [cfe-dev] [LLVMdev] [RFC] Module Flags Metadata

On Jan 24, 2012, at 9:11 PM, Nick Lewycky wrote:

> Yeah, I can't think of any use for something that would pull out
NamedMDNodes for no reason. That said, if you want this to work, please
audit the module cloner at the very least (it should copy the NamedMDNodes).
> But what would you do with llvm-extract?

llvm-extract already copies over named metadata. 

> Should it keep a copy of every global metadata node that references a

What do you mean by this? MDNodes cannot have references to global values.
Or do you mean something like:

!0 = metadata !{ metadata !"some_function" }

> The same applies to bugpoint.


> What if the NamedMDNode is used in codegen, and removing it removes the

Then it's a bug and should be fixed.

> Simply put, I don't like this design, but my objections are weak and I
lack an alternative plan.


The only other design I can think of (and have thought of) is "module
attributes" as an IR-level feature. They would be similar to function
attributes. But if we can get away without creating a new IR feature, all
the better!

> On the other side, there is a precedent for doing this. For example,
RenderScript uses metadata to carry reflection information in the .bc files;
their pipeline has that nothing else will touch the .bc files from the time
their SDK produces it to the time the phone consumes it, so they assume the
metadata wil still be there. RS would break if NamedMDNodes were stripped
> It seems to make sense to treat NamedMDNodes not unlike GlobalVariables in
most regards, but the MDNodes they contain may change as much as any mdnode.


cfe-dev mailing list
cfe-dev at cs.uiuc.edu

More information about the cfe-dev mailing list