This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: basic-improvements merge status
- From: David Edelsohn <dje at watson dot ibm dot com>
- To: Zack Weinberg <zack at codesourcery dot com>
- Cc: gcc at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot rg
- Date: Mon, 16 Dec 2002 16:37:15 -0500
- Subject: Re: basic-improvements merge status
The GCC 3.4BIB libstdc++-v3 failure of 26_numerics/c_math.cc on
AIX is occurring because libstdc++-v3/libmath/stubs.c functions are
recursing.
#ifndef HAVE_SINF
float
sinf(float x)
{
return (float) sin(x);
}
#endif
is being compiled as
bl sinf
In other words, recursing and calling itself. This even appears in the
stubs.c.00.rtl dump:
(insn 11 10 12 0 (set (reg:SF 33 f1)
(reg/v:SF 119)) -1 (nil)
(insn_list:REG_LIBCALL 13 (nil)))
(call_insn/u 12 11 13 0 (parallel [
(set (reg:SF 33 f1)
(call (mem:SI (symbol_ref:SI ("sinf[DS]")) [0 S4 A8])
(const_int 32 [0x20])))
(use (const_int 0 [0x0]))
(clobber (scratch:SI))
]) -1 (nil)
(expr_list:REG_EH_REGION (const_int -1 [0xffffffffffffffff])
(nil))
(expr_list (use (mem:BLK (scratch) [0 A8]))
(expr_list (use (reg:SF 33 f1))
(nil))))
(insn 13 12 14 0 (set (reg:SF 121)
(reg:SF 33 f1)) -1 (nil)
(insn_list:REG_RETVAL 11 (expr_list:REG_EQUAL (expr_list (use (mem:BLK (scra
tch) [0 A8]))
(expr_list (symbol_ref:SI ("sinf[DS]"))
(expr_list (reg/v:SF 119)
(nil))))
(nil))))
Any idea what change in GCC 3.4BIB is causing GCC to "optimize"
(float) sin(x)
as
sinf(x)?
Thanks, David