https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90530

            Bug ID: 90530
           Summary: [10 Regression] Invalid SUBREG insn generated by
                    reload
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: danglin at gcc dot gnu.org
  Target Milestone: ---
              Host: hppa64-hp-hpux11.11
            Target: hppa64-hp-hpux11.11
             Build: hppa64-hp-hpux11.11

In stage2,

/test/gnu/gcc/objdir/./prev-gcc/xg++ -B/test/gnu/gcc/objdir/./prev-gcc/
-B/opt/g
nu64/gcc/gcc-10/hppa64-hp-hpux11.11/bin/ -nostdinc++
-B/test/gnu/gcc/objdir/prev
-hppa64-hp-hpux11.11/libstdc++-v3/src/.libs
-B/test/gnu/gcc/objdir/prev-hppa64-h
p-hpux11.11/libstdc++-v3/libsupc++/.libs 
-I/test/gnu/gcc/objdir/prev-hppa64-hp-
hpux11.11/libstdc++-v3/include/hppa64-hp-hpux11.11 
-I/test/gnu/gcc/objdir/prev-
hppa64-hp-hpux11.11/libstdc++-v3/include 
-I/test/gnu/gcc/gcc/libstdc++-v3/libsu
pc++ -L/test/gnu/gcc/objdir/prev-hppa64-hp-hpux11.11/libstdc++-v3/src/.libs
-L/t
est/gnu/gcc/objdir/prev-hppa64-hp-hpux11.11/libstdc++-v3/libsupc++/.libs
-fno-PI
E -c   -g -O2 -fno-checking -DIN_GCC     -fno-exceptions -fno-rtti
-fasynchronou
s-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual
-Wmissing-fo
rmat-attribute -Woverloaded-virtual -pedantic -Wno-long-long
-Wno-variadic-macro
s -Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -I. -I.
-I../../g
cc/gcc -I../../gcc/gcc/. -I../../gcc/gcc/../include -I./../intl
-I../../gcc/gcc/
../libcpp/include -I/opt/gnu64/gcc/gmp/include  -I../../gcc/gcc/../libdecnumber
-I../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber
-I../../gcc/gcc/../libback
trace   -o expmed.o -MT expmed.o -MMD -MP -MF ./.deps/expmed.TPo
../../gcc/gcc/e
xpmed.c
../../gcc/gcc/expmed.c: In function 'void init_expmed()':
../../gcc/gcc/expmed.c:326:1: error: unrecognizable insn:
  326 | }
      | ^
(insn 3285 3284 3286 4 (set (reg:SI 52 %fr24)
        (subreg:SI (reg:DI 50 %fr22) 4)) -1
     (nil))
during RTL pass: reload
../../gcc/gcc/expmed.c:326:1: internal compiler error: in extract_insn, at
recog.c:2310
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.

This ICE was introduced in r270902:

2019-05-06  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/90316
        * tree-ssa-alias.c (maybe_skip_until): Pass in target BB,
        compute target on demand.
        (get_continuation_for_phi): Remove code walking stmts to
        get to a target virtual operand which could end up being
        quadratic.

At first I thought this was a latent target issue, but
pa_can_change_mode_class() doesn't allow mode changes for for floating
point registers and it doesn't help to try to generate a secondary reload
in pa_secondary_reload() for SUBREGs.  There's already code in
pa_emit_sequence() to handle reloading SUBREGs.

Reply via email to