self@BAYES.ARC.NASA.GOV (Matthew Self) (11/22/88)
====================================================================== gcc 1.30 gets a fatal error compiling certain "asm" constructs.... The following program cause gcc to get fatal error 6: ====================================================================== #include <stdio.h> #include <math.h> #define N 100000 #define exp(x) \ ({ \ double __value, \ __x = (x); \ \ asm ("fetox%.x %1,%0" \ : "=f" (__value) \ : "f" (__x)); \ __value; \ }) #define log(x) \ ({ \ double __value, \ __x = (x); \ \ asm ("flogn%.x %1,%0" \ : "=f" (__value) \ : "f" (__x)); \ __value; \ }) main() { int i; double x = 2.0; for (i = N - 1; i != -1; i--) { exp(log(x)); } printf("x = %f\n", x); } ====================================================================== Here is what is produced by gcc -E: ====================================================================== main() { int i; double x = 2.0; for (i = 100000 - 1; i != -1; i--) { ({ double __value, __x = (({ double __value, __x = (x); asm ("flogn%.x %1,%0" : "=f" (__value) : "f" (__x)); __value; }) ); asm ("fetox%.x %1,%0" : "=f" (__value) : "f" (__x)); __value; }) ; } printf("x = %f\n", x); } ====================================================================== Here is the run: ====================================================================== gcc -v -O -g bug.c gcc version 1.30 /usr/local/lib/gcc-cpp -v -undef -D__GNU__ -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ -D__HAVE_68881__ -Dmc68020 bug.c /tmp/cca10665.cpp GNU CPP version 1.30 /usr/local/lib/gcc-cc1 /tmp/cca10665.cpp -quiet -dumpbase bug.c -g -O -version -o /tmp/cca10665.s GNU C version 1.30 (68k, MIT syntax) compiled by GNU C version 1.30. gcc: Program cc1 got fatal signal 6. ====================================================================== This is on a Sun-3/60 running SunOS 4.0 ====================================================================== Matthew Self NASA Ames Research Center self@bayes.arc.nasa.gov