Re: Extracting operand name and value from GIMPLE assignment statements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ian,

I understand that the variables in SSA are different but as you said
but I hoped to track the variables from the debug info. Is it not
feasible to track the debug info?

I have been able to achieve this kind of functionality with LLVM using
its LLVM IR of the program. The debug info is easily usable and
provides info about the IR statements with respect to the source code.
I want to write the pass in GCC that's why I hoped that I can somehow
achieve it in GCC. Please let me know your thoughts.

Thanks a lot !

Regards,
Sandeep.

On Tue, Dec 10, 2013 at 1:06 AM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
> On Mon, Dec 9, 2013 at 6:35 PM, Sandeep K Chaudhary
> <babbusandy2006@xxxxxxxxx> wrote:
>>
>> I mean that I am interested in knowing the name of variables from the code.
>> For example - if there is a statement in the C code like this -
>>
>> "VAR_A = 100;"
>>
>> I would like to know the name of the variable i.e. "VAR_A" in the GIMPLE
>> statement. Please let me know how this can be achieved.
>
> In general, when in GIMPLE, there is no answer to that question.
> GIMPLE translates your program into SSA form, so every variable is set
> only once.  It follows that every local variable is a temporary
> variable, with no name that is meaningful in the source code.  There
> is debug info to track variable values, but it is tracked separately
> from the GIMPLE statements.
>
> Ian
>
>
>
>
>> On Mon, Dec 9, 2013 at 9:13 PM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
>>>
>>> On Mon, Dec 9, 2013 at 3:05 PM, Sandeep K Chaudhary
>>> <babbusandy2006@xxxxxxxxx> wrote:
>>> >
>>> > I am writing a GCC plugin in which I need to extract the variable name
>>> > and the assigned value from the statements.
>>> >
>>> > I am able to get the three operands from GIMPLE statements like this
>>> >
>>> >         if(is_gimple_assign(stmt)) {
>>> >                 tree lhsop = gimple_assign_lhs(stmt);
>>> >                 tree rhsop1 = gimple_assign_rhs1(stmt);
>>> >                 tree rhsop2 = gimple_assign_rhs2(stmt);
>>> >          }
>>> >
>>> > I want to get the exact variable name from lhsop and value from rhsop1
>>> > (for statements such as
>>> > "var = value;", rhsop2 is 0 for such statements.). Some pointers to
>>> > example code or documentation would be great.
>>>
>>> Can you expand on what you mean by the variable name?  GCC freely
>>> introduces and discards variables in GIMPLE.  Many GIMPLE variables do
>>> not have any meaningful name.
>>>
>>> Ian
>>
>>
>>
>>
>> --
>> Thanks and regards,
>> Sandeep K Chaudhary.



-- 
Thanks and regards,
Sandeep K Chaudhary.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux