[LLVMdev] For clarifying the "<Result>" in Instructions
rnk at mit.edu
Thu Jun 10 09:33:59 PDT 2010
On Thu, Jun 10, 2010 at 9:00 AM, Xiaolong Tang <xiaolong.snake at gmail.com> wrote:
> Hello Reid,
>> Yes, it's an integral part of the Instruction. You can change it by
>> providing a name when you create the instruction.
> Following your hint, can I understand in this following way?
> The name (denoted by "<result>") is actually a referrer to the instruction .
> Consider this instruction:
> %this_addr = alloca %struct.String* ; <%struct.String**> [#uses=4]
> Here "%this_addr" (which is not a argument) is actually a string.
> Am I right?
More or less. %this_addr is a pointer to a stack slot which contains
a pointer to something of type struct.String. The typical pattern for
frontends modelling local variables is to create an alloca for every
local, and store and load from it on assignment.
> And this name is recorded in the symbol table of a module. In case that an
> instruction does not have a name, what then happens? I mean, will the
> symbol table contains an entry for it?
The name is local to the function in which it's defined, not the
module. If you don't give it a name, instructions are given numeric
names starting from 0, ie %0, %1, %2...
More information about the llvm-dev