ref: 3f821970c3b3572a47db68500f6081db65358298
parent: 3f387257e934ca94273c65cee09b7b61dcae1591
author: Quentin Rameau <quinq@fifth.space>
date: Wed Feb 15 06:55:24 EST 2017
[cc1] Fix valid_va_list Directly comparing objects via pointers is too strict and the check would fail for typedefs.
--- a/cc1/arch/amd64-sysv/arch.c
+++ b/cc1/arch/amd64-sysv/arch.c
@@ -218,5 +218,5 @@
int
valid_va_list(Type *tp)
{
- return tp->op == PTR && tp->type == va_type;
+ return tp->op == PTR && eqtype(tp->type, va_type, 1);
}
--- a/cc1/arch/i386-sysv/arch.c
+++ b/cc1/arch/i386-sysv/arch.c
@@ -219,5 +219,5 @@
int
valid_va_list(Type *tp)
{
- return tp == va_list_type;
+ return eqtype(tp, va_list_type, 1);
}
--- a/cc1/arch/qbe/arch.c
+++ b/cc1/arch/qbe/arch.c
@@ -218,5 +218,5 @@
int
valid_va_list(Type *tp)
{
- return tp->op == PTR && tp->type == va_type;
+ return tp->op == PTR && eqtype(tp->type, va_type, 1);
}
--- a/cc1/arch/z80/arch.c
+++ b/cc1/arch/z80/arch.c
@@ -217,5 +217,5 @@
int
valid_va_list(Type *tp)
{
- return tp == va_list_type;
+ return eqtype(tp, va_list_type, 1);
}