[LLVMdev] Metadata

David Greene dag at cray.com
Thu Feb 11 14:54:51 PST 2010


On Thursday 11 February 2010 16:31:16 Garrison Venn wrote:
> I don't think the lang ref metadata grammar section
> (http://llvm.org/docs/LangRef.html#metadata) has been fully updated with
> how !dbg metadata is used in
> http://llvm.org/docs/SourceLevelDebugging.html. At least to me it is not
> clear. In my mind I translate the phrase "LLVM IR allows metadata to be
> attached to instructions " into a grammar depicted in
> SourceLevelDebugging.html. I was going to ask about this, but I'll let you
> instead. :-)

But that's not even a grammar.

I simply want to know what the syntax is for specifying metadata on an 
instruction.  From what I gather, it is this:

<instruction> ',' <MetadataSpec>

<MetadataSpec>: '!' <ID> '!' <ID>

<ID>: [a-zA-Z_][a-zA-Z0-9_]*

And the second <ID> needs to be the name of a metadata node:

'!' <ID> '=' METADATA '!' '{' <MDNodeList> '}'

And MDNodeList contains a list of stuff like integer values, strings and so 
on.

Is that basically right?  So I would have to do this:

	%r8 = load <2 x double>* %r6, align 16, !nontemporal !0
[...]
!0 = metadata !{ i32 1 }

I would really rather not have to specify the entirely redundant !0.  Just the 
fact that the instruction has metadata with index/name "nontemporal" should
be enough.

                                                    -Dave




More information about the llvm-dev mailing list