2013/5/17 Jakub Jelinek <ja...@redhat.com>: > On Fri, May 17, 2013 at 04:03:25PM +0400, Ilya Enkovich wrote: >> Here is GIMPLE after my instrumentation. Instrumentation >> statements/expressions are marked with +++ >> >> test () >> { >> +++<unnamed type> __tmp.0;+++ >> char * name; >> int D.1761; >> int _5; >> >> <bb 10>: >> +++__tmp.0_9 = __length_1;+++ >> +++__tmp.0_8(ab) = __zero_length;+++ > > I think this is wrong, you are using the same underlying > var __tmp.0 for two values concurrently when at least one of them > is (ab). If _9 is not (ab), why don't you use just _9 (anon SSA_NAME), > or a different underlying decl for that?
Actually when I create this SSA_NAME I do not know all its usages (and therefore do not know if it is abnormal). The only reason to use underlying var for SSA names was opportunity to easily find them in GIMPLE dump by name. I still do not fully understand what restrictions are implied by abnormal edges. Will it be OK to use anon SSA_NAMES here for all new values? Ilya > > Jakub