Compute all gimple statements in which a var is used

Jeff Law law@redhat.com
Tue Apr 5 15:03:00 GMT 2016


On 04/05/2016 08:59 AM, Cristina Georgiana Opriceana wrote:
> On Mon, Mar 28, 2016 at 10:55 PM, Richard Biener
> <richard.guenther@gmail.com> wrote:
>> On March 28, 2016 7:23:26 PM GMT+02:00, Cristina Georgiana Opriceana <cristina.opriceana@gmail.com> wrote:
>>> Hello,
>>>
>>> In order to compute all the statements where a variable is used, is it
>>> enough to rely on the SSA analysis? I tried to do something like this:
>>>
>>> FOR_EACH_LOCAL_DECL (cfun, i, var) {
>>>         for (unsigned int i = 0; i < num_ssa_names; i++) {
>>>             if (ssa_name(i) && SSA_NAME_VAR (ssa_name(i)) == var) {
>>>                 tree ssa_node = ssa_name(i);
>>>                 FOR_EACH_IMM_USE_FAST (use_op, imm_iter, ssa_node) {
>>>                     gimple * use_stmt = USE_STMT(use_op);
>>>                     ...
>>>                 }
>>
>> No, you'll miss variables not in SSA form.
>>
>
> Could you give me more details on this or maybe some reading material?
> As far as I understand, all the VAR_DECL, PARAM_DECL and RESULT_DECL
> will be in SSA form.
Only non-addressable _DECL nodes will be in SSA form.

ie, arrays, or objects which have had their address taken will not be in 
SSA form.

jeff



More information about the Gcc mailing list