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
This commit is contained in:
Andrew Pinski 2007-08-20 00:48:09 +00:00 committed by Andrew Pinski
parent 001231ffe0
commit 61021c2c73
3 changed files with 12 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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