Bug 52633 - [4.7/4.8 Regression] Compiler ICE in vect_is_simple_use_1 (ARM)
Summary: [4.7/4.8 Regression] Compiler ICE in vect_is_simple_use_1 (ARM)
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.7.0
: P2 normal
Target Milestone: 4.7.1
Assignee: Ulrich Weigand
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-20 09:05 UTC by Juha Kallioinen
Modified: 2012-05-04 14:59 UTC (History)
1 user (show)

See Also:
Host:
Target: armv7hl-*-gnueabi
Build:
Known to work: 4.6.3, 4.8.0
Known to fail: 4.7.0
Last reconfirmed: 2012-03-23 00:00:00


Attachments
Failing test case (253 bytes, application/octet-stream)
2012-03-20 09:05 UTC, Juha Kallioinen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Juha Kallioinen 2012-03-20 09:05:03 UTC
Created attachment 26928 [details]
Failing test case

Here's another instance of the failure that has been reported before.

The attached test case fails when built with -O1 -ftree-vectorize -mfpu=neon

This was tested with a compiler built from gcc-4.7-20120225.tar.bz2 sources.

...
bin/armv7hl-pc-linux-gnueabi-gcc -O1 -ftree-vectorize -mfpu=neon minimal-testcase.i -c
minimal-testcase.i: In function 'lsp_quant_nb':
minimal-testcase.i:14:6: internal compiler error: in vect_is_simple_use_1, at tree-vect-stmts.c:6057
Please submit a full bug report,
with preprocessed source if appropriate.
...

This does not fail with gcc 4.6.3.
Comment 1 Richard Biener 2012-04-13 13:10:40 UTC
I suppose also broken on trunk.
Comment 2 Ulrich Weigand 2012-04-24 16:52:59 UTC
Some more details on what's going on here:
http://gcc.gnu.org/ml/gcc-patches/2012-04/msg01486.html
Comment 3 Ulrich Weigand 2012-05-04 12:46:14 UTC
Author: uweigand
Date: Fri May  4 12:46:04 2012
New Revision: 187158

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187158
Log:
	gcc/
	PR tree-optimization/52633
	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of
	vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern.
	(vect_recog_over_widening_pattern): Remove handling of code that was
	already detected as over-widening pattern.  Remove special handling
	of "unsigned" cases.  Instead, support general case of conversion
	of the shift result to another type.

	gcc/testsuite/
	PR tree-optimization/52633
	* gcc.dg/vect/vect-over-widen-1.c: Two patterns should now be
	recognized as widening shifts instead of over-widening.
	* gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise.
	* gcc.dg/vect/vect-over-widen-4.c: Likewise.
	* gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise.
	* gcc.target/arm/pr52633.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/arm/pr52633.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
    trunk/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
    trunk/gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
    trunk/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
    trunk/gcc/tree-vect-patterns.c
Comment 4 Ulrich Weigand 2012-05-04 12:49:02 UTC
Fixed.
Comment 5 Richard Biener 2012-05-04 13:11:53 UTC
Please also fix the 4.7 branch.
Comment 6 Ulrich Weigand 2012-05-04 14:56:52 UTC
Author: uweigand
Date: Fri May  4 14:56:48 2012
New Revision: 187162

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=187162
Log:
2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	Backport from mainline:
 
 	2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	PR tree-optimization/52633
 	* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Swap order of
 	vect_recog_widen_shift_pattern and vect_recog_over_widening_pattern.
 	(vect_recog_over_widening_pattern): Remove handling of code that was
 	already detected as over-widening pattern.  Remove special handling
 	of "unsigned" cases.  Instead, support general case of conversion
 	of the shift result to another type.
 
 	2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	* tree-vect-patterns.c (vect_single_imm_use): New function.
 	(vect_recog_widen_mult_pattern): Use it instead of open-coding loop.
 	(vect_recog_over_widening_pattern): Likewise.
 	(vect_recog_widen_shift_pattern): Likewise.
 
 	2012-04-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	PR tree-optimization/52870
 	* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Verify that
 	presumed pattern statement is within the same loop or basic block.
 
2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	Backport from mainline:
 
 	2012-05-04  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	PR tree-optimization/52633
 	* gcc.dg/vect/vect-over-widen-1.c: Two patterns should now be
 	recognized as widening shifts instead of over-widening.
 	* gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise.
 	* gcc.dg/vect/vect-over-widen-4.c: Likewise.
 	* gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise.
 	* gcc.target/arm/pr52633.c: New test.
 
 	2012-04-10  Ulrich Weigand  <ulrich.weigand@linaro.org>
 
 	PR tree-optimization/52870
 	* gcc.dg/vect/pr52870.c: New test.

Added:
    branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/vect/pr52870.c
    branches/gcc-4_7-branch/gcc/testsuite/gcc.target/arm/pr52633.c
Modified:
    branches/gcc-4_7-branch/gcc/ChangeLog
    branches/gcc-4_7-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
    branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
    branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
    branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
    branches/gcc-4_7-branch/gcc/tree-vect-patterns.c
Comment 7 Ulrich Weigand 2012-05-04 14:59:23 UTC
Backported to 4.7.  (This incidentally also fixes PR 52870, even though we don't have a test case exposing that problem on 4.7 ...)