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...?
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.
Created attachment 8141 [details] preprocessed assembly source assembly source (same commandline as .ii attachment)
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.
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
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
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
Fixed in CVS.