This is the mail archive of the gcc-prs@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]

optimization/5462: Optimization level changes program behavior



>Number:         5462
>Category:       optimization
>Synopsis:       Optimization level changes program behavior
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 23 07:06:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Ralf Corsepius
>Release:        3.0.3 and pre-3.0.4 (20021222)
>Organization:
>Environment:
i386 Linux/GNU, glibc2-2.2.4, binutils-2.11.92.0.10
Configured with: ../configure --enable-threads=posix --enable-long-long --prefix=/opt/gcc --mandir=/opt/gcc/man --infodir=/opt/gcc/info --with-local-prefix=/usr/local --enable-languages=c,c++ --disable-nls --enable-shared --with-system-zlib --host=i486-suse-linux --build=i486-suse-linux
Thread model: posix
gcc version 3.0.3
>Description:
With gcc-3.0.3 and gcc-3.0.4 (gcc-3.0-branch, cut 20021222) the code fragment below triggers 
the assert() if being compiled with -O2.

With -O1 or -g the code works as expected (Not entering the assert).

#include <assert.h>
#include <stdlib.h>
#include <inttypes.h>

int
coin_host_is_bigendian (void)
{
  char buffer[4];
  buffer[0] = 0x00;
  buffer[1] = 0x01;
  buffer[2] = 0x02;
  buffer[3] = 0x03;
  switch (*((uint32_t *) buffer))
    {
    case 0x00010203:
	return 1;
    case 0x03020100:
	return 0;
    default:
      assert (0 && "system has unknown endianness");
	exit (1);
    }
  return 0;
}

int
main ()
{
  coin_host_is_bigendian ();
}

>How-To-Repeat:
Compile fragment (rsp endian.c from the attachment) 
with gcc -O2 -o endian endian.c and run it.

With gcc-2.95.3, the code above seems to work.

For some strange reason, makeing the "char buffer" static seems to work around this problem.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-gtar; name="endian-bug.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="endian-bug.tar.gz"

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
iQgAeAAA


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