[Bug middle-end/89726] New: Incorrect inlined version of 'ceil' for 32bit
xan at igalia dot com
gcc-bugzilla@gcc.gnu.org
Fri Mar 15 11:12:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89726
Bug ID: 89726
Summary: Incorrect inlined version of 'ceil' for 32bit
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: xan at igalia dot com
Target Milestone: ---
Using GCC 9.0.1 20190314 (experimental) (GCC) on GNU/Linux x86-64. When
compiling the following program:
#include <math.h>
#include <stdlib.h>
int main(int argc, const char* argv[])
{
if (argc != 2) abort();
return signbit(ceil(atof(argv[1])));
}
For 32bit the ceil operation for a negative number (say, -0.9) gives +0 instead
of -0, which is incorrect. As in:
niraikanai:~/js/32bit%/home/xan/gccbuild/bin/gcc -O2 -o ceil ceil.c -lm
niraikanai:~/js/32bit%./ceil -0.9 && echo bad
niraikanai:~/js/32bit%/home/xan/gccbuild/bin/gcc -O2 -m32 -o ceil ceil.c -lm
niraikanai:~/js/32bit%./ceil -0.9 && echo bad
bad
niraikanai:~/js/32bit%
This is also present, at least, in the 8.x series.
More information about the Gcc-bugs
mailing list