On 3/21/07, Informatica Tecnologia Dual <[EMAIL PROTECTED]> wrote:
Hi.

I'm using the GCC compiler for PPC405 as delivered with Xilinx EDK 8.1.
The exact version is:  powerpc-eabi-gcc (GCC) 3.4.1 ( Xilinx EDK 8.1.1
Build EDK_I.19.3 190106 )

I found a bug in the code generation.

My code is a serial receiver and uses an uninitialized uchar nData:

  uchar nBits;
  uchar nData;
  for (nBits=0; nBits<8; nBits++) {
    nData >>= 1;                // the bug is related to this statement
    if (function()) nData |= 0x80;
  }

Although nData is not initialized, the correct state after the first
"nData >>= 1" statement would be any value between 0x00 and 0x7f.
However, on my target board I found it to be >= 0x80.

And if nData is not initialized you are invoking undefined behavior
according to the C/C++ standards so the behavior here is ok.  Yes you
are not expecting this behavor but that is not our fault you are
depening on undefined behavior.

Thanks,
Andrew Pinski

Reply via email to