On 07/16/20 18:31, Alex Bennée wrote: > > Laszlo Ersek <ler...@redhat.com> 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 <alex.ben...@linaro.org> >> Cc: Aurelien Jarno <aurel...@aurel32.net> >> Cc: Eduardo Habkost <ehabk...@redhat.com> >> Cc: Joseph Myers <jos...@codesourcery.com> >> Cc: Paolo Bonzini <pbonz...@redhat.com> >> Cc: Peter Maydell <peter.mayd...@linaro.org> >> Cc: Richard Henderson <r...@twiddle.net> >> Signed-off-by: Laszlo Ersek <ler...@redhat.com> >> --- >> >> 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 <alex.ben...@linaro.org>
Thank you! Laszlo