aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-06-17 12:22:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-06-17 12:22:22 +0000
commitbd2e63a1c4d4159f576c31bee9e4090919462aa5 (patch)
treed9efed283414c50ff46880e65b6175b134d1a139 /gcc/gimplify.c
parent7fa5296e5791829f1ef67de819e5188c58952d67 (diff)
downloadgcc-bd2e63a1c4d4159f576c31bee9e4090919462aa5.zip
gcc-bd2e63a1c4d4159f576c31bee9e4090919462aa5.tar.gz
gcc-bd2e63a1c4d4159f576c31bee9e4090919462aa5.tar.bz2
gimplify.c (gimplify_bind_expr): Always promote complex and vector variables to registers if possible.
2010-06-17 Richard Guenther <rguenther@suse.de> * gimplify.c (gimplify_bind_expr): Always promote complex and vector variables to registers if possible. From-SVN: r160903
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 9d2cf86..a374bda 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))