Fix assert in build_va_arg, case 2b
authorTom de Vries <tom@codesourcery.com>
Mon, 29 Aug 2016 16:42:16 +0000 (16:42 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Mon, 29 Aug 2016 16:42:16 +0000 (16:42 +0000)
2016-08-29  Tom de Vries  <tom@codesourcery.com>

* c-common.c (build_va_arg): Fix type comparison assert.

From-SVN: r239829

gcc/c-family/ChangeLog
gcc/c-family/c-common.c

index 157adc9..07be3bb 100644 (file)
@@ -1,5 +1,9 @@
 2016-08-29  Tom de Vries  <tom@codesourcery.com>
 
+       * c-common.c (build_va_arg): Fix type comparison assert.
+
+2016-08-29  Tom de Vries  <tom@codesourcery.com>
+
        * c-common.c (build_va_arg): Replace first argument type error
        with assert.
 
index 3d4e97b..00f19ff 100644 (file)
@@ -5906,7 +5906,10 @@ build_va_arg (location_t loc, tree expr, tree type)
     {
       /* Case 2b: va_list is pointer to array elem type.  */
       gcc_assert (POINTER_TYPE_P (va_type));
-      gcc_assert (TREE_TYPE (va_type) == TREE_TYPE (canon_va_type));
+
+      /* Comparison as in std_canonical_va_list_type.  */
+      gcc_assert (TYPE_MAIN_VARIANT (TREE_TYPE (va_type))
+                 == TYPE_MAIN_VARIANT (TREE_TYPE (canon_va_type)));
 
       /* Don't take the address.  We've already got '&ap'.  */
       ;