meyering@CS.UTEXAS.EDU (Jim Meyering) (10/29/89)
/*
* Using unmodified gcc-1.36, config.gcc {sun3,sun4-os4}:
*
* This program causes cc1 to generate a signal 10 (or 11) when
* compiled with both the options -Wswitch and -traditional.
* If c has any type other than `unsigned char' or 'unsigned char *'
* gcc runs fine. GNU regex.c (in sed-1.06) has code like this.
*
* A suggestion to people using gcc:
* create an executable named gcc with the 2 lines:
* #!/bin/sh
* /p/bin/gcc -Wswitch "$@"
* where you'd replace /p/bin/gcc with the absolute pathname of the
* binary executable on your system. Then put this gcc in a directory
* that precedes (in your $PATH) that of the binary.
*/
void
foo(c)
unsigned char c;
{
typedef enum {TRUE, FALSE} Bool;
switch ((Bool) c) {
case TRUE:
break;
}
}
/p/bin/gcc -v -Wswitch -traditional -c foo.c -o foo.o
gcc version 1.36
/p/lib/gcc-1.36/gcc-cpp -v -undef -D__GNUC__ -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -traditional foo.c /usr/tmp/cca01286.cpp
GNU CPP version 1.36
/p/lib/gcc-1.36/gcc-cc1 /usr/tmp/cca01286.cpp -quiet -dumpbase foo.c -Wswitch -traditional -version -o /usr/tmp/cca01286.s
GNU C version 1.36 (sparc) compiled by GNU C version 1.36.
default target switches: -mfpu -mepilogue
/p/bin/gcc: Program cc1 got fatal signal 11.
---
Jim Meyering meyering@cs.utexas.edu