On June 15, 2020 6:58:27 PM GMT+02:00, Shuai Wang <wangshuai...@gmail.com> 
wrote:
>Thank you very much for your prompt response, Rchard. Sorry I was kinda
>"learning by doing". I am familiar with LLVM stuff but newbie to GCC
>specifications.
>
>Just want to make sure I got it right; _17 and _16 in the IR code are
>SSA
>variables. They are initialized for once and used once. Could you
>please
>shed some light on where "non-ssa name" comes in this scenario, and how
>exactly can I get  _17 = (signed char *) _16 printed out? Thank you
>very
>much.
>
>Best,
>Shuai
>
>On Tue, Jun 16, 2020 at 12:52 AM Richard Biener
><richard.guent...@gmail.com>
>wrote:
>
>> On June 15, 2020 6:31:38 PM GMT+02:00, Shuai Wang via Gcc
><gcc@gcc.gnu.org>
>> wrote:
>> >Hello,
>> >
>> >Suppose given the following SSA statement generated by the `sanopt`
>> >pass:
>> >
>> >   _17 = (signed char *) _16;
>> >   _18 = *_17;
>> >
>> >I am using the following code to identify that _17 depends on _16:
>> >
>> >// def_stmt refers to _18 = &_17;
>> >for (unsigned i = 1; i < gimple_num_ops(def_stmt); i++) {
>> >         op1 = gimple_assign_rhs1(def_stmt);

op1 is not an SSA name here. 

>> >         if (is_gimple_addressable(op1))

That predicate does not make sense on SSA names

 {
>> >              gimple* def_stmt = SSA_NAME_DEF_STMT(op1);
>> >          print_gimple_stmt(stderr, def_stmt, 0, TDF_SLIM); // crash
>at
>> >this point
>> >         }
>> >
>> >It crashes with the following call stack:
>> >
>> >0xb5cd5f crash_signal
>> >        ../../gcc-10.1.0/gcc/toplev.c:328
>> >0x1452134 pp_format(pretty_printer*, text_info*)
>> >        ../../gcc-10.1.0/gcc/pretty-print.c:1828
>> >0x14533e4 pp_printf(pretty_printer*, char const*, ...)
>> >        ../../gcc-10.1.0/gcc/pretty-print.c:1773
>> >0x8dcc81 print_gimple_stmt(_IO_FILE*, gimple*, int, dump_flag)
>> >        ../../gcc-10.1.0/gcc/gimple-pretty-print.c:157
>> >
>> >I tried hard but just cannot understand why this would crash.
>Indeed,
>> >this
>> >code works pretty well when printing out other dependency
>statements,
>> >but
>> >just gets stuck in front of pointer dereference like _18 = *_17.
>> >
>> >Any suggestion would be appreciated. Thank you!
>>
>> Build your compiler with - - enable-checking and you'll figure you
>> reference SSA_NAME_DEF_STMT of a NON-SSA_NAME. I suggest you learn to
>use a
>> debugger.
>>
>> Richard.
>>
>> >Best,
>> >Shuai
>>
>>

Reply via email to