aboutsummaryrefslogtreecommitdiff
path: root/tcc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tcc.c')
-rw-r--r--tcc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tcc.c b/tcc.c
index 1eee2ce..30a3555 100644
--- a/tcc.c
+++ b/tcc.c
@@ -5856,7 +5856,11 @@ static void gen_assign_cast(CType *dt)
/* XXX: more tests */
break;
case VT_STRUCT:
- if (!is_compatible_types(dt, st)) {
+ tmp_type1 = *dt;
+ tmp_type2 = *st;
+ tmp_type1.t &= ~(VT_CONSTANT | VT_VOLATILE);
+ tmp_type2.t &= ~(VT_CONSTANT | VT_VOLATILE);
+ if (!is_compatible_types(&tmp_type1, &tmp_type2)) {
error:
type_to_str(buf1, sizeof(buf1), st, NULL);
type_to_str(buf2, sizeof(buf2), dt, NULL);