Bug 18004 - [3.3 Regression] ICE in output_constant_pool_2 for aligned(1) float in struct
Summary: [3.3 Regression] ICE in output_constant_pool_2 for aligned(1) float in struct
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: 3.3.6
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2004-10-15 02:00 UTC by janis187
Modified: 2005-04-30 16:19 UTC (History)
1 user (show)

See Also:
Host:
Target: powerpc-*-*
Build:
Known to work: 4.0.0 3.4.3
Known to fail: 3.3.2 3.4.0
Last reconfirmed: 2005-04-25 02:29:27


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description janis187 2004-10-15 02:00:47 UTC
This test causes GCC to ICE in output_constant_pool_2 on powerpc64-linux
with -m32.  The ICE goes away without the typedef or if the variable
is local.
                                                                                
The test case is extracted from gcc.dg-struct-layout-1/t001.
                                                                                
  typedef float Tal1float __attribute__((aligned (1)));
  struct { Tal1float f; } s;
  void foo (void) { s.f = 1.0; }
                                                                                
When compiled with powerpc64-unknown-linux-gnu from 20041013 mainline:
                                                                                
elm3b11% /opt/gcc-nightly/mline/bin/gcc -m32 bug.c
bug.c: In function 'foo':
bug.c:3: internal compiler error: in output_constant_pool_2, at /varasm.c:3074
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
                                                                                
GCC for powerpc-eabisim gets the same ICE.
Comment 1 Andrew Pinski 2004-10-15 02:10:21 UTC
Confirmed on powerpc-darwin.
Comment 2 CVS Commits 2004-10-21 10:51:41 UTC
Subject: Bug 18004

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	aldyh@gcc.gnu.org	2004-10-21 10:51:31

Modified files:
	gcc            : expmed.c ChangeLog 

Log message:
	PR 18004.
	* expmed.c (store_bit_field): Pass original 'value' before
	recursing.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expmed.c.diff?cvsroot=gcc&r1=1.199&r2=1.200
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.5967&r2=2.5968

Comment 3 CVS Commits 2004-10-21 13:31:05 UTC
Subject: Bug 18004

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	aldyh@gcc.gnu.org	2004-10-21 13:30:59

Modified files:
	gcc            : ChangeLog expmed.c 

Log message:
	PR 18004.
	* expmed.c (store_bit_field): Pass original 'value' before
	recursing.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.668&r2=2.2326.2.669
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expmed.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.148.4.2&r2=1.148.4.3

Comment 4 CVS Commits 2005-04-30 16:01:53 UTC
Subject: Bug 18004

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_3-branch
Changes by:	gdr@gcc.gnu.org	2005-04-30 16:01:38

Modified files:
	gcc            : ChangeLog expmed.c 

Log message:
	* Apply:
	2004-10-21  Aldy Hernandez  <aldyh@redhat.com>
	
	PR target/18004.
	* expmed.c (store_bit_field): Pass original 'value' before
	recursing.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.16114.2.1065&r2=1.16114.2.1066
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expmed.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.128.2.1&r2=1.128.2.2

Comment 5 Gabriel Dos Reis 2005-04-30 16:19:04 UTC
Patch applied to 3.3.6.