From 822a55a08e313229c340f6bf4b76c5f32b270d8e Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Thu, 4 Nov 2010 17:06:45 +0100 Subject: [PATCH] re PR middle-end/46292 (FAIL: gcc.c-torture/execute/vector-shift2.c compilation, -O3 -g) PR middle-end/46292 * lower-suberg.c (simplify_subreg_concatn): For VOIDmode elements, if the innermode is not vector mode, determine the mode of a subreg by using mode_for_size of inner_size. From-SVN: r166318 --- gcc/ChangeLog | 13 ++++++++++--- gcc/lower-subreg.c | 11 ++++++++--- gcc/testsuite/ChangeLog | 36 ++++++++++++++++++------------------ 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 71bd8b4edc3..b0618ac2095 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-11-03 Uros Bizjak + + PR middle-end/46292 + * lower-suberg.c (simplify_subreg_concatn): For VOIDmode elements, + if the innermode is not vector mode, determine the mode of a subreg + by using mode_for_size of inner_size. + 2010-11-04 Richard Guenther PR rtl-optimization/46183 @@ -100,9 +107,9 @@ 2010-11-03 Xinliang David Li - PR target/46200 - * tree-ssa-loop-ivopts.c (get_computation_cost_at): - Adjust cbase if the use stmt is after iv update. + PR target/46200 + * tree-ssa-loop-ivopts.c (get_computation_cost_at): + Adjust cbase if the use stmt is after iv update. 2010-11-03 Kaz Kojima diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 1c4e9adb004..3563cee0824 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -411,10 +411,15 @@ simplify_subreg_concatn (enum machine_mode outermode, rtx op, part = XVECEXP (op, 0, byte / inner_size); partmode = GET_MODE (part); - if (partmode == VOIDmode) + /* VECTOR_CSTs in debug expressions are expanded into CONCATN instead of + regular CONST_VECTORs. They have vector or integer modes, depending + on the capabilities of the target. Cope with them. */ + if (partmode == VOIDmode && VECTOR_MODE_P (innermode)) + partmode = GET_MODE_INNER (innermode); + else if (partmode == VOIDmode) { - gcc_assert (VECTOR_MODE_P (innermode)); - partmode = GET_MODE_INNER (innermode); + enum mode_class mclass = GET_MODE_CLASS (innermode); + partmode = mode_for_size (inner_size * BITS_PER_UNIT, mclass, 0); } final_offset = byte % inner_size; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0fa52176934..89a05356e3c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -89,15 +89,15 @@ * objc.dg/property/at-property-14.m: New. * objc.dg/property/at-property-15.m: New. * obj-c++.dg/property/at-property-14.mm: New. - * obj-c++.dg/property/at-property-15.mm: New. + * obj-c++.dg/property/at-property-15.mm: New. * objc.dg/foreach-6.m: Added a few more tests for valid and invalid iterating variables and collections. - + 2010-11-03 Xinliang David Li - PR target/46200 - * g++.dg/tree-ssa/ivopts-2.C: New test. + PR target/46200 + * g++.dg/tree-ssa/ivopts-2.C: New test. 2010-11-03 H.J. Lu @@ -153,7 +153,7 @@ 2010-11-03 Nicola Pero Implemented -fobjc-std=objc1 flag. - * objc.dg/fobjc-std-1.m: New. + * objc.dg/fobjc-std-1.m: New. * obj-c++.dg/fobjc-std-1.mm: New. 2010-11-03 Richard Guenther @@ -186,9 +186,9 @@ 2010-11-03 Nicola Pero * objc.dg/property/dotsyntax-1.m: New. - * objc.dg/property/dotsyntax-2.m: New. + * objc.dg/property/dotsyntax-2.m: New. * obj-c++.dg/property/dotsyntax-1.mm: New. - * obj-c++.dg/property/dotsyntax-2.mm: New. + * obj-c++.dg/property/dotsyntax-2.mm: New. 2010-11-03 Jakub Jelinek @@ -407,12 +407,12 @@ * obj-c++.dg/attributes/method-deprecated-3.mm: New. * obj-c++.dg/attributes/method-noreturn-1.mm: New. * obj-c++.dg/attributes/method-sentinel-1.mm: New. - * obj-c++.dg/attributes/method-format-1.mm: New. - + * obj-c++.dg/attributes/method-format-1.mm: New. + 2010-11-01 Nicola Pero * objc.dg/property/at-property-deprecated-1.m: New. - * obj-c++.dg/property/at-property-deprecated-1.mm: New. + * obj-c++.dg/property/at-property-deprecated-1.mm: New. 2010-11-01 Nicola Pero @@ -434,8 +434,8 @@ * objc.dg/property/at-property-12.m: New. * objc.dg/property/at-property-13.m: New. * obj-c++.dg/property/at-property-12.mm: New. - * obj-c++.dg/property/at-property-13.mm: New. - + * obj-c++.dg/property/at-property-13.mm: New. + 2010-11-01 Steven G. Kargl PR fortran/46152 @@ -516,7 +516,7 @@ * objc.dg/property/property-neg-4.m: Same change. * objc.dg/property/property-neg-5.m: Same change. * objc.dg/property/property-neg-7.m: Same change. - * objc.dg/property/property-1.m: Same change. + * objc.dg/property/property-1.m: Same change. * objc.dg/property/synthesize-1.m: Same change. * objc.dg/property/at-property-2.m: Same change. * objc.dg/property/at-property-4.m: Same change. @@ -526,7 +526,7 @@ @synthesize/@dynamic. Use the same code for GNU and NeXT runtime. * objc.dg/property/fsf-property-basic.m: Same change. * objc.dg/property/fsf-property-named-ivar.m: Same change. - + * objc.dg/property/at-property-5.m: New. * objc.dg/property/at-property-6.m: New. * objc.dg/property/at-property-7.m: New. @@ -545,7 +545,7 @@ * obj-c++.dg/property/property-neg-4.mm: Same change. * obj-c++.dg/property/property-neg-5.mm: Same change. * obj-c++.dg/property/property-neg-7.mm: Same change. - * obj-c++.dg/property/property-1.mm: Same change. + * obj-c++.dg/property/property-1.mm: Same change. * obj-c++.dg/property/synthesize-1.mm: Same change. * obj-c++.dg/property/at-property-2.mm: Same change. * obj-c++.dg/property/at-property-4.mm: Same change. @@ -555,9 +555,9 @@ @synthesize/@dynamic. Use the same code for GNU and NeXT runtime. * obj-c++.dg/property/fsf-property-basic.mm: Same change. * obj-c++.dg/property/fsf-property-named-ivar.mm: Same change. - + * obj-c++.dg/property/at-property-5.mm: New. - * obj-c++.dg/property/at-property-6.mm: New. + * obj-c++.dg/property/at-property-6.mm: New. * obj-c++.dg/property/at-property-7.mm: New. * obj-c++.dg/property/at-property-8.mm: New. * obj-c++.dg/property/at-property-9.mm: New. @@ -565,7 +565,7 @@ * obj-c++.dg/property/at-property-11.mm: New. * obj-c++.dg/property/synthesize-2.mm: New. * obj-c++.dg/property/dynamic-2.mm: New. - + 2010-10-29 Artjoms Sinkarovs Andrew Pinski -- 2.30.2