yann@1: --- /dev/null Sat Dec 14 13:56:51 2002 yann@1: +++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10412-1.c Sun Sep 14 16:15:21 2003 yann@1: @@ -0,0 +1,43 @@ yann@1: +/* PR target/10412 yann@1: + * Reporter: shrinivasa@kpitcummins.com yann@1: + * Summary: Renesas SH - Incorrect code generation yann@1: + * Description: yann@1: + * When following code is compiled with yann@1: + * sh-elf-gcc -S -mhitachi -m2 -O2 bug1.c yann@1: + * generates an incorrect code. yann@1: + * yann@1: + * Testcase tweaked by dank@kegel.com yann@1: + * Problem only happens with -mhitachi -m2. Not sure if I can give those yann@1: + * options for all sh targets. They work on sh4, though. yann@1: + * Not marked as xfail as it's a regression relative to hardhat 2.0 gcc-2.97. yann@1: +*/ yann@1: +/* { dg-do run } */ yann@1: +/* { dg-options "-O2" } */ yann@1: +int global_val; yann@1: + yann@1: +int func0(int x) yann@1: +{ yann@1: + global_val += x; yann@1: + return (x != 99); yann@1: +} yann@1: + yann@1: +int func1(unsigned long addr) yann@1: +{ yann@1: + int err; yann@1: + yann@1: + err = func0(addr); yann@1: + if (err) yann@1: + return (err); yann@1: + yann@1: + err = func0(addr * 7); /* address of func0 is lost during multiplication -> probable SIGSEGV */ yann@1: + return (err); yann@1: +} yann@1: + yann@1: +int main(int argc, char **argv) yann@1: +{ yann@1: + global_val = 0; yann@1: + global_val += func1(99); yann@1: + if (global_val != 99 * 8 + 1) yann@1: + abort(); yann@1: + return 0; yann@1: +}