[Bug tree-optimization/19828] [4.0 Regression] LIM is pulling out a pure function even though there is something which can modify global memory

drow at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Feb 9 06:37:00 GMT 2005


------- Additional Comments From drow at gcc dot gnu dot org  2005-02-08 19:36 -------
Here's another one.  This may be a different bug.  Suppose we have two pure
functions, one which checks whether a library is present and one which fetches
some piece of data from the library.  Code looks like this:

int
func_loop_3 (int arg)
{
  int var = 0;
  while (arg--)
    {
      if (func_pure ())
        var = func_pure_2 ();
    }
  return var;
}

LIM will move _both_ pure calls out of the loop.  I think that it is valid
for a pure call to segfault in a condition when it would not normally have
been called; if the implementation of func_pure always returns zero, I don't
think that func_pure_2 should ever be called in the above.


-- 


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



More information about the Gcc-bugs mailing list