Bug 19819 - ICE when compiling aegis 4.20
Summary: ICE when compiling aegis 4.20
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 3.4.3
: P2 normal
Target Milestone: 3.4.4
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2005-02-08 09:35 UTC by Ralf Fassel
Modified: 2005-03-01 05:12 UTC (History)
3 users (show)

See Also:
Host: hppa2.0-hp-hpux10.20
Target: hppa2.0-hp-hpux10.20
Build: hppa2.0-hp-hpux10.20
Known to work:
Known to fail:
Last reconfirmed: 2005-02-27 03:08:42


Attachments
preprocessed source file (18.96 KB, application/x-bzip2)
2005-02-08 09:59 UTC, Ralf Fassel
Details
preprocessed assembly source (1.53 KB, application/x-bzip2)
2005-02-08 10:01 UTC, Ralf Fassel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ralf Fassel 2005-02-08 09:35:06 UTC
g++ runs into an ICE when compiling aegis 4.20 on HP 10.20

/software/gcc/3.4.3/HP-UX-B.10/bin/g++ -Iaeget -Ilibaegis -Icommon
-I/work/include -O -c \
	aeget/get/file/metrics.cc
aeget/get/file/metrics.cc: In function `void get_file_metrics(change_ty*,
string_ty*, string_list_ty*)':
aeget/get/file/metrics.cc:382: error: unrecognizable insn:
(insn 2201 2200 2199 114 (set (reg:DF 68 %fr22)
        (mem/s/j:DF (plus:SI (reg:SI 21 %r21)
                (reg:SI 1 %r1)) [0 <variable>.data S8 A64])) -1 (nil)
    (nil))
aeget/get/file/metrics.cc:382: internal compiler error: in extract_insn, at
recog.c:2083


Now how to attach the preprocessed source file...?
Comment 1 Ralf Fassel 2005-02-08 09:59:18 UTC
Created attachment 8140 [details]
preprocessed source file

preprocessed source with commandline:

 /software/gcc/3.4.3/HP-UX-B.10/bin/g++ -v -save-temps -Iaeget -Ilibaegis
-Icommon -I/work/include -O -c		  aeget/get/file/metrics.cc

Reading specs from
/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/specs

Configured with:
/tmp_mnt/hosts/jupiter/disk4/tmp/ralf/Software/gcc-3.4.3/configure
--prefix=/software/gcc/3.4.3 --exec-prefix=/software/gcc/3.4.3/HP-UX-B.10
--with-local-prefix=/work --enable-languages=c,c++ --enable-shared
--with-gnu-as --with-as=/work/bin/as
Thread model: single
gcc version 3.4.3

/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/libexec/gcc/hppa2.0-hp-hpux10.20/3.4.3/cc1plus
-E -quiet -v -Iaeget -Ilibaegis -Icommon -I/work/include -iprefix
/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/
aeget/get/file/metrics.cc -O -o metrics.ii
ignoring nonexistent directory
"/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/../../../../hppa2.0-hp-hpux10.20/include"

ignoring duplicate directory "/software/gcc/3.4.3/include/c++/3.4.3"
ignoring duplicate directory
"/software/gcc/3.4.3/include/c++/3.4.3/hppa2.0-hp-hpux10.20"
ignoring duplicate directory "/software/gcc/3.4.3/include/c++/3.4.3/backward"
ignoring duplicate directory
"/software/gcc/3.4.3/HP-UX-B.10/lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/include"
ignoring nonexistent directory
"/software/gcc/3.4.3/HP-UX-B.10/hppa2.0-hp-hpux10.20/include"
ignoring duplicate directory "/work/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 aeget
 libaegis
 common

/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/../../../../../include/c++/3.4.3


/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/../../../../../include/c++/3.4.3/hppa2.0-hp-hpux10.20


/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/../../../../../include/c++/3.4.3/backward


/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/bin/../lib/gcc/hppa2.0-hp-hpux10.20/3.4.3/include

 /work/include
 /software/gcc/3.4.3/include
 /usr/include
End of search list.

/tmp_mnt/software/software/gcc/3.4.3/HP-UX-B.10/libexec/gcc/hppa2.0-hp-hpux10.20/3.4.3/cc1plus
-fpreprocessed metrics.ii -quiet -dumpbase metrics.cc -auxbase metrics -O
-version -o metrics.s
GNU C++ version 3.4.3 (hppa2.0-hp-hpux10.20)
	compiled by GNU C version 3.4.3.
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32768
aeget/get/file/metrics.cc: In function `void get_file_metrics(change_ty*,
string_ty*, string_list_ty*)':
aeget/get/file/metrics.cc:382: error: unrecognizable insn:
(insn 2201 2200 2199 114 (set (reg:DF 68 %fr22)
	(mem/s/j:DF (plus:SI (reg:SI 21 %r21)
		(reg:SI 1 %r1)) [0 <variable>.data S8 A64])) -1 (nil)
    (nil))
