From: Janis Johnson Date: Mon, 11 Jan 2010 20:29:40 +0000 (+0000) Subject: re PR target/42416 (ICE in rs6000_bulitin_vec_perm for 177.mesa with -mvsx) X-Git-Tag: releases/gcc-4.5.0~1284 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3767f512426fb5ec2c3459a83e220c3343125fc3;p=thirdparty%2Fgcc.git re PR target/42416 (ICE in rs6000_bulitin_vec_perm for 177.mesa with -mvsx) PR target/42416 * config/rs6000/rs6000.c (rs6000_override_options): On targets that support VSX, warn for -mno-altivec if vsx is not disabled, and disable vsx. * gcc.target/powerpc/warn-1.c: New test. * gcc.target/powerpc/warn-2.c: New test. From-SVN: r155816 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c1e71525e2e..3c59ab1f86b5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-01-11 Janis Johnson + + PR target/42416 + * config/rs6000/rs6000.c (rs6000_override_options): On targets + that support VSX, warn for -mno-altivec if vsx is not disabled, + and disable vsx. + 2010-01-11 Joseph Myers Shujing Zhao diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 48f43da76faf..906392eebf0a 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2407,8 +2407,7 @@ rs6000_override_options (const char *default_cpu) } } - /* Add some warnings for VSX. Enable -maltivec unless the user explicitly - used -mno-altivec */ + /* Add some warnings for VSX. */ if (TARGET_VSX) { const char *msg = NULL; @@ -2429,14 +2428,20 @@ rs6000_override_options (const char *default_cpu) msg = N_("-mvsx used with little endian code"); else if (TARGET_AVOID_XFORM > 0) msg = N_("-mvsx needs indexed addressing"); + else if (!TARGET_ALTIVEC && (target_flags_explicit & MASK_ALTIVEC)) + { + if (target_flags_explicit & MASK_VSX) + msg = N_("-mvsx and -mno-altivec are incompatible"); + else + msg = N_("-mno-altivec disables vsx"); + } if (msg) { warning (0, msg); target_flags &= ~ MASK_VSX; } - else if (TARGET_VSX && !TARGET_ALTIVEC - && (target_flags_explicit & MASK_ALTIVEC) == 0) + else if (TARGET_VSX && !TARGET_ALTIVEC) target_flags |= MASK_ALTIVEC; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a910ad3498d0..0093948d36ee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-01-11 Janis Johnson + + PR target/42416 + * gcc.target/powerpc/warn-1.c: New test. + * gcc.target/powerpc/warn-2.c: New test. + 2010-01-11 Uros Bizjak * gcc.target/x86_64/abi/avx/asm-support.S (snapshot_ret): Preserve diff --git a/gcc/testsuite/gcc.target/powerpc/warn-1.c b/gcc/testsuite/gcc.target/powerpc/warn-1.c new file mode 100644 index 000000000000..c00aff08c6ed --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/warn-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-options "-O -mvsx -mno-altivec" } */ + +/* { dg-warning "-mvsx and -mno-altivec are incompatible" "" { target *-*-* } 1 } */ + +double +foo (double *x, double *y) +{ + double z[2]; + int i; + + for (i = 0; i < 2; i++) + z[i] = x[i] + y[i]; + return z[0] * z[1]; +} + +/* { dg-final { scan-assembler-not "xsadddp" } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/warn-2.c b/gcc/testsuite/gcc.target/powerpc/warn-2.c new file mode 100644 index 000000000000..0a9fa1e3ff35 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/warn-2.c @@ -0,0 +1,18 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-options "-O -mcpu=power7 -mno-altivec" } */ + +/* { dg-warning "-mno-altivec disables vsx" "" { target *-*-* } 1 } */ + +double +foo (double *x, double *y) +{ + double z[2]; + int i; + + for (i = 0; i < 2; i++) + z[i] = x[i] + y[i]; + return z[0] * z[1]; +} + +/* { dg-final { scan-assembler-not "xsadddp" } } */