diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-01-28 07:31:17 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-01-28 07:31:17 -0500 |
commit | 8e6c802b46eeadb19407635dcc53bd8cafdd54ff (patch) | |
tree | ab1f83d26f11f5f52810ea28ad33867deb7426ed | |
parent | a9174911766177b372dce512590b254f2d7a0def (diff) | |
download | gcc-8e6c802b46eeadb19407635dcc53bd8cafdd54ff.zip gcc-8e6c802b46eeadb19407635dcc53bd8cafdd54ff.tar.gz gcc-8e6c802b46eeadb19407635dcc53bd8cafdd54ff.tar.bz2 |
(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
-rw-r--r-- | gcc/calls.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index cfc8644..0a6b029 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1,5 +1,5 @@ /* 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. @@ -1317,18 +1317,21 @@ expand_call (exp, target, ignore) args[i].initial_value = args[i].value = 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); pop_temp_slots (); /* ANSI doesn't require a sequence point here, but PCC has one, so this will avoid some problems. */ 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 |