On 7/23/20 11:45 PM, Alex Bennée wrote: > From: Laszlo Ersek <[email protected]> > > 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 > Signed-off-by: Laszlo Ersek <[email protected]> > Signed-off-by: Alex Bennée <[email protected]> > Reviewed-by: Alex Bennée <[email protected]> > Reviewed-by: Philippe Mathieu-Daudé <[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]> > 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 > Message-Id: <[email protected]> > Message-Id: <[email protected]> > --- > include/fpu/softfloat.h | 1 + > target/i386/fpu_helper.c | 426 +++++++++++++++++++-------------------- > 2 files changed, 214 insertions(+), 213 deletions(-)
Reviewed-by: Richard Henderson <[email protected]> r~
