GlobalISel: split aggregates for PCS lowering
authorTim Northover <tnorthover@apple.com>
Tue, 20 Sep 2016 15:20:36 +0000 (15:20 +0000)
committerTim Northover <tnorthover@apple.com>
Tue, 20 Sep 2016 15:20:36 +0000 (15:20 +0000)
commitb18ea162dfef6a390f84e4be048038675a722304
treee9f1a4ec1fb784dbb4238d7e2bb2c22f29cdeaac
parent1b87995f3181c1bb84264e3916b85f14c99f060a
GlobalISel: split aggregates for PCS lowering

This should match the existing behaviour for passing complicated struct and
array types, in particular HFAs come through like that from Clang.

For C & C++ we still need to somehow support all the weird ABI flags, or at
least those that are present in the IR (signext, byval, ...), and stack-based
parameter passing.

llvm-svn: 281977
llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
llvm/lib/CodeGen/GlobalISel/MachineLegalizeHelper.cpp
llvm/lib/Target/AArch64/AArch64CallLowering.cpp
llvm/lib/Target/AArch64/AArch64CallLowering.h
llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll