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

typedef'd pointer type and volatile interact (egcs-1.0.3 release)



// monk.cpp begin

typedef unsigned char* BYTE_P;

void monk ()
{
  unsigned char b;
  while ((b = *(volatile BYTE_P) (0)));
}

// end monk.cpp

$ egcc -v --save-temps -O -c monk.cpp
Reading specs from /usr/lib/gcc-lib/i486-linux/egcs-2.90.29/specs
gcc version egcs-2.90.29 980515 (egcs-1.0.3 release)
 /usr/lib/gcc-lib/i486-linux/egcs-2.90.29/cpp -lang-c++ -v -undef
-D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Di386
-D__i386__ -D__ELF__ -Dunix -Dlinux -D__i386__ -D__i386__ -D__ELF__
-D__unix__ -D__linux__ -D__i386 -D__unix -D__linux -Asystem(posix)
-D__EXCEPTIONS -D__OPTIMIZE__ -Di386 -Di486 -Asystem(unix) -Acpu(i386)
-Amachine(i386) -D__i386__ -D__i486__ -Asystem(unix) -Acpu(i386)
-Amachine(i386) monk.cpp monk.ii
GNU CPP version egcs-2.90.29 980515 (egcs-1.0.3 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++
 /usr/local/include
 /usr/lib/gcc-lib/i486-linux/egcs-2.90.29/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-linux/egcs-2.90.29/cc1plus monk.ii -quiet -dumpbase
monk.cc -O -version -o monk.s
GNU C++ version egcs-2.90.29 980515 (egcs-1.0.3 release) (i486-linux)
compiled by GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release).
 as -V -Qy -o monk.o monk.s
GNU assembler version 2.9.1 (i486-linux), using BFD version 2.9.1

Produces assembler that includes the patently bogus while loop:

.L2:
	testb %al,%al
	jne .L2

-- 




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