Hi,
this patch fixes an assert in build_va_arg. Instead of testing for
pointer equality, we use the same test as is used in
std_canonical_va_list_type.
Bootstrapped and reg-tested on x86_64.
OK for trunk?
Thanks,
- Tom
Fix assert in build_va_arg, case 2b
2016-08-22 Tom de Vries <t...@codesourcery.com>
* c-common.c (build_va_arg): Fix type comparison assert.
---
gcc/c-family/c-common.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index a289d2b..3b61e64 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -5894,7 +5894,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'. */
;