Commit 303b90b0 by Franz Sirl Committed by Franz Sirl

re PR c/8467 (Bug in sibling call optimization)

2002-11-11  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c/8467
	* gcc.c-torture/execute/20021111-1.c

From-SVN: r59026
parent e8437165
2002-11-11 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
PR c/8467
* stmt.c (tail_recursion_args): Handle DECL_MODE differing from the
mode of DECL_RTL case.
2002-11-11 Janis Johnson <janis187@us.ibm.com>
* doc/contrib.texi: Merge in the list from the libstdc++ web pages.
......
......@@ -3311,8 +3311,18 @@ tail_recursion_args (actuals, formals)
if (GET_MODE (DECL_RTL (f)) == GET_MODE (argvec[i]))
emit_move_insn (DECL_RTL (f), argvec[i]);
else
convert_move (DECL_RTL (f), argvec[i],
TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
{
rtx tmp = argvec[i];
if (DECL_MODE (f) != GET_MODE (DECL_RTL (f)))
{
tmp = gen_reg_rtx (DECL_MODE (f));
convert_move (tmp, argvec[i],
TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
}
convert_move (DECL_RTL (f), tmp,
TREE_UNSIGNED (TREE_TYPE (TREE_VALUE (a))));
}
}
free_temp_slots ();
......
2002-11-11 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
PR c/8467
* gcc.c-torture/execute/20021111-1.c
2002-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
PR c/8439
......
/* Origin: PR c/8467 */
extern void abort (void);
extern void exit (int);
int aim_callhandler(int sess, int conn, unsigned short family, unsigned short type);
int aim_callhandler(int sess, int conn, unsigned short family, unsigned short type)
{
static int i = 0;
if (!conn)
return 0;
if (type == 0xffff)
{
return 0;
}
if (i >= 1)
abort ();
i++;
return aim_callhandler(sess, conn, family, (unsigned short) 0xffff);
}
int main (void)
{
aim_callhandler (0, 1, 0, 0);
exit (0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment