8e43c5a1f2
The code is currently comparing c2 to the type promotion of
uint32_t and int32_t. That is, the conversion rules are as:
(common_type) c2 == (common_type) (uint32_t)
(is_unsigned
? (uint32_t)c2
: (uint32_t)(int32_t)c2)
In the signed case we lose the desired sign extensions because
of the argument promotion rules of the ternary operator.
Solve the problem by doing the round-trip parsing through the
intermediate type and back to the desired common type (all at
one expression).
Fixes:
|
||
---|---|---|
.. | ||
tcg-target-con-set.h | ||
tcg-target-con-str.h | ||
tcg-target.c.inc | ||
tcg-target.h |