diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2015-05-06 14:23:57 +0000 |
---|---|---|
committer | Yvan Roux <yroux@gcc.gnu.org> | 2015-05-06 14:23:57 +0000 |
commit | 93e956161e843aecdd9ad07574132efb3616d549 (patch) | |
tree | 510bed1523286c1e8633a33bd64c882ca91ed130 /gcc | |
parent | 2149da1b264e7b11d5da6dda6426b53ca5ae739f (diff) | |
download | gcc-93e956161e843aecdd9ad07574132efb3616d549.zip gcc-93e956161e843aecdd9ad07574132efb3616d549.tar.gz gcc-93e956161e843aecdd9ad07574132efb3616d549.tar.bz2 |
re PR target/64208 ([iwmmxt] ICE: internal compiler error: Max. number of generated reload insns per insn is achieved (90))
gcc/
2015-05-06 Yvan Roux <yvan.roux@linaro.org>
PR target/64208
* config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Cleanup redundant
alternatives.
gcc/testsuite/
2015-05-06 Yvan Roux <yvan.roux@linaro.org>
PR target/64208
* gcc.target/arm/pr64208.c: New test.
From-SVN: r222853
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/iwmmxt.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr64208.c | 25 |
4 files changed, 38 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ed93d5..f7188b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-05-06 Yvan Roux <yvan.roux@linaro.org> + + PR target/64208 + * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Cleanup redundant + alternatives. + 2015-05-06 Szabolcs Nagy <szabolcs.nagy@arm.com> * config/aarch64/geniterators.sh: Use standard BRE in sed. diff --git a/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md index fda3c2c..d1a60ff 100644 --- a/gcc/config/arm/iwmmxt.md +++ b/gcc/config/arm/iwmmxt.md @@ -107,8 +107,8 @@ ) (define_insn "*iwmmxt_arm_movdi" - [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,yr,y,yrUy,*w, r,*w,*w, *Uv") - (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,yr,y,yrUy,y, r,*w,*w,*Uvi,*w"))] + [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,r, y,Uy,*w, r,*w,*w, *Uv") + (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,r,y,Uy,y, r,*w,*w,*Uvi,*w"))] "TARGET_REALLY_IWMMXT && ( register_operand (operands[0], DImode) || register_operand (operands[1], DImode))" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2b92daf..7c4781c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-05-06 Yvan Roux <yvan.roux@linaro.org> + + PR target/64208 + * gcc.target/arm/pr64208.c: New test. + 2015-05-06 Alan Modra <amodra@gmail.com> PR target/66020 diff --git a/gcc/testsuite/gcc.target/arm/pr64208.c b/gcc/testsuite/gcc.target/arm/pr64208.c new file mode 100644 index 0000000..96fd56d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr64208.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */ +/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */ +/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */ +/* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */ +/* { dg-require-effective-target arm32 } */ +/* { dg-require-effective-target arm_iwmmxt_ok } */ +/* { dg-options "-O1 -mcpu=iwmmxt" } */ + +long long x6(void); +void x7(long long, long long); +void x8(long long); + +int x0; +long long *x1; + +void x2(void) { + long long *x3 = x1; + while (x1) { + long long x4 = x0, x5 = x6(); + x7(x4, x5); + x8(x5); + *x3 = 0; + } +} |