aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <andrew_pinski@playstation.sony.com>2007-08-20 00:48:09 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2007-08-19 17:48:09 -0700
commit61021c2c736d4e512ca32192cab19069ce8e261c (patch)
tree5fa3a5c401371070f18b2927b4c82bb90ba076d2
parent001231ffe06dbadfc7c0568d4af869f7e9014e67 (diff)
downloadgcc-61021c2c736d4e512ca32192cab19069ce8e261c.zip
gcc-61021c2c736d4e512ca32192cab19069ce8e261c.tar.gz
gcc-61021c2c736d4e512ca32192cab19069ce8e261c.tar.bz2
re PR middle-end/32940 (REG_POINTER attribute on DECL_ARTIFICIAL pointers)
2007-08-19 Andrew Pinski <andrew_pinski@playstation.sony.com> PR middle-end/32940 * cfgexpand.c (expand_one_register_var): Mark pointer DECL_ARTIFICIAL as REG_POINTER also. * stmt.c (expand_decl): Likewise. From-SVN: r127634
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cfgexpand.c12
-rw-r--r--gcc/stmt.c14
3 files changed, 12 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6fd2884..88d9e7a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2007-08-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR middle-end/32940
+ * cfgexpand.c (expand_one_register_var): Mark pointer
+ DECL_ARTIFICIAL as REG_POINTER also.
+ * stmt.c (expand_decl): Likewise.
+
2007-08-19 Daniel Berlin <dberlin@dberlin.org>
Fix PR 32772
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index d5a1e88..6031fda 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -673,18 +673,10 @@ expand_one_register_var (tree var)
/* Note if the object is a user variable. */
if (!DECL_ARTIFICIAL (var))
- {
mark_user_reg (x);
- /* Trust user variables which have a pointer type to really
- be pointers. Do not trust compiler generated temporaries
- as our type system is totally busted as it relates to
- pointer arithmetic which translates into lots of compiler
- generated objects with pointer types, but which are not really
- pointers. */
- if (POINTER_TYPE_P (type))
- mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (TREE_TYPE (var))));
- }
+ if (POINTER_TYPE_P (type))
+ mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (TREE_TYPE (var))));
}
/* A subroutine of expand_one_var. Called to assign rtl to a VAR_DECL that
diff --git a/gcc/stmt.c b/gcc/stmt.c
index cb4b1bd..7192dca 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1898,19 +1898,11 @@ expand_decl (tree decl)
/* Note if the object is a user variable. */
if (!DECL_ARTIFICIAL (decl))
- {
mark_user_reg (DECL_RTL (decl));
- /* Trust user variables which have a pointer type to really
- be pointers. Do not trust compiler generated temporaries
- as our type system is totally busted as it relates to
- pointer arithmetic which translates into lots of compiler
- generated objects with pointer types, but which are not really
- pointers. */
- if (POINTER_TYPE_P (type))
- mark_reg_pointer (DECL_RTL (decl),
- TYPE_ALIGN (TREE_TYPE (TREE_TYPE (decl))));
- }
+ if (POINTER_TYPE_P (type))
+ mark_reg_pointer (DECL_RTL (decl),
+ TYPE_ALIGN (TREE_TYPE (TREE_TYPE (decl))));
}
else if (TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST