diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-05-03 12:16:01 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-05-03 12:16:01 +0200 |
commit | d40a89e7776b2bdfb912f25dfa1cf93df23aa284 (patch) | |
tree | 2a75287eede10ad1ed073af99a32942d4efd0f79 | |
parent | d5becc1117cec39943cc3cbd6d31a9c37f916408 (diff) | |
download | gcc-d40a89e7776b2bdfb912f25dfa1cf93df23aa284.zip gcc-d40a89e7776b2bdfb912f25dfa1cf93df23aa284.tar.gz gcc-d40a89e7776b2bdfb912f25dfa1cf93df23aa284.tar.bz2 |
re PR target/53187 (ICE in arm_select_dominance_cc_mode)
PR target/53187
* config/arm/arm.c (arm_select_cc_mode): If x has MODE_CC class
mode, return that mode.
* gcc.target/arm/pr53187.c: New test.
* gcc.c-torture/compile/pr53187.c: New test.
From-SVN: r187085
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr53187.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr53187.c | 13 |
5 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1023859..80cf8c0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2012-05-03 Jakub Jelinek <jakub@redhat.com> + PR target/53187 + * config/arm/arm.c (arm_select_cc_mode): If x has MODE_CC class + mode, return that mode. + PR target/53194 * config/i386/i386-c.c (ix86_target_macros_internal): Don't define __ATOMIC_HLE_* macros here. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 68350b1..4d11d7e 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -11964,6 +11964,9 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y) } } + if (GET_MODE_CLASS (GET_MODE (x)) == MODE_CC) + return GET_MODE (x); + return CCmode; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51777a2..9a56a5b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-05-03 Jakub Jelinek <jakub@redhat.com> + + PR target/53187 + * gcc.target/arm/pr53187.c: New test. + * gcc.c-torture/compile/pr53187.c: New test. + 2012-05-03 Richard Guenther <rguenther@suse.de> * gfortran.dg/pr52621.f90: Add -w to avoid diagnostic about diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53187.c b/gcc/testsuite/gcc.c-torture/compile/pr53187.c new file mode 100644 index 0000000..13455f4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr53187.c @@ -0,0 +1,11 @@ +/* PR target/53187 */ + +void bar (int); + +void +foo (int x, double y, double z) +{ + _Bool t = z >= y; + if (!t || x) + bar (t ? 1 : 16); +} diff --git a/gcc/testsuite/gcc.target/arm/pr53187.c b/gcc/testsuite/gcc.target/arm/pr53187.c new file mode 100644 index 0000000..648a06d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr53187.c @@ -0,0 +1,13 @@ +/* PR target/53187 */ +/* { dg-do compile } */ +/* { dg-options "-march=armv7-a -mfloat-abi=hard -O2" } */ + +void bar (int); + +void +foo (int x, double y, double z) +{ + _Bool t = z >= y; + if (!t || x) + bar (t ? 1 : 16); +} |