aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.h
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2002-11-27 02:29:12 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2002-11-27 02:29:12 +0000
commit084a11066f6825b040acb692ad1f17981a17f1f6 (patch)
treefc534194a61afad57285d25be308fb71db734c93 /gcc/expr.h
parenta16f235752abdce78d8e5f608762a207f4973f13 (diff)
downloadgcc-084a11066f6825b040acb692ad1f17981a17f1f6.zip
gcc-084a11066f6825b040acb692ad1f17981a17f1f6.tar.gz
gcc-084a11066f6825b040acb692ad1f17981a17f1f6.tar.bz2
expr.c (gen_group_rtx, [...]): New functions.
* expr.c (gen_group_rtx, emit_group_move): New functions. * expr.h (gen_group_rtx, emit_group_move): Prototype. * function.c (expand_function_start): Use gen_group_rtx to create a PARALLEL rtx to hold the return value when the real return rtx is a PARALLEL. (expand_function_end): Use emit_group_move to move the return value from a PARALLEL to the real return registers. * rtl.h (REG_FUNCTION_VALUE_P): Allow function values to be returned in PARALLELs. From-SVN: r59554
Diffstat (limited to 'gcc/expr.h')
-rw-r--r--gcc/expr.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/expr.h b/gcc/expr.h
index e8b2c17..6e8d19e 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -412,10 +412,17 @@ extern void move_block_to_reg PARAMS ((int, rtx, int, enum machine_mode));
The number of registers to be filled is NREGS. */
extern void move_block_from_reg PARAMS ((int, rtx, int, int));
+/* Generate a non-consecutive group of registers represented by a PARALLEL. */
+extern rtx gen_group_rtx PARAMS ((rtx));
+
/* Load a BLKmode value into non-consecutive registers represented by a
PARALLEL. */
extern void emit_group_load PARAMS ((rtx, rtx, int));
+/* Move a non-consecutive group of registers represented by a PARALLEL into
+ a non-consecutive group of registers represented by a PARALLEL. */
+extern void emit_group_move PARAMS ((rtx, rtx));
+
/* Store a BLKmode value from non-consecutive registers represented by a
PARALLEL. */
extern void emit_group_store PARAMS ((rtx, rtx, int));