Bug 47551 - ICE when reloading neon registers from out-of-range offsets
Summary: ICE when reloading neon registers from out-of-range offsets
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.6.0
: P3 normal
Target Milestone: ---
Assignee: Richard Sandiford
URL: http://gcc.gnu.org/ml/gcc-patches/201...
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-31 11:54 UTC by Richard Sandiford (Linaro)
Modified: 2011-03-30 15:14 UTC (History)
2 users (show)

See Also:
Host:
Target: arm
Build:
Known to work:
Known to fail:
Last reconfirmed: 2011-02-02 09:16:47


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Sandiford (Linaro) 2011-01-31 11:54:23 UTC
The ref_vldX.c test from:

http://gitorious.org/arm-neon-tests/arm-neon-tests

fails when compiled with -O0 -marm:

(insn 1817 1816 1818 2 /home/export/usr/gcc-linaro/H-x86_64-unknown-linux-gnu/bin/../lib/gcc/arm-linux-gnueabi/4.5.2/include/arm_neon.h:921
5 (parallel [
            (set (reg:CI 303 [ D.14795 ])
                (unspec:CI [
                        (mem:CI (reg:SI 3 r3 [1023]) [0 S48 A64])
                        (reg:CI 303 [ D.14795 ])
                        (unspec:V8HI [
                                (const_int 0 [0x0])
                            ] 191)
                    ] 106))
            (set (reg:SI 3 r3 [1023])
                (plus:SI (reg:SI 3 r3 [1023])
                    (const_int 24 [0x18])))
        ]) 1614 {neon_vld3qav8hi} (nil))
ref_vldX.c:157: confused by earlier errors, bailing out

This is due to a bug in the ARM secondary_reload code.
Comment 1 Richard Sandiford 2011-03-30 15:00:50 UTC
Author: rsandifo
Date: Wed Mar 30 15:00:44 2011
New Revision: 171730

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=171730
Log:
gcc/
	PR target/47551
	* config/arm/arm.c (coproc_secondary_reload_class): Handle
	structure modes.  Don't check neon_vector_mem_operand for
	vector or structure modes.

gcc/testsuite/
	PR target/47551
	* gcc.target/arm/neon-modes-2.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/arm/neon-modes-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.c
    trunk/gcc/testsuite/ChangeLog
Comment 2 Richard Sandiford 2011-03-30 15:02:27 UTC
Fixed on trunk.
Comment 3 Richard Sandiford 2011-03-30 15:14:54 UTC
Fixed on trunk.