Bug 23196 - [4.1 Regression] ICE instantiate_virtual_regs_in_insn when -fforce-addr used
Summary: [4.1 Regression] ICE instantiate_virtual_regs_in_insn when -fforce-addr used
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.1.0
: P2 normal
Target Milestone: 4.1.0
Assignee: Richard Henderson
URL:
Keywords: ice-on-valid-code, monitored
Depends on:
Blocks:
 
Reported: 2005-08-02 10:57 UTC by Jonathan Briggs
Modified: 2005-08-02 20:46 UTC (History)
2 users (show)

See Also:
Host:
Target: i?86-*-*, x86_64-*-*
Build:
Known to work:
Known to fail:
Last reconfirmed: 2005-08-02 17:43:23


Attachments
preprocessed source to reproduce (28.43 KB, text/x-csrc)
2005-08-02 10:59 UTC, Jonathan Briggs
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Briggs 2005-08-02 10:57:38 UTC
# gcc -v
Using built-in specs.
Target: x86_64-pc-linux-gnu
Configured with:
/var/tmp/portage/gcc-4.1.0_beta20050730/work/gcc-4.1-20050730/configure
--enable-version-specific-runtime-libs --prefix=/usr
--bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.0-beta20050730
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.0-beta20050730/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.0-beta20050730
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.0-beta20050730/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.0-beta20050730/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.0-beta20050730/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --disable-libunwind-exceptions --enable-multilib
--disable-libgcj --enable-languages=c,c++,f95 --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.0 20050730 (experimental)

 # gcc -march=athlon64 -O1 -fforce-addr    -c /tmp/j1.c
rlogin.c: In function 'do_rlogin':
rlogin.c:181: error: unrecognizable insn:
(insn 116 187 118 13 (parallel [
            (set (mem/s/j:SI (reg/f:DI 102) [0 termio.c_iflag+0 S4 A64])
                (ior:SI (mem/s/j:SI (reg/f:DI 103) [0 termio.c_iflag+0 S4 A64])
                    (const_int 1280 [0x500])))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))
rlogin.c:181: internal compiler error: in instantiate_virtual_regs_in_insn, at
function.c:1539

j1.c will be attached.  (It's a preprocessed rlogin.c from the "shadow" package)
Comment 1 Jonathan Briggs 2005-08-02 10:59:36 UTC
Created attachment 9410 [details]
preprocessed source to reproduce
Comment 2 Volker Reichelt 2005-08-02 11:16:54 UTC
Also happens on i686-pc-linux-gnu.
Reducing.
Comment 3 Volker Reichelt 2005-08-02 11:26:58 UTC
Confirmed.
Reduced testcase (compile with "-O -fforce-addr"):

=================
void foo()
{
  char c;

  c |= 1;
  bar(&c);
}
=================
Comment 4 GCC Commits 2005-08-02 20:39:30 UTC
Subject: Bug 23196

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rth@gcc.gnu.org	2005-08-02 20:39:24

Modified files:
	gcc            : ChangeLog explow.c 
Added files:
	gcc/testsuite/gcc.c-torture/compile: 20050802-1.c 

Log message:
	PR 23196
	* explow.c (memory_address): Remove special-case for
	virtual_stack_vars_rtx and virtual_incoming_args_rtx.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9638&r2=2.9639
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/explow.c.diff?cvsroot=gcc&r1=1.148&r2=1.149
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/20050802-1.c.diff?cvsroot=gcc&r1=NONE&r2=1.1

Comment 5 Richard Henderson 2005-08-02 20:46:47 UTC
Fixed.