------- Comment #7 from rakdver at atrey dot karlin dot mff dot cuni dot cz  
2006-11-06 12:33 -------
Subject: Re:  Missed constant propagation into loops

> But obviously for real operands, foo () won't clobber them.  I.e. the 
> following
> also could be optimized but is not:
> 
> void foo (int *);
> void bar (void)
> {
>   int j;
>   int i;
>   i = 0;
>   for (j = 0; j < 10000; j++)
>     if (i)
>       foo (&i);
> }
> 
> foo () will be never executed, so the clobbering of i is not "executed",
> so we don't need i as PHI arg/result for the loop.  This is what I'm looking
> for as optimization.

now you have lost me, I have no idea what you are trying to tell.  What
I mean is that this is exactly the same case like

void bar (void)
{
  int j;
  int i;
  i = 0;
  for (j = 0; j < 10000; j++)
    if (i)
      i = 1;
}

Except that in the testcase for the PR, "i" is not a real operand.
Since we already have some support for virtual operands in ccp, it
should not be too difficult to make it handle this case as well.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29738

Reply via email to