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 157adc91e650b7cb65e1e0589e5757eb4ca0a341..07be3bbd5b005d37e18d4fc0c6ababd190ef2c49 100644 (file)
@@ -1,3 +1,7 @@
+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
index 3d4e97b8f8f954226c334fc1373f0f4f20965c43..00f19ff24ef56c2638daefa4e713cb5dc8449c1f 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'.  */
       ;