re PR target/20054 (ICE in change_address_1)
ChangeLog: PR target/20054 * config/s390/s390.md ("*llgt_sidi", "*llgt_sidi_split"): Move to before the "*llgt_didi" pattern. testsuite/ChangeLog: PR target/20054 * gcc.dg/pr20054.c: New test. From-SVN: r95233
This commit is contained in:
parent
0ae65c915a
commit
d6083c7d69
@ -1,3 +1,9 @@
|
||||
2005-02-18 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
PR target/20054
|
||||
* config/s390/s390.md ("*llgt_sidi", "*llgt_sidi_split"): Move to
|
||||
before the "*llgt_didi" pattern.
|
||||
|
||||
2005-02-18 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* gimplify.c (gimplify_modify_expr_rhs) [CALL_EXPR]: Revert again.
|
||||
|
@ -2660,6 +2660,27 @@
|
||||
; LLGT-type instructions (zero-extend from 31 bit to 64 bit).
|
||||
;
|
||||
|
||||
(define_insn "*llgt_sidi"
|
||||
[(set (match_operand:DI 0 "register_operand" "=d")
|
||||
(and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "m") 0)
|
||||
(const_int 2147483647)))]
|
||||
"TARGET_64BIT"
|
||||
"llgt\t%0,%1"
|
||||
[(set_attr "op_type" "RXE")])
|
||||
|
||||
(define_insn_and_split "*llgt_sidi_split"
|
||||
[(set (match_operand:DI 0 "register_operand" "=d")
|
||||
(and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "m") 0)
|
||||
(const_int 2147483647)))
|
||||
(clobber (reg:CC 33))]
|
||||
"TARGET_64BIT"
|
||||
"#"
|
||||
"&& reload_completed"
|
||||
[(set (match_dup 0)
|
||||
(and:DI (subreg:DI (match_dup 1) 0)
|
||||
(const_int 2147483647)))]
|
||||
"")
|
||||
|
||||
(define_insn "*llgt_sisi"
|
||||
[(set (match_operand:SI 0 "register_operand" "=d,d")
|
||||
(and:SI (match_operand:SI 1 "nonimmediate_operand" "d,m")
|
||||
@ -2702,27 +2723,6 @@
|
||||
(const_int 2147483647)))]
|
||||
"")
|
||||
|
||||
(define_insn "*llgt_sidi"
|
||||
[(set (match_operand:DI 0 "register_operand" "=d")
|
||||
(and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "m") 0)
|
||||
(const_int 2147483647)))]
|
||||
"TARGET_64BIT"
|
||||
"llgt\t%0,%1"
|
||||
[(set_attr "op_type" "RXE")])
|
||||
|
||||
(define_insn_and_split "*llgt_sidi_split"
|
||||
[(set (match_operand:DI 0 "register_operand" "=d")
|
||||
(and:DI (subreg:DI (match_operand:SI 1 "memory_operand" "m") 0)
|
||||
(const_int 2147483647)))
|
||||
(clobber (reg:CC 33))]
|
||||
"TARGET_64BIT"
|
||||
"#"
|
||||
"&& reload_completed"
|
||||
[(set (match_dup 0)
|
||||
(and:DI (subreg:DI (match_dup 1) 0)
|
||||
(const_int 2147483647)))]
|
||||
"")
|
||||
|
||||
;
|
||||
; zero_extendqidi2 instruction pattern(s)
|
||||
;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2005-02-18 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
PR target/20054
|
||||
* gcc.dg/pr20054.c: New test.
|
||||
|
||||
2005-01-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/19508
|
||||
|
23
gcc/testsuite/gcc.dg/pr20054.c
Normal file
23
gcc/testsuite/gcc.dg/pr20054.c
Normal file
@ -0,0 +1,23 @@
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fno-strict-aliasing" } */
|
||||
|
||||
|
||||
unsigned int *foo (void);
|
||||
|
||||
char *
|
||||
bar (double *d)
|
||||
{
|
||||
return (char *) (d + 1) - sizeof (unsigned int);
|
||||
}
|
||||
|
||||
char
|
||||
baz (double x)
|
||||
{
|
||||
unsigned int h = *foo ();
|
||||
unsigned int l = *(unsigned int *) bar (&x);
|
||||
|
||||
return (h & ~0x80000000L) == 0x7FF00000 && l == 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user