------- 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