Summary: | ICE: in extract_insn, at recog.c:2109 (unrecognizable insn) when building Mesa on ARM | ||
---|---|---|---|
Product: | gcc | Reporter: | Thierry Reding <thierry.reding> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | NEW --- | ||
Severity: | normal | CC: | ramana, steven |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 4.6.2 | ||
Target Milestone: | --- | ||
Host: | Target: | arm-unknown-linux-gnueabi | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2012-01-21 00:00:00 | |
Attachments: |
Preprocessed source.
reduced testcase |
Description
Thierry Reding
2012-01-17 13:58:50 UTC
Created attachment 26403 [details]
reduced testcase
Reduced testcase.
Configured with :
--target=arm-linux-gnueabi --with-cpu=cortex-a9 --with-fpu=neon --with-float=softfp -
Command line options. :
./xgcc -B`pwd` -S -O2 -fPIC -mapcs -O2 -Wall -ffast-math -mtune=cortex-a9 besttry.c
Ramana
> Configured with :
>
> --target=arm-linux-gnueabi --with-cpu=cortex-a9 --with-fpu=neon
> --with-float=softfp -
>
> Command line options. :
>
> ./xgcc -B`pwd` -S -O2 -fPIC -mapcs -O2 -Wall -ffast-math
> -mtune=cortex-a9 besttry.c
Hi Ramana,
I can confirm that your reduced testcase triggers the ICE on the
cross-compiler that I use, although I need to add the following
command-line options:
-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp
I guess you get these implicitly because of the different options
that you passed at configuration.
Thanks for looking at this.
Thierry
(In reply to comment #0) > However, the issue is no longer present in the > latest 4.7 snapshot (tested with a custom toolchain based on gcc-4.7-20120114). Using Ramana's reduced test case I still get the ICE with gcc-4.7-20120218. This bug happens in reload... With slightly modified test case (manually inlined apply_aa_coverage()): BEFORE RELOAD: (insn 142 133 314 9 (set (subreg:SI (reg:HI 283) 0) (unsigned_fix:SI (fix:SF (reg/v:SF 226 [ a ])))) besttry.c:73 682 {fixuns_truncsfsi2} (expr_list:REG_DEAD (reg/v:SF 226 [ a ]) (nil))) Reloads for insn # 142 Reload 0: reload_in (SI) = (plus:SI (reg/f:SI 11 fp) (const_int -65536 [0xffffffffffff0000])) CORE_REGS, RELOAD_FOR_OUTPUT_ADDRESS (opnum = 0) reload_in_reg: (plus:SI (reg/f:SI 11 fp) (const_int -65536 [0xffffffffffff0000])) reload_reg_rtx: (reg:SI 12 ip) Reload 1: GENERAL_REGS, RELOAD_FOR_OUTPUT_ADDRESS (opnum = 0), can't combine, secondary_reload_p reload_reg_rtx: (reg:DI 8 r8) Reload 2: GENERAL_REGS, RELOAD_FOR_OUTPUT_ADDRESS (opnum = 0), can't combine, secondary_reload_p reload_reg_rtx: (reg:SI 10 sl) secondary_out_reload = 1 secondary_out_icode = reload_outhi Reload 3: reload_out (SI) = (subreg:SI (mem/c:HI (plus:SI (plus:SI (reg/f:SI 11 fp) (const_int -65536 [0xffffffffffff0000])) (const_int -52 [0xffffffffffffffcc])) [14 %sfp+-65544 S2 A64]) 0) VFP_LO_REGS, RELOAD_FOR_OUTPUT (opnum = 0) reload_out_reg: (subreg:SI (reg:HI 283) 0) reload_reg_rtx: (reg:SI 77 s14) secondary_out_reload = 2 AFTER RELOAD: (insn 142 133 355 9 (set (reg:SI 77 s14) (unsigned_fix:SI (fix:SF (reg/v:SF 78 s15 [orig:226 a ] [226])))) besttry.c:73 682 {fixuns_truncsfsi2} (nil)) (insn 355 142 356 9 (set (reg:SI 12 ip) (plus:SI (reg/f:SI 11 fp) (const_int -65536 [0xffffffffffff0000]))) besttry.c:73 4 {*arm_addsi3} (nil)) (insn 356 355 357 9 (set (reg:HI 10 sl) (reg:SI 77 s14)) besttry.c:73 -1 (nil)) (insn 357 356 358 9 (set (mem:QI (plus:SI (reg:SI 12 ip) (const_int -52 [0xffffffffffffffcc])) [0 S1 A8]) (reg:QI 10 sl)) besttry.c:73 -1 (nil)) (insn 358 357 359 9 (set (reg:SI 8 r8) (lshiftrt:SI (subreg:SI (reg:HI 10 sl) 0) (const_int 8 [0x8]))) besttry.c:73 -1 (nil)) (insn 359 358 314 9 (set (mem:QI (plus:SI (reg:SI 12 ip) (const_int -51 [0xffffffffffffffcd])) [0 S1 A8]) (reg:QI 8 r8)) besttry.c:73 -1 (nil)) besttry.c: In function ‘_swrast_write_rgba_span’: besttry.c:108:1: error: unrecognizable insn: (insn 356 355 357 9 (set (reg:HI 10 sl) (reg:SI 77 s14)) besttry.c:73 -1 (nil)) besttry.c:108:1: internal compiler error: in extract_insn, at recog.c:2123 Looks like a secondary reload failed. |