This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/16223] Wrong-code due to more inlining
- From: "belyshev at lubercy dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Jun 2004 19:33:24 -0000
- Subject: [Bug rtl-optimization/16223] Wrong-code due to more inlining
- References: <20040627042857.16223.gcc-erikd@mega-nerd.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From belyshev at lubercy dot com 2004-06-27 19:33 -------
Tescase uses floor() written in inline assembly, so 'inlining problem' is
basically lacking of rounding argument to floor() from 80 (long double,
precision of x86 fp registers) to 64 bits (plain double) when floor() gets
inlined. This is why floor(1.0/src_ratio) magically becomes 9.0 when src_ratio
= 0.1 but you expected 10.0. Keep in mind that 0.1 and other 'round' values
cannot be represented exactly in binary form. So result of (1.0/0.1) depends on
rounding mode. Insert "printf ("%i \n", filter->b_current);" at end of loop in
sinc_process () and see what happens when you compile this with different
options/different compilers. Testcase is wrong. wrong. wrong.
--
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |3.4.2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16223