diff --git a/tccgen.c b/tccgen.c index 2885f3e..304225e 100644 --- a/tccgen.c +++ b/tccgen.c @@ -2829,8 +2829,7 @@ static void gen_assign_cast(CType *dt) } } /* check const and volatile */ - if ((!(type1->t & VT_CONSTANT) && (type2->t & VT_CONSTANT) && - ((type2->t & VT_BTYPE) != VT_BYTE || tcc_state->warn_write_strings)) || + if ((!(type1->t & VT_CONSTANT) && (type2->t & VT_CONSTANT)) || (!(type1->t & VT_VOLATILE) && (type2->t & VT_VOLATILE))) tcc_warning("assignment discards qualifiers from pointer target type"); break; @@ -4382,7 +4381,8 @@ ST_FUNC void unary(void) /* string parsing */ t = VT_BYTE; str_init: - t |= VT_CONSTANT; + if (tcc_state->warn_write_strings) + t |= VT_CONSTANT; type.t = t; mk_pointer(&type); type.t |= VT_ARRAY;