This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Regression


This code:

  void f(char const volatile c) {}

Causes an ICE on i686-pc-linux-gnu when compiled with -O:

bash-2.05$ ~/dev/gcc-3.1/objdir/gcc/cc1 -O test.c
 f
test.c: In function `f':
test.c:1: Internal compiler error in change_address_1, at emit-rtl.c:1910

This is caused by Kenner's change:

revision 1.318
date: 2001/12/29 21:35:01;  author: kenner;  state: Exp;  lines: +1 -8
branches:  1.318.2;
	* expr.c (store_field): Use adjust_address, not PUT_MODE.
	(expand_expr, case VIEW_CONVERT_EXPR): Likewise.
	* reload1.c (eliminate_regs, case SUBREG): Likewise, but use
	adjust_address_nv.
	* varasm.c (make_decl_rtl): Likewise.
	* integrate.c (copy_rtx_and_substitute, case MEM): Likewise, but use
	replace_equiv_address_nv.

We end up passing a SUBREG to adjust_address_nv.

I cannot seem to file a new GNATS bug from Mozilla at the moment; the
server times out.  I have confirmed this is a regression from GCC 3.0.

Kenner, we need a fix for this ASAP.

-- 
Mark Mitchell                mark@codesourcery.com
CodeSourcery, LLC            http://www.codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]