[Bug middle-end/53073] [4.8 Regression] 464.h264ref in SPEC CPU 2006 miscompiled

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 15 17:56:00 GMT 2013


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-15 17:56:05 UTC ---
You're wrong, the code in #c2 is not valid C.
ISO C99 6.5.2.1 says that d[++k] is equivalent to:
  (*((d)+(++k)))
and ++k in the last iteration is 16, so it is
  (*(d+16))
and then 6.5.6/8 (last sentence) applies:
"If the result points one past the last element of the array object, it
shall not be used as the operand of a unary * operator that is evaluated."
So, if you ever enter this loop, you'll invoke undefined behavior and anything
can happen.



More information about the Gcc-bugs mailing list