diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-04-01 18:18:46 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-04-01 18:18:46 +0200 |
commit | d93e052c0e8274666c0c4f05169c936d019084f9 (patch) | |
tree | bb87527ed606432321b5032ccdae2e7af3da3467 /gcc | |
parent | eddd291e260549659b0a04f6ae73093fb4d3d467 (diff) | |
download | gcc-d93e052c0e8274666c0c4f05169c936d019084f9.zip gcc-d93e052c0e8274666c0c4f05169c936d019084f9.tar.gz gcc-d93e052c0e8274666c0c4f05169c936d019084f9.tar.bz2 |
re PR target/39226 (gcc_assert (verify_initial_elim_offsets ()); ICE)
PR target/39226
* config/rs6000/rs6000.md (andsi3_internal5_nomc,
anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
(booldi3_internal3): Use boolean_or_operator instead of
boolean_operator.
* gcc.dg/pr39226.c: New test.
From-SVN: r145411
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 40 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr39226.c | 25 |
4 files changed, 39 insertions, 39 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1eebf64..1f26fe7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-04-01 Jakub Jelinek <jakub@redhat.com> + + PR target/39226 + * config/rs6000/rs6000.md (andsi3_internal5_nomc, + anddi3_internal2_nomc, anddi3_internal3_nomc): Removed. + (booldi3_internal3): Use boolean_or_operator instead of + boolean_operator. + 2009-04-01 Joseph Myers <joseph@codesourcery.com> PR c/39605 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 88322fd..c2f05e5 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -2999,20 +2999,6 @@ [(set_attr "type" "compare,compare,compare,delayed_compare,compare,compare,compare,compare") (set_attr "length" "8,4,4,4,8,8,8,8")]) -(define_insn "*andsi3_internal5_nomc" - [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y,??y,??y,?y") - (compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r,r,r,r") - (match_operand:SI 2 "and_operand" "r,r,K,L,T")) - (const_int 0))) - (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r,r,r") - (and:SI (match_dup 1) - (match_dup 2))) - (clobber (match_scratch:CC 4 "=X,X,x,x,X"))] - "TARGET_64BIT && !rs6000_gen_cell_microcode" - "#" - [(set_attr "type" "compare") - (set_attr "length" "8,8,8,8,8")]) - (define_split [(set (match_operand:CC 3 "cc_reg_not_micro_cr0_operand" "") (compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "") @@ -7684,18 +7670,6 @@ [(set_attr "type" "compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare,compare,compare,compare") (set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")]) -(define_insn "*anddi3_internal2_nomc" - [(set (match_operand:CC 0 "cc_reg_operand" "=x,?y,?y,??y,??y,?y") - (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r,r,r") - (match_operand:DI 2 "and64_2_operand" "t,r,S,K,J,t")) - (const_int 0))) - (clobber (match_scratch:DI 3 "=r,r,r,r,r,r")) - (clobber (match_scratch:CC 4 "=X,X,X,x,x,X"))] - "TARGET_64BIT && !rs6000_gen_cell_microcode" - "#" - [(set_attr "type" "delayed_compare,compare,compare,compare,compare,compare") - (set_attr "length" "8,8,8,8,8,12")]) - (define_split [(set (match_operand:CC 0 "cc_reg_operand" "") (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "") @@ -7747,18 +7721,6 @@ [(set_attr "type" "compare,compare,delayed_compare,compare,compare,compare,compare,compare,compare,compare,compare,compare") (set_attr "length" "4,4,4,4,4,8,8,8,8,8,8,12")]) -(define_insn "*anddi3_internal3_nomc" - [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y,?y,??y,??y,?y") - (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "%r,r,r,r,r,r") - (match_operand:DI 2 "and64_2_operand" "t,r,S,K,J,t")) - (const_int 0))) - (set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r,r,r,r") - (and:DI (match_dup 1) (match_dup 2))) - (clobber (match_scratch:CC 4 "=X,X,X,x,x,X"))] - "TARGET_64BIT && !rs6000_gen_cell_microcode" - "#" - [(set_attr "type" "delayed_compare,compare,compare,compare,compare,compare") - (set_attr "length" "8,8,8,8,8,12")]) (define_split [(set (match_operand:CC 3 "cc_reg_not_micro_cr0_operand" "") (compare:CC (and:DI (match_operand:DI 1 "gpc_reg_operand" "") @@ -7915,7 +7877,7 @@ (define_insn "*booldi3_internal3" [(set (match_operand:CC 3 "cc_reg_operand" "=x,?y") - (compare:CC (match_operator:DI 4 "boolean_operator" + (compare:CC (match_operator:DI 4 "boolean_or_operator" [(match_operand:DI 1 "gpc_reg_operand" "%r,r") (match_operand:DI 2 "gpc_reg_operand" "r,r")]) (const_int 0))) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7cd559f..2d10907 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-04-01 Jakub Jelinek <jakub@redhat.com> + + PR target/39226 + * gcc.dg/pr39226.c: New test. + 2009-04-01 H.J. Lu <hongjiu.lu@intel.com> PR c++/35240 diff --git a/gcc/testsuite/gcc.dg/pr39226.c b/gcc/testsuite/gcc.dg/pr39226.c new file mode 100644 index 0000000..1442ccc --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr39226.c @@ -0,0 +1,25 @@ +/* PR target/39226 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-options "-O2 -mtune=cell -mminimal-toc" { target { powerpc*-*-* && lp64 } } } */ + +struct A +{ + char *a; + unsigned int b : 1; + unsigned int c : 31; +}; + +struct B +{ + struct A *d; +}; + +void +foo (struct B *x, unsigned long y) +{ + if (x->d[y].c) + return; + if (x->d[y].b) + x->d[y].a = 0; +} |