[PATCH] D117866: [AArch64][GlobalISel] Support returned argument with multiple registers

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 21 01:40:51 PST 2022


nikic created this revision.
nikic added reviewers: aemerson, paquette, arsenm.
Herald added subscribers: hiraditya, kristof.beyls, rovka.
nikic requested review of this revision.
Herald added subscribers: llvm-commits, wdng.
Herald added a project: LLVM.

The call lowering code assumed that a `returned` argument could only consist of one register. Pass an `ArrayRef<Register>` instead of `Register` to make sure that all parts get assigned.

Not familiar with this code, so not sure whether this is the right approach -- I could imagine that the proper fix is to disable the `returned` handling for this case, rather than supporting it.

Fixes https://github.com/llvm/llvm-project/issues/53315.


https://reviews.llvm.org/D117866

Files:
  llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
  llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
  llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
  llvm/test/CodeGen/AArch64/pr53315-returned-i128.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D117866.401900.patch
Type: text/x-patch
Size: 5399 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220121/aae6552d/attachment.bin>


More information about the llvm-commits mailing list