tree-stdarg.c (execute_optimize_stdarg): Handle references to va_list of the form &va[0].
2005-05-21 Richard Guenther <rguenth@gcc.gnu.org> * tree-stdarg.c (execute_optimize_stdarg): Handle references to va_list of the form &va[0]. From-SVN: r100043
This commit is contained in:
parent
69a2d125d6
commit
bb673b41f0
2 changed files with 24 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2005-05-21 Richard Guenther <rguenth@gcc.gnu.org>
|
||||
|
||||
* tree-stdarg.c (execute_optimize_stdarg): Handle references
|
||||
to va_list of the form &va[0].
|
||||
|
||||
2005-05-20 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* Makefile.in (insn-emit.o): Add basic-block.h dependency.
|
||||
|
|
|
@ -660,16 +660,30 @@ execute_optimize_stdarg (void)
|
|||
|
||||
si.va_start_count++;
|
||||
ap = TREE_VALUE (TREE_OPERAND (call, 1));
|
||||
if (TREE_CODE (ap) != ADDR_EXPR
|
||||
|| TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (ap, 0)))
|
||||
!= TYPE_MAIN_VARIANT (va_list_type_node)
|
||||
|| TREE_CODE (TREE_OPERAND (ap, 0)) != VAR_DECL)
|
||||
|
||||
if (TREE_CODE (ap) != ADDR_EXPR)
|
||||
{
|
||||
va_list_escapes = true;
|
||||
break;
|
||||
}
|
||||
ap = TREE_OPERAND (ap, 0);
|
||||
if (TREE_CODE (ap) == ARRAY_REF)
|
||||
{
|
||||
if (! integer_zerop (TREE_OPERAND (ap, 1)))
|
||||
{
|
||||
va_list_escapes = true;
|
||||
break;
|
||||
}
|
||||
ap = TREE_OPERAND (ap, 0);
|
||||
}
|
||||
if (TYPE_MAIN_VARIANT (TREE_TYPE (ap))
|
||||
!= TYPE_MAIN_VARIANT (va_list_type_node)
|
||||
|| TREE_CODE (ap) != VAR_DECL)
|
||||
{
|
||||
va_list_escapes = true;
|
||||
break;
|
||||
}
|
||||
|
||||
ap = TREE_OPERAND (ap, 0);
|
||||
if (is_global_var (ap))
|
||||
{
|
||||
va_list_escapes = true;
|
||||
|
|
Loading…
Add table
Reference in a new issue