From: Eric Botcazou Date: Fri, 30 Jan 2004 07:00:45 +0000 (+0100) Subject: re PR target/11475 (reload ICE with bitfields) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5fddd9fe582272b47be32830d0fac43ba29cd3c8;p=gcc.git re PR target/11475 (reload ICE with bitfields) PR target/11475 * config/sparc/sparc.md (movhi_lo_sum): Tighten predicates. From-SVN: r76928 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ef7b9f2a1e..87f47288824 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-30 Eric Botcazou + + PR target/11475 + * config/sparc/sparc.md (movhi_lo_sum): Tighten predicates. + 2004-01-29 Jakub Jelinek * 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 08434789c5a..850b2f56242 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 59b18f73dd3..e00e0742e7f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-01-30 Eric Botcazou + + * gcc.c-torture/compile/20040130-1.c: New test. + 2004-01-29 Geoffrey Keating * 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 00000000000..0edcea44ede --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20040130-1.c @@ -0,0 +1,24 @@ +/* PR target/11475 */ +/* Origin: */ + +/* 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; +}