On Wed, Dec 21, 2016 at 7:43 PM, Aldy Hernandez <al...@redhat.com> wrote: > On 12/20/2016 09:16 AM, Richard Biener wrote: > >> You do not handle memory or calls conservatively which means the existing >> testcase only needs some obfuscation to become a problem again. To fix >> that before /* Check that any SSA names used to define NAME is also fully >> defined. */ bail out conservatively, like >> >> if (! is_gimple_assign (def) >> || gimple_assign_single_p (def)) >> return true; > > > I understand the !is_gimple_assign, which will skip over GIMPLE_CALLs > setting a value, but the "gimple_assign_single_p(def) == true"?? > > Won't this last one bail on things like e.3_7 = e, or x_77 = y_88? Don't we > want to follow up the def chain precisely on these?
For the first (= e) we can't, for the second, yes, the predicate is too strict. But it's conservative ;) Likewise for e_2 = VIEW_CONVERT_EXPR <u_88> btw, or REAL/IMAGPART_EXPR. Note both VIEW_CONVERT_EXPR and REAL/IMAGPART_EXPR will also appear in RHSs we can't handle. Richard. > > Thanks. > Aldy