From: Kai Tietz Date: Tue, 15 Jul 2008 09:04:33 +0000 (+0000) Subject: builtins.c (std_canonical_va_list): Treat structure based va_list types. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e65d1ec6b0fc79dd2f72ab85f5eb8dbe8d480e57;p=gcc.git builtins.c (std_canonical_va_list): Treat structure based va_list types. 2008-07-15 Kai Tietz * builtins.c (std_canonical_va_list): Treat structure based va_list types. From-SVN: r137819 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32438121f14..78c6f4388c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-07-15 Kai Tietz + + * builtins.c (std_canonical_va_list): Treat structure based + va_list types. + 2008-07-15 Ben Elliston * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment. diff --git a/gcc/builtins.c b/gcc/builtins.c index 2d6ad2a1a34..60caa8126d8 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4691,10 +4691,12 @@ std_canonical_va_list_type (tree type) type = TREE_TYPE (type); else if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE(type))) type = TREE_TYPE (type); - wtype = va_list_type_node; htype = type; - if (TREE_CODE (wtype) == ARRAY_TYPE) + /* Treat structure va_list types. */ + if (TREE_CODE (wtype) == RECORD_TYPE && POINTER_TYPE_P (htype)) + htype = TREE_TYPE (htype); + else if (TREE_CODE (wtype) == ARRAY_TYPE) { /* If va_list is an array type, the argument may have decayed to a pointer type, e.g. by being passed to another function.