This is the mail archive of the gcc-help@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: C++ standards question


I haven't tried constructing a small test case. I fixed the problem by changing to
if ( expression of *p ) *((char volatile*)p) = '-';


I am a skilled enough asm programmer to have zero doubt that I correctly interpreted the compiled code. It did have that "optimization".

I don't know what else in that C++ function might have given the compiler permission to make that optimization. I don't think anything did. I know there was no unconditional write to *p in C++ code and there was an unconditional write to *p in the asm code.

Jay wrote:
This sounds like a bug. But I am skeptical that any compiler has this bug. Do you have a small test case that demonstrates it? Compilers aren't bug-free (nothing is) but there are FAR more bugs in compiler input than compilers themselves.

- Jay

On Feb 3, 2013, at 9:34 PM, "Mailaripillai, Kannan Jeganathan" <kannanmj@hp.com> wrote:

if ( expression of *p ) *p = '-';

The optimizer changes that to the equivalent of

*p = (expression of *p ) ? '-' : *p;

Is that a valid optimization?



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