From 82294ec1a9a71e57dc4821649643026d27860701 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 20 Jan 2012 23:06:42 +0100 Subject: [PATCH] re PR tree-optimization/51914 ([4.7] vect-intfloat-conversion4a/b tests fail for arm-linux-gnueabi) PR tree-optimization/51914 * tree-vect-stmts.c (vectorizable_conversion): For cvt_type && modifier == WIDEN, put temporary with cvt_type at the beginning of vec_dsts and set vec_dest to temporary with vectype_out. From-SVN: r183356 --- gcc/ChangeLog | 8 ++++++++ gcc/tree-vect-stmts.c | 10 +++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8631571342..22a3a0fd145 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-01-20 Jakub Jelinek + + PR tree-optimization/51914 + * tree-vect-stmts.c (vectorizable_conversion): For + cvt_type && modifier == WIDEN, put temporary with cvt_type + at the beginning of vec_dsts and set vec_dest to temporary + with vectype_out. + 2012-01-20 Eric Botcazou * cfgrtl.c (rtl_dump_bb): Do not dump insns for {ENTRY|EXIT}_BLOCK. diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 4deb16bed07..8e2b5fea728 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1,5 +1,5 @@ /* Statement Analysis and Transformation for Vectorization - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. Contributed by Dorit Naishlos and Ira Rosen @@ -2420,7 +2420,9 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, from supportable_*_operation, and store them in the correct order for future use in vect_create_vectorized_*_stmts (). */ vec_dsts = VEC_alloc (tree, heap, multi_step_cvt + 1); - vec_dest = vect_create_destination_var (scalar_dest, vectype_out); + vec_dest = vect_create_destination_var (scalar_dest, + (cvt_type && modifier == WIDEN) + ? cvt_type : vectype_out); VEC_quick_push (tree, vec_dsts, vec_dest); if (multi_step_cvt) @@ -2435,7 +2437,9 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, } if (cvt_type) - vec_dest = vect_create_destination_var (scalar_dest, cvt_type); + vec_dest = vect_create_destination_var (scalar_dest, + modifier == WIDEN + ? vectype_out : cvt_type); if (!slp_node) { -- 2.30.2