Commit 8e6c802b by Richard Kenner

(expand_call): When emitting queue for each arg, call protect_from_queue...

(expand_call): When emitting queue for each arg, call
protect_from_queue; put in initial_value so EXPR_LIST in is_const case
won't have QUEUED.

From-SVN: r8835
parent a9174911
/* Convert function calls to rtl insns, for GNU C compiler. /* Convert function calls to rtl insns, for GNU C compiler.
Copyright (C) 1989, 1992, 1993, 1994 Free Software Foundation, Inc. Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -1317,18 +1317,21 @@ expand_call (exp, target, ignore) ...@@ -1317,18 +1317,21 @@ expand_call (exp, target, ignore)
args[i].initial_value = args[i].value args[i].initial_value = args[i].value
= expand_expr (args[i].tree_value, NULL_RTX, VOIDmode, 0); = expand_expr (args[i].tree_value, NULL_RTX, VOIDmode, 0);
if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) != args[i].mode)
args[i].value
= convert_modes (args[i].mode,
TYPE_MODE (TREE_TYPE (args[i].tree_value)),
args[i].value, args[i].unsignedp);
preserve_temp_slots (args[i].value); preserve_temp_slots (args[i].value);
pop_temp_slots (); pop_temp_slots ();
/* ANSI doesn't require a sequence point here, /* ANSI doesn't require a sequence point here,
but PCC has one, so this will avoid some problems. */ but PCC has one, so this will avoid some problems. */
emit_queue (); emit_queue ();
args[i].initial_value = args[i].value
= protect_from_queue (args[i].initial_value, 0);
if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) != args[i].mode)
args[i].value
= convert_modes (args[i].mode,
TYPE_MODE (TREE_TYPE (args[i].tree_value)),
args[i].value, args[i].unsignedp);
} }
/* Now we are about to start emitting insns that can be deleted /* Now we are about to start emitting insns that can be deleted
......
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