This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] Removing useless/redundant "const" calls


In message <Pine.LNX.4.44.0306120833500.4105-100000@wotan.suse.de>, Michael Mat
z writes:
 >Hi,
 >
 >On Wed, 11 Jun 2003 law@redhat.com wrote:
 >
 >> This is the final patch needed to allow the compiler to remove
 >> useless or redundant calls to "const" functions.  It fixes
 >> gcc.dg/tree-ssa/20030611-1.c.
 >
 >There is no reason to not also remove useless calls to "pure" functions.
 >They too have by definition no side-effects.  Sure, they can read global
 >memory (and hence proving "redundant" is harder), but this isn't a
 >side-effect in the sense that it prevents removal.  So, shouldn't
 >TREE_SIDE_EFFECTS also be cleared for pure functions?
I couldn't convince myself that was actually safe.  Possibly because
I haven't looked deeply into "pure" functions.

Given two invocations of a pure function with the same inputs, will the
pure function always return the same value?  If the answer is no, then
we'll need to distinguish between pure and const functions later --
simply clearing TREE_SIDE_EFFECTS would result in incorrect code.

Is a pure function allowed to read volatile memory?

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]