Bug 37680 - ICE: unable to generate reloads for: (insn:QI
Summary: ICE: unable to generate reloads for: (insn:QI
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.3.2
: P3 normal
Target Milestone: 4.4.0
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2008-09-30 10:23 UTC by Bernhard Reutner-Fischer
Modified: 2023-07-11 15:33 UTC (History)
3 users (show)

See Also:
Host: i386-pc-linux-gnu
Target: m68k-linux-uclibc
Build: i386-pc-linux-gnu
Known to work: 4.4.0
Known to fail: 4.3.2
Last reconfirmed: 2008-12-12 11:00:21


Attachments
reduced from linux-2.6.26.5/fs/ocfs2/alloc.c (2.26 KB, text/plain)
2008-09-30 10:24 UTC, Bernhard Reutner-Fischer
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Bernhard Reutner-Fischer 2008-09-30 10:23:35 UTC
Using built-in specs.
Target: m68k-linux-uclibc
Configured with: /there/toolchain_build_m68k/gcc-4.3.2/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=m68k-linux-uclibc --enable-languages=c,fortran --with-sysroot=/there/build_m68k/staging_dir --with-build-time-tools=/there/build_m68k/staging_dir/usr/m68k-linux-uclibc/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --with-gmp=/there/toolchain_build_m68k/gmp --with-mpfr=/there/toolchain_build_m68k/mpfr --disable-nls --enable-threads --disable-multilib --disable-libssp --disable-libssp --disable-libmudflap --disable-libgomp --enable-decimal-float=no
Thread model: posix
gcc version 4.3.2 (GCC) 
COLLECT_GCC_OPTIONS='-O2' '-fno-strength-reduce' '-fomit-frame-pointer' '-ffixed-a2' '-c' '-o' 'bug.o' '-w' '-v' '-m68020'
 /there/build_m68k/staging_dir/usr/bin/../libexec/gcc/m68k-linux-uclibc/4.3.2/cc1 -fpreprocessed ocfs2_alloc.14.i -quiet -dumpbase ocfs2_alloc.14.i -m68020 -auxbase-strip bug.o -O2 -w -version -fno-strength-reduce -fomit-frame-pointer -ffixed-a2 -o /tmp/ccPPnDEw.s
GNU C (GCC) version 4.3.2 (m68k-linux-uclibc)
	compiled by GNU C version 4.3.2, GMP version 4.2.2, MPFR version 2.3.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: e46c73a65794f9c9fe8cc606fdcc10e7
ocfs2_alloc.14.i: In function 'ocfs2_remove_extent':
ocfs2_alloc.14.i:196: error: unable to generate reloads for:
(insn:QI 147 146 148 14 ocfs2_alloc.14.i:99 (parallel [
            (set (cc0)
                (compare (reg:DI 5 %d5 [orig:56 D.1892 ] [56])
                    (reg:DI 0 %d0 [108])))
            (clobber (reg:DI 109))
        ]) 12 {*m68k.md:521} (expr_list:REG_DEAD (reg:DI 0 %d0 [108])
        (expr_list:REG_UNUSED (reg:DI 109)
            (nil))))
ocfs2_alloc.14.i:196: internal compiler error: in find_reloads, at reload.c:3767
Please submit a full bug report,
Comment 1 Bernhard Reutner-Fischer 2008-09-30 10:24:58 UTC
Created attachment 16431 [details]
reduced from linux-2.6.26.5/fs/ocfs2/alloc.c
Comment 2 Andreas Schwab 2008-12-11 22:47:27 UTC
Appears to be fixed in 4.4.
Comment 3 Andreas Schwab 2008-12-12 11:00:20 UTC
1d86aeab250b3c69bf826385bd6875cf0b9ea459 is first bad commit
commit 1d86aeab250b3c69bf826385bd6875cf0b9ea459
Author: mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Sep 11 13:56:30 2007 +0000

        * config/m68k/predicates.md (movsi_const0_operand,
        non_symbolic_call_operand): New predicates.
    
        * config/m68k/constraints.md: (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
        New constraints.
        * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
        Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
        CW, CZ, CS, Ap and Ac.
    
        * config/m68k/m68k.md (UNSPEC_IB): New constant.
        (constraints.md): New include.
        (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
        opx_mem, opy_mem, op_mem, guess, split): New attributes.
        (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
        Specify attributes.
        (pushdi): Add split.
        (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
        attributes.  Split tstsi_internal_68020_cf from it.
        (tstsi_internal_68020_cf): New pattern.
        (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
        (tst<mode>_cf): Specify attributea.
        (cmpsi_cf): Name pattern.  Specify attributes.
        (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
        (pushexthisi_const): Fix to use alternatives.  Specify
        attributes.
        (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
        from it.  Fix to use alternatives.  Specify attributes.
        (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
        (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
        attributes.
        (movsf_cf_soft): Specify attributes.
        (movdf_cf_soft): Add split.
        (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
        cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
        68k_extendqisi2, truncdfsf2_cf): Specify attributes.
        (truncdfsf2_68881): Name pattern.  Specify attributes.
        (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
        floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
        fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
        Specify attributes.
        (addsi3_5200): Fix to use alternatives.  Specify attributes.
        Add splits.
        (add<mode>3_cf, subdi_dishl32): Specify attributes.
        (subsi3): Add alternative for subq.l.  Specify attributes.
        (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
        (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
        attributes.
        (umulhisi3): Specify attributes.
        (mulhisisi3_z): Name pattern.  Specify attributes.
        (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
        sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
        subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
        bsetmemqi): Specify attributes.
        (bsetmemqi_ext): Name pattern.  Specify attributes.
        (bclrmemqi): Specify attributes.
        (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
        (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
        attributes.
        (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
        pattern.  Specify attributes.
        (jump): Specify attributes.
        (tablejump_internal): Name pattern.  Specify attributes.
        (call_value): Split into non_symbolic_call_value,
        symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
        alternatives.  Specify attributes.
        (non_symbolic_call_value, symbolic_call_value_jsr,
        symbolic_call_value_bsr): New patterns.
        (nop, return, unlink, indirect_jump): Specify attributes.
        (trap): Fix condition.  Specify attributes.
        (ib): New pattern.
    
        * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
        (override_options): Initialize it.  Initialize m68k_sched_cpu.
        (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
        (const_method): Make global, rename to m68k_const_method.
        (const_int_cost, output_move_const_into_data_reg): Update.
        (output_move_double): Parametrize to emit rtl code, rename to
        handle_move_double.
        (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
        emit_movsi): New static functions.
        (output_move_double): New function with semantics of old
        output_move_double.
        (m68k_emit_move_double): New function.
        (m68k_sched_cpu): New variable.
        (attr_op_type): New enum.
        (sched_guess_p): New variable.
        (sched_address_type, sched_operand_type, sched_attr_op_type):
        New static functions.
        (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
        m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
        (sched_branch_type): New static variable.
        (m68k_sched_branch_type): New function.
        * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
        (m68k_symbolic_call_var): Declare.
        (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
        (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
        m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
        m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
        Declare.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128377 138bc75d-0d04-0410-961f-82ee72b054a4

:040000 040000 aaa72bb753fe90634731936e44b753010468c5fb e221bc08d798d5401984f6d090ed64ff36ab81f0 M      gcc
Comment 4 Maxim Kuvyrkov 2008-12-12 11:28:11 UTC
This was fixed on trunk, presumably by IRA.  I've also checked a clean up patch that fixed this failure on 4.3.  See http://gcc.gnu.org/ml/gcc-patches/2008-11/msg01031.html.
Comment 5 Maxim Kuvyrkov 2008-12-12 11:31:30 UTC
Sorry, I've closed this bug hastily though the bug is not fixed 4.3 branch; the patch I was reffering to was only committed to trunk.
Comment 6 Andreas Schwab 2012-10-22 20:20:33 UTC
4.3 branch is closed.