[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Bug c++/11295] [3.4/3.5 regression] ICE in cp_expr_size, at cp/cp-lang.c:314 when using a non-trivial object in a compound statement expression



------- Additional Comments From wilson at specifixinc dot com  2004-02-07 09:17 -------
Subject: Re:  [3.4/3.5 regression] ICE in cp_expr_size, at
 cp/cp-lang.c:314 when using a non-trivial object in a compound statement
 expression

schwab at suse dot de wrote:
> testsuite/g++.dg/ext/stmtexpr1.C 

Sorry.  I misread one of your earlier emails, and was confused about 
what the actual testcase was here.  Explicitly mentioning the testcase 
name helped.

The following patch seems to work, and also seems to make sense.  I have 
only tested this with a cross compiler build, and only against the given 
testcase.

This testcase is apparently IA-64 specific only because IA-64 does not 
have REG+OFFSET memory addresses, and hence the !rtx_equal_p(temp, 
target) test in store_expr fails much more often for IA-64 than other 
targets.
2004-02-07  James E Wilson  <wilson@specifixinc.com>

	* c-common.c (c_expand_expr, case STMT_EXPR): Change expand_expr call
	to expand_expr_real call, and pass in alt_rtl as last argument.

Index: c-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-common.c,v
retrieving revision 1.480
diff -p -r1.480 c-common.c
*** c-common.c	3 Feb 2004 11:22:38 -0000	1.480
--- c-common.c	7 Feb 2004 09:10:11 -0000
*************** c_expand_expr (tree exp, rtx target, enu
*** 4106,4112 ****
  	expand_stmt (STMT_EXPR_STMT (exp));
  	expand_end_stmt_expr (rtl_expr);
  
! 	result = expand_expr (rtl_expr, target, tmode, modifier);
  	if (preserve_result && GET_CODE (result) == MEM)
  	  {
  	    if (GET_MODE (result) != BLKmode)
--- 4106,4112 ----
  	expand_stmt (STMT_EXPR_STMT (exp));
  	expand_end_stmt_expr (rtl_expr);
  
! 	result = expand_expr_real (rtl_expr, target, tmode, modifier, alt_rtl);
  	if (preserve_result && GET_CODE (result) == MEM)
  	  {
  	    if (GET_MODE (result) != BLKmode)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11295

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.



Reply to: