From 5fddd9fe582272b47be32830d0fac43ba29cd3c8 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 30 Jan 2004 08:00:45 +0100 Subject: [PATCH] re PR target/11475 (reload ICE with bitfields) PR target/11475 * config/sparc/sparc.md (movhi_lo_sum): Tighten predicates. From-SVN: r76928 --- gcc/ChangeLog | 5 +++++ gcc/config/sparc/sparc.md | 8 ++++---- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.c-torture/compile/20040130-1.c | 24 ++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/20040130-1.c 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 + + 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 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 + + * 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 0000000..0edcea4 --- /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; +} -- 2.7.4