diff options
author | Richard Guenther <rguenther@suse.de> | 2010-06-17 12:22:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-06-17 12:22:22 +0000 |
commit | bd2e63a1c4d4159f576c31bee9e4090919462aa5 (patch) | |
tree | d9efed283414c50ff46880e65b6175b134d1a139 /gcc/gimplify.c | |
parent | 7fa5296e5791829f1ef67de819e5188c58952d67 (diff) | |
download | gcc-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.c | 11 |
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)) |