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
This commit is contained in:
parent
eddd291e26
commit
d93e052c0e
4 changed files with 39 additions and 39 deletions
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
25
gcc/testsuite/gcc.dg/pr39226.c
Normal file
25
gcc/testsuite/gcc.dg/pr39226.c
Normal file
|
@ -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;
|
||||
}
|
Loading…
Add table
Reference in a new issue