https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66739

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
The ppc testcase,

int
f(int a, int b, int c)
{
  a -= (short)b * (c >> 16);
  if (!a)
    return 10;
  return a;
}

is probably artificially triggering the same issue.  Here we do not
test for conditional part but for an instruction used implementing
a -= (short)b * (c >> 16);

But it shows the same issue with the followup transform of sinking the
subtraction to the else path of the if.

I suppose a single-use test is the way to go together with some means to
"override" that when the caller is not going to create the result stmts
but will only perform lookups if the result is already computed (that applies
to all single-use tests).

Reply via email to