http://bugzilla.opensuse.org/show_bug.cgi?id=1127564 Bug ID: 1127564 Summary: gcc bug in double calculation in i586 Classification: openSUSE Product: openSUSE Tumbleweed Version: Current Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: Development Assignee: bnc-team-screening@forge.provo.novell.com Reporter: alarrosa@suse.com QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- When building sphinxbase, I enabled the package checks and they built fine for x86_64 but failed to run the tests on i586. After some debugging it looks like a gcc error doing some calculations on i586. I made a small application to show the problem: double p = 0.00053447623258905705; double inv_log_of_base = 10000.499991668185; int r = log(p) * inv_log_of_base; printf("a: %d\n", r); double gr = log(p) * inv_log_of_base; printf("b: %g\n", gr); double g = log(p); int c = g * inv_log_of_base; printf("c: %d\n", c); The code above shows the following when built on x86_64: a: -75346 b: -75346 c: -75346 but when built on i586 with -O0 it shows: a: -75345 b: -75346 c: -75346 Note that when built on i586 with -O1, -O2, -O3 or -Og, it works fine, but definitely, a different optimization parameter shouldn't change the result of a multiplication. -- You are receiving this mail because: You are on the CC list for the bug.