This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [mn10300] return-in-a0-d0 ABI helper


On Fri, 2005-09-16 at 16:15 -0400, DJ Delorie wrote:
> > This situation is precisely why we support PARALLELs for return
> > values (the need to return a value in multiple registers).
> > 
> > It ought to "just work".
> 
> It just didn't.
> 
> ../../gcc/gcc/testsuite/gcc.c-torture/compile/20000804-1.c:16: error: unrecognizable insn:
> (insn 77 90 82 7 (set (parallel/i:SI [
>                 (expr_list:REG_DEP_TRUE (reg:SI 4 a0)
>                     (const_int 0 [0x0]))
>                 (expr_list:REG_DEP_TRUE (reg:SI 0 d0)
>                     (const_int 0 [0x0]))
>             ])
>         (reg/f:SI 71 [ D.1210 ])) -1 (nil)
>     (nil))
> 
> If I manually try all the permutations of caller/callee/int/pointer,
> they all work, and the code looks reasonable.  Relevent portions of
> the patch attached - see any obvious mistakes in it?
You'll have to walk through expand_value_return and its children
(particularly emit_group_load).  You might also have to peek at
expand_function_end.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]