On 07/16/20 18:31, Alex Bennée wrote: > > Laszlo Ersek <[email protected]> writes: > >> Quoting ISO C99 6.7.8p4, "All the expressions in an initializer for an >> object that has static storage duration shall be constant expressions or >> string literals". >> >> The compound literal produced by the make_floatx80() macro is not such a >> constant expression, per 6.6p7-9. (An implementation may accept it, >> according to 6.6p10, but is not required to.) >> >> Therefore using "floatx80_zero" and make_floatx80() for initializing >> "f2xm1_table" and "fpatan_table" is not portable. And gcc-4.8 in RHEL-7.6 >> actually chokes on them: >> >>> target/i386/fpu_helper.c:871:5: error: initializer element is not constant >>> { make_floatx80(0xbfff, 0x8000000000000000ULL), >>> ^ >> >> We've had the make_floatx80_init() macro for this purpose since commit >> 3bf7e40ab914 ("softfloat: fix for C99", 2012-03-17), so let's use that >> macro again. >> >> Fixes: eca30647fc07 >> Fixes: ff57bb7b6326 >> Link: https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg06566.html >> Link: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg04714.html >> Cc: Alex Bennée <[email protected]> >> Cc: Aurelien Jarno <[email protected]> >> Cc: Eduardo Habkost <[email protected]> >> Cc: Joseph Myers <[email protected]> >> Cc: Paolo Bonzini <[email protected]> >> Cc: Peter Maydell <[email protected]> >> Cc: Richard Henderson <[email protected]> >> Signed-off-by: Laszlo Ersek <[email protected]> >> --- >> >> Notes: >> I can see that there are test cases under "tests/tcg/i386", but I don't >> know how to run them. > > You can run the TCG tests with: > > make check-tcg > > or more specifically: > > make run-tcg-tests-i386-linux-user > > there is also a: > > make check-softfloat > > although in this case nothing is affected. > > softfloat bits: > > Acked-by: Alex Bennée <[email protected]>
Thank you! Laszlo
