diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-01-30 08:00:45 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-01-30 07:00:45 +0000 |
commit | 5fddd9fe582272b47be32830d0fac43ba29cd3c8 (patch) | |
tree | aceb5a0f483aa4d83bd2a8620de72f914f11bda8 /gcc | |
parent | ae30b3b25d4ec2a0cc1eff88ffcafd726f9cbe7a (diff) | |
download | gcc-5fddd9fe582272b47be32830d0fac43ba29cd3c8.zip gcc-5fddd9fe582272b47be32830d0fac43ba29cd3c8.tar.gz gcc-5fddd9fe582272b47be32830d0fac43ba29cd3c8.tar.bz2 |
re PR target/11475 (reload ICE with bitfields)
PR target/11475
* config/sparc/sparc.md (movhi_lo_sum): Tighten predicates.
From-SVN: r76928
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.md | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20040130-1.c | 24 |
4 files changed, 37 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ef7b9f..87f4728 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr> + + PR target/11475 + * config/sparc/sparc.md (movhi_lo_sum): Tighten predicates. + 2004-01-29 Jakub Jelinek <jakub@redhat.com> * emit-rtl.c (change_address): Use XEXP (memref, 0) instead diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 0843478..850b2f5 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -1,8 +1,8 @@ ;; Machine description for SPARC chip for GCC ;; Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -;; 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Contributed by Michael Tiemann (tiemann@cygnus.com) -;; 64 bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, +;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans, ;; at Cygnus Support. ;; This file is part of GCC. @@ -1818,8 +1818,8 @@ ;; We always work with constants here. (define_insn "*movhi_lo_sum" [(set (match_operand:HI 0 "register_operand" "=r") - (ior:HI (match_operand:HI 1 "arith_operand" "%r") - (match_operand:HI 2 "arith_operand" "I")))] + (ior:HI (match_operand:HI 1 "register_operand" "%r") + (match_operand:HI 2 "small_int" "I")))] "" "or\t%1, %2, %0") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 59b18f7..e00e074 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-01-30 Eric Botcazou <ebotcazou@libertysurf.fr> + + * gcc.c-torture/compile/20040130-1.c: New test. + 2004-01-29 Geoffrey Keating <geoffk@geoffk.org> * objc.dg/call-super-2.m: Include stddef.h for size_t. diff --git a/gcc/testsuite/gcc.c-torture/compile/20040130-1.c b/gcc/testsuite/gcc.c-torture/compile/20040130-1.c new file mode 100644 index 0000000..0edcea4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20040130-1.c @@ -0,0 +1,24 @@ +/* PR target/11475 */ +/* Origin: <heinrich.brand@fujitsu-siemens.com> */ + +/* This used to fail on SPARC because of a broken pattern. */ + +#pragma pack(2) + +struct +{ + unsigned char G936:7; + unsigned short G937:6; + unsigned int :4; + unsigned short :14; + unsigned int G938:8; + unsigned int :30; + unsigned short :16; + unsigned int :18; + unsigned short G939:9; +} G928b; + +void TestG928(void) +{ + G928b.G936 |= G928b.G939; +} |