aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-05-02 17:49:32 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-05-02 17:49:32 +0000
commit4636b850f65b40e23bb6f6c7db00adfdab2602da (patch)
tree63b674cab8c718bf17708549a9c54440fbe71c18 /gcc/tree-ssa.c
parent25195e82643714f6f73737cd51c217692acbe836 (diff)
downloadgcc-4636b850f65b40e23bb6f6c7db00adfdab2602da.zip
gcc-4636b850f65b40e23bb6f6c7db00adfdab2602da.tar.gz
gcc-4636b850f65b40e23bb6f6c7db00adfdab2602da.tar.bz2
re PR regression/40001 (r146817 broke libgloss build for SPU)
2009-05-02 Richard Guenther <rguenther@suse.de> PR middle-end/40001 * tree-ssa.c (execute_update_addresses_taken): Properly check if we can mark a variable DECL_GIMPLE_REG_P. * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P back to the end of the function. (is_gimple_reg_type): Remove complex type special casing. * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P if not optimizing. * gcc.target/spu/pr40001.c: New testcase. From-SVN: r147064
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index ddf5202..edbae39 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1573,7 +1573,9 @@ execute_update_addresses_taken (bool do_optimize)
if (!DECL_GIMPLE_REG_P (var)
&& !bitmap_bit_p (not_reg_needs, DECL_UID (var))
&& (TREE_CODE (TREE_TYPE (var)) == COMPLEX_TYPE
- || TREE_CODE (TREE_TYPE (var)) == VECTOR_TYPE))
+ || TREE_CODE (TREE_TYPE (var)) == VECTOR_TYPE)
+ && !TREE_THIS_VOLATILE (var)
+ && (TREE_CODE (var) != VAR_DECL || !DECL_HARD_REGISTER (var)))
{
DECL_GIMPLE_REG_P (var) = 1;
mark_sym_for_renaming (var);