Related articles |
---|
nuances of Copy Propagation? johnmce@world.std.com (1994-11-03) |
Re: nuances of Copy Propagation? c1venkat@watson.ibm.com (K.S. Venkatesh) (1994-11-09) |
Re: nuances of Copy Propagation? wjs@VNET.IBM.COM (William Schmidt) (1994-11-09) |
Re: nuances of Copy Propagation? joris@eunet.be (1994-11-06) |
nuances of Copy Propagation? (& Lambda Calculus) mark@omnifest.uwm.edu (1994-11-07) |
Re: nuances of Copy Propagation? davidm@Rational.COM (1994-11-08) |
Re: nuances of Copy Propagation? (& Lambda Calculus) steck@dcs.ed.ac.uk (Paul Steckler) (1994-11-11) |
[1 later articles] |
Newsgroups: | comp.compilers |
From: | johnmce@world.std.com (John McEnerney) |
Keywords: | optimize, question |
Organization: | The World Public Access UNIX, Brookline, MA |
Date: | Thu, 3 Nov 1994 05:57:13 GMT |
I'm implementing the Copy Propagation optimization as described in the
new Dragon Book, pp. 636-638, and I've run into an interesting problem
motivated by the following case:
y=x; z=y; x=3; w=z+100;
The dataflow computation tells me that I can propagate 'x' to 'z=y', and
that I can propagate 'y' to 'w=z+100', but obviously I can't eliminate
both 'y=x' and 'z=y' because of the assignment to x. So I can choose one
or the other:
z=x; x=3; w=z+100; -OR- y=x; x=3; w=y+100;
At the moment I've decided not to propagate copies to other copies, on
the assumption that that potentially invalidates the dataflow information.
On the other hand, I'd sure like to catch this case:
y=x; z=y; r=3; w=z+100; => r=3; w=x+100;
Has anyone encountered this problem before and hit upon a reasonable
solution? I'd hate to have to recompute the dataflow information or
anything like that. At the moment, I figure it is safest to not propagate
copies to other copies, and hope that register coalescing during coloring
will catch the leftover opportunities, but I'd love to hear of a better
solution.
-- John (johnmce@world.std.com)
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.