From e5eeae6506bed8f70e16fd7be890d13408f08f51 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Thu, 6 Jun 1996 16:14:12 -0700 Subject: [PATCH] (expand_value_return): Handle PARALLEL return_reg. From-SVN: r12192 --- gcc/stmt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gcc/stmt.c b/gcc/stmt.c index d9551f6a8ac..687520e290d 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -2529,6 +2529,21 @@ expand_value_return (val) if (GET_CODE (return_reg) == REG && REGNO (return_reg) < FIRST_PSEUDO_REGISTER) emit_insn (gen_rtx (USE, VOIDmode, return_reg)); + /* Handle calls that return values in multiple non-contiguous locations. + The Irix 6 ABI has examples of this. */ + else if (GET_CODE (return_reg) == PARALLEL) + { + int i; + + for (i = 0; i < XVECLEN (return_reg, 0); i++) + { + rtx x = XEXP (XVECEXP (return_reg, 0, i), 0); + + if (GET_CODE (x) == REG + && REGNO (x) < FIRST_PSEUDO_REGISTER) + emit_insn (gen_rtx (USE, VOIDmode, x)); + } + } /* Does any pending block have cleanups? */ -- 2.30.2