diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-23 22:19:39 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-23 22:19:39 +0000 |
commit | a35a63fff496e284f010031e5d6d3451a9a26579 (patch) | |
tree | 3072cb4fe732b3df37e851d737c014b16029b598 /gcc/expr.h | |
parent | 7cc73d08e2dfcf8c0626d94c67ce264713140255 (diff) | |
download | gcc-a35a63fff496e284f010031e5d6d3451a9a26579.tar.gz |
* calls.c (store_one_arg): Revert 1999-02-16 change. Revert
2000-12-17 change. Pass EXPAND_STACK_PARM to expand_expr.
* expr.h (enum expand_modifier): Define EXPAND_STACK_PARM.
(enum block_op_methods): Reorder for better store_expr optimization.
* expr.c (store_expr): Test bit 1 of "want_value" for call param
stores, test bit 0 for original want_value meaning. Pass
BLOCK_OP_CALL_PARM to emit_block_move when bit 1 set. Adjust
recursive calls, and calls to expand_param.
(expand_expr): Handle EXPAND_STACK_PARM modifier. When cse
expected, set target to 0 rather than to subtarget. Formatting.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63337 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.h')
-rw-r--r-- | gcc/expr.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/expr.h b/gcc/expr.h index 12103722730..2f243266cf2 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -1,6 +1,6 @@ /* Definitions for code generation pass of GNU compiler. Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GCC. @@ -44,13 +44,16 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #define QUEUED_NEXT(P) XEXP (P, 4) /* This is the 4th arg to `expand_expr'. + EXPAND_STACK_PARM means we are possibly expanding a call param onto + the stack. Choosing a value of 2 isn't special; It just allows + some code optimization in store_expr. EXPAND_SUM means it is ok to return a PLUS rtx or MULT rtx. EXPAND_INITIALIZER is similar but also record any labels on forced_labels. EXPAND_CONST_ADDRESS means it is ok to return a MEM whose address is a constant that is not a legitimate address. EXPAND_WRITE means we are only going to write to the resulting rtx. */ -enum expand_modifier {EXPAND_NORMAL, EXPAND_SUM, EXPAND_CONST_ADDRESS, - EXPAND_INITIALIZER, EXPAND_WRITE}; +enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM = 2, EXPAND_SUM, + EXPAND_CONST_ADDRESS, EXPAND_INITIALIZER, EXPAND_WRITE}; /* Prevent the compiler from deferring stack pops. See inhibit_defer_pop for more information. */ @@ -378,8 +381,8 @@ extern rtx convert_modes PARAMS ((enum machine_mode, enum machine_mode, enum block_op_methods { BLOCK_OP_NORMAL, - BLOCK_OP_CALL_PARM, - BLOCK_OP_NO_LIBCALL + BLOCK_OP_NO_LIBCALL, + BLOCK_OP_CALL_PARM }; extern rtx emit_block_move PARAMS ((rtx, rtx, rtx, enum block_op_methods)); |