aeget/get/file/metrics.cc:382: internal compiler error: in extract_insn, at
recog.c:2083
Please submit a full bug report,
with preprocessed source if appropriate.
Comment 2 Ralf Fassel 2005-02-08 10:01:15 UTC
Created attachment 8141 [details]
preprocessed assembly source

assembly source (same commandline as .ii attachment)
Comment 3 John David Anglin 2005-02-27 19:37:54 UTC
This appears to be a reload problem.  The reason the insn isn't
recognized is that the REG_POINTER flag (f/frame-related) has been
lost.  Under HP-UX the base register must be marked with the
REG_POINTER flag because the base register is used to determine
which space register to use for the insn.  This matters under
HP-UX because the space registers forthe four memory quadrants
contain different values.

After the lreg pass, we have:

(note 1056 1055 1057 114 NOTE_INSN_DELETED)

(insn 1057 1056 1855 114 (set (reg/v:DF 237 [ x ])
        (mem/s/j:DF (plus:SI (reg:SI 241)
                (reg/v/f:SI 213 [ rp ])) [0 <variable>.data S8 A64])) 67 {*pa.md
:3791} (insn_list 1055 (nil))
    (nil))

The ICE occurs in the greg pass where we now have the following rtl:

(note 1056 2195 2197 114 NOTE_INSN_DELETED)

(insn 2197 1056 2198 114 (set (reg:SI 1 %r1)
        (mem:SI (plus:SI (reg/f:SI 30 %r30)
                (const_int -292 [0xfffffedc])) [0 rp+0 S4 A32])) 37 {*pa.md:2265} 
(nil)
    (nil))

(insn 2198 2197 2196 114 (set (reg:DF 68 %fr22)
        (mem/s/j:DF (plus:SI (reg:SI 21 %r21)
                (reg:SI 1 %r1)) [0 <variable>.data S8 A64])) -1 (nil)
    (nil))

At the moment, it's not clear where the flag is lost.
Comment 4 GCC Commits 2005-03-01 03:24:26 UTC
Subject: Bug 19819

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	danglin@gcc.gnu.org	2005-03-01 03:24:17

Modified files:
	gcc            : ChangeLog 
	gcc/config/pa  : pa.h 

Log message:
	PR target/19819
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
	and after reload in REG+REG indexed addresses without REG_POINTER
	set in the base and not set in the index.

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.808&r2=2.2326.2.809
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/pa/pa.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.208.4.7&r2=1.208.4.8

Comment 5 GCC Commits 2005-03-01 04:34:08 UTC
Subject: Bug 19819

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	danglin@gcc.gnu.org	2005-03-01 04:34:01

Modified files:
	gcc            : ChangeLog 
	gcc/config/pa  : pa.h 

Log message:
	PR target/19819
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
	and after reload in REG+REG indexed addresses without REG_POINTER
	set in the base and not set in the index.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7620&r2=2.7621
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/pa/pa.h.diff?cvsroot=gcc&r1=1.242&r2=1.243

Comment 6 GCC Commits 2005-03-01 05:00:24 UTC
Subject: Bug 19819

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-4_0-branch
Changes by:	danglin@gcc.gnu.org	2005-03-01 05:00:12

Modified files:
	gcc            : ChangeLog 
	gcc/config/pa  : pa.h 

Log message:
	PR target/19819
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
	and after reload in REG+REG indexed addresses without REG_POINTER
	set in the base and not set in the index.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.11&r2=2.7592.2.12
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/pa/pa.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.242&r2=1.242.8.1

Comment 7 John David Anglin 2005-03-01 05:10:36 UTC
Fixed in CVS.