diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-09 19:55:13 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-09 19:55:13 +0000 |
commit | 60ffaf4d23b6385206e6fc4cc3a44a964e88d776 (patch) | |
tree | e2935a8f65ac880227cefaf160bb48b5a018326f /gcc/tree.def | |
parent | be946baefd2692b20cd9388662915f171ebf9257 (diff) | |
download | gcc-60ffaf4d23b6385206e6fc4cc3a44a964e88d776.tar.gz |
* expr.h (expand_expr): Make it a macro, not a function.
(expand_expr_real): New function.
* expr.c (store_expr): Adjust logic for deciding whether or not to
copy the value returned by expand_expr.
(expand_expr): Rename to ...
(expand_expr_real): ... this. Add alt_rtl parameter. Adjust
calls to language hooks.
* c-common.h (c_expand_expr): Adjust prototype.
* c-common.c (c_expand_expr): Add alt_rtl parameter.
* langhooks-def.h (lhd_expand_expr): Change prototype.
* langhooks.c (lhd_expand_expr): Add all_rtl parameter.
* langhooks.h (lang_hooks): Change type of expand_expr.
* stmt.c (stmt_status): Add x_last_expr_alt_rtl.
(last_expr_alt_rtl): Likewise.
(expand_expr_stmt_value): Set last_expr_alt_rtl.
(clear_last_expr): Clear it.
(expand_end_stmt_expr): Set RTL_EXPR_ATL_RTL.
(expand_end_bindings): Save and restor last_expr_alt_rtl.
* tree.def (RTL_EXPR): Give it an additional operand.
* tree.h (RTL_EXPR_ALT_RTL): New macro.
* misc.c (gnat_expand_expr): Add alt_rtl parameter.
* cp-tree.h (cxx_expand_expr): Change prototype.
* expr.c (cxx_expand_expr): Add alt_rtl parameter.
* java-tree.h (java_expand_expr): Change prototype.
* expr.c (java_expand_expr): Add alt_rtl parameter.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75594 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.def')
-rw-r--r-- | gcc/tree.def | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/tree.def b/gcc/tree.def index 79bb63e220a..0419faeaff0 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -730,11 +730,15 @@ DEFTREECODE (UNSAVE_EXPR, "unsave_expr", 'e', 1) /* Represents something whose RTL has already been expanded as a sequence which should be emitted when this expression is expanded. The first operand is the RTL to emit. It is the first of a chain - of insns. The second is the RTL expression for the result. Any - temporaries created during the building of the RTL_EXPR can be - reused once the RTL_EXPR has been expanded, with the exception of - the RTL_EXPR_RTL. */ -DEFTREECODE (RTL_EXPR, "rtl_expr", 'e', 2) + of insns. The second is the RTL expression for the result. The + third operand is the "alternate RTL expression" for the result, if + any; if the second argument is the DECL_RTL for a VAR_DECL, but + with an invalid memory address replaced by a valid one, then the + third operand will be the original DECL_RTL. Any temporaries + created during the building of the RTL_EXPR can be reused once the + RTL_EXPR has been expanded, with the exception of the + RTL_EXPR_RTL. */ +DEFTREECODE (RTL_EXPR, "rtl_expr", 'e', 3) /* & in C. Value is the address at which the operand's value resides. Operand may have any mode. Result mode is Pmode. */ |