]> gcc.gnu.org Git - gcc.git/commit
Objective-C, NeXT: Fix messenging non-aggregate return-in-memory.
authorIain Sandoe <iain@sandoe.co.uk>
Mon, 16 Aug 2021 20:22:13 +0000 (21:22 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Wed, 1 Sep 2021 14:23:05 +0000 (15:23 +0100)
commit1cef3039b880a21fbdf4153e6fc42026619fd4ad
tree5fcafffb91105d298d3dc780a29a00a105ceac28
parent8433baadec88e5f31fa141b6d78094e91256079d
Objective-C, NeXT: Fix messenging non-aggregate return-in-memory.

When a method returns a type that the platform ABI says should be
returned in memory, and that is done by a hidden 'sret' parameter,
the message send calls must be adjusted to inform the runtime that
the sret parameter is present.  As reported in the PR, this is not
working for non-aggregate types that use this mechanism.  The fix
here is to adjust the logic such that all return values that flag
'in memory' are considered to use the mechanism *unless* they
provide a struct_value_rtx *and* the return object is an aggregate.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR objc/101718 - Objective-C frontend emits wrong code to call methods returning scalar types returned in memory

PR objc/101718

gcc/objc/ChangeLog:

* objc-next-runtime-abi-02.c (build_v2_build_objc_method_call):
Revise for cases where scalar objects use an sret parameter.
(next_runtime_abi_02_build_objc_method_call): Likwise.
gcc/objc/objc-next-runtime-abi-02.c
This page took 0.059343 seconds and 6 git commands to generate.