[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