From 6b41190941cfa45ea129a7749c81d45115758712 Mon Sep 17 00:00:00 2001 From: rguenth Date: Thu, 17 Jun 2010 12:22:22 +0000 Subject: [PATCH] 2010-06-17 Richard Guenther * gimplify.c (gimplify_bind_expr): Always promote complex and vector variables to registers if possible. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160903 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/gimplify.c | 11 +++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30c4dca091d..2f93800cbab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2010-06-17 Richard Guenther + * gimplify.c (gimplify_bind_expr): Always promote complex + and vector variables to registers if possible. + +2010-06-17 Richard Guenther + * expr.c (get_inner_reference): Use double_int for bit_offset calculation. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 9d2cf8634dc..a374bdaec5f 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1153,14 +1153,9 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p) /* Preliminarily mark non-addressed complex variables as eligible for promotion to gimple registers. We'll transform their uses - as we find them. - We exclude complex types if not optimizing because they can be - subject to partial stores in GNU C by means of the __real__ and - __imag__ operators and we cannot promote them to total stores - (see gimplify_modify_expr_complex_part). */ - if (optimize - && (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE - || TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE) + as we find them. */ + if ((TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE + || TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE) && !TREE_THIS_VOLATILE (t) && (TREE_CODE (t) == VAR_DECL && !DECL_HARD_REGISTER (t)) && !needs_to_live_in_memory (t)) -- 2.11.0