From: Ken Raeburn Date: Wed, 7 Oct 1998 18:26:06 +0000 (+0000) Subject: 981006-1.c: New test. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=52db16fde4788b51870a0dd44d05a06907fac445;p=gcc.git 981006-1.c: New test. * special/981006-1.c: New test. Make sure gcc doesn't lose track of the possible targets of tablejump insns. * special/special.exp: Run it. From-SVN: r22899 --- diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog index d1ec25752a5..6663d8a8dbb 100644 --- a/gcc/testsuite/gcc.c-torture/ChangeLog +++ b/gcc/testsuite/gcc.c-torture/ChangeLog @@ -1,3 +1,9 @@ +1998-10-06 Ken Raeburn + + * special/981006-1.c: New test. Make sure gcc doesn't lose track + of the possible targets of tablejump insns. + * special/special.exp: Run it. + Thu Oct 1 17:15:26 1998 Nick Clifton * compile/981001-1.c: New test. diff --git a/gcc/testsuite/gcc.c-torture/special/981006-1.c b/gcc/testsuite/gcc.c-torture/special/981006-1.c new file mode 100644 index 00000000000..6af6d9a8ea5 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/special/981006-1.c @@ -0,0 +1,50 @@ +/* Test that tablejump insns are correctly handled. If the compiler + loses track of the jump targets, it will report that x and y can be + used uninitialized. + + This is broken in egcs 1998/10/06 for mips in pic mode. */ +/* { dg-do compile } */ + +int foo (int a, int b) +{ + __label__ z; + int x; /* { dg-bogus "warning: `.' might be used uninitialized in this function" } */ + int y; /* { dg-bogus "warning: `.' might be used uninitialized in this function" } */ + static void *p; + + switch (a) { + case 2: + x = 4; + break; + case 4: + x = 6; + break; + case 8: case 10: case 13: case 11: case 17: case 19: + x = 7; + break; + default: + x = -1; + break; + } + switch (b) { + case 2: + y = 4; + break; + case 4: + y = 6; + break; + case 8: case 10: case 13: case 11: case 17: case 19: + y = 7; + break; + default: + y = -1; + break; + } + z: + p = &&z; + return x * y; +} +int main (int argc, char *argv[]) +{ + return 1 == foo (argc, argc + 1); +} diff --git a/gcc/testsuite/gcc.c-torture/special/special.exp b/gcc/testsuite/gcc.c-torture/special/special.exp index ac215a39f5b..d37d18c8a1d 100644 --- a/gcc/testsuite/gcc.c-torture/special/special.exp +++ b/gcc/testsuite/gcc.c-torture/special/special.exp @@ -34,6 +34,20 @@ load_lib gcc-dg.exp ################## ADD NEXT CASE HERE (NOT AT THE END) ################## +# 981006-1 +# For MIPS at least, pic is needed to trigger the problem. +dg-init +if { [istarget rs6000-*-aix*] + || [istarget powerpc*-*-aix*] + || [istarget arm*-*-*] +} { + set extra_flags "" +} else { + set extra_flags "-fpic" +} +dg-runtest $srcdir/$subdir/981006-1.c "-Wuninitialized -O2 $extra_flags" "" +dg-finish + # 921210-1 set lines [gcc_target_compile $srcdir/$subdir/921210-1.c "" preprocess ""] set lines [prune [split [prune_warnings [prune_gcc_output $lines]] "\n"] ""]