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:
parent
001231ffe0
commit
61021c2c73
@ -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
|
||||
|
@ -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
|
||||
|
14
gcc/stmt.c
14
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user