On 7/23/20 11:45 PM, Alex Bennée wrote: > From: Laszlo Ersek <ler...@redhat.com> > > 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 <ler...@redhat.com> > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > 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> > 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: <20200716144251.23004-1-ler...@redhat.com> > Message-Id: <20200722062902.24509-8-alex.ben...@linaro.org> > --- > include/fpu/softfloat.h | 1 + > target/i386/fpu_helper.c | 426 +++++++++++++++++++-------------------- > 2 files changed, 214 insertions(+), 213 deletions(-)
Reviewed-by: Richard Henderson <richard.hender...@linaro.org> r~