OSDN Git Service

2008-07-15 Kai Tietz <kai.tietz@onevision.com>
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Jul 2008 09:04:33 +0000 (09:04 +0000)
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 15 Jul 2008 09:04:33 +0000 (09:04 +0000)
* builtins.c (std_canonical_va_list): Treat structure based
va_list types.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137819 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c

index 3243812..78c6f43 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
+
+       * builtins.c (std_canonical_va_list): Treat structure based
+       va_list types.
+
 2008-07-15  Ben Elliston  <bje@au.ibm.com>
 
        * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
index 2d6ad2a..60caa81 100644 (file)
@@ -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.