diff options
author | Petar Avramovic <Petar.Avramovic@rt-rk.com> | 2019-09-05 11:12:01 +0000 |
---|---|---|
committer | Petar Avramovic <Petar.Avramovic@rt-rk.com> | 2019-09-05 11:12:01 +0000 |
commit | d2574d79b64db47051f0ea19de184218302e322a (patch) | |
tree | b4aac8dde0dd740c31c8d7eae04966e741050210 /llvm/lib | |
parent | 071287c5a9320b4bf7892094b619152df424aa1f (diff) | |
download | bcm5719-llvm-d2574d79b64db47051f0ea19de184218302e322a.tar.gz bcm5719-llvm-d2574d79b64db47051f0ea19de184218302e322a.zip |
[MIPS GlobalISel] Lower SRet pointer arguments
Instead of returning structure by value clang usually adds pointer
to that structure as an argument. Pointers don't require special
handling no matter the SRet flag. Remove unsuccessful exit from
lowerCall for arguments with SRet flag if they are pointers.
Differential Revision: https://reviews.llvm.org/D67179
llvm-svn: 371054
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/Mips/MipsCallLowering.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsCallLowering.cpp b/llvm/lib/Target/Mips/MipsCallLowering.cpp index 0d0e446fee9..aac29967f59 100644 --- a/llvm/lib/Target/Mips/MipsCallLowering.cpp +++ b/llvm/lib/Target/Mips/MipsCallLowering.cpp @@ -508,7 +508,9 @@ bool MipsCallLowering::lowerCall(MachineIRBuilder &MIRBuilder, for (auto &Arg : Info.OrigArgs) { if (!isSupportedType(Arg.Ty)) return false; - if (Arg.Flags[0].isByVal() || Arg.Flags[0].isSRet()) + if (Arg.Flags[0].isByVal()) + return false; + if (Arg.Flags[0].isSRet() && !Arg.Ty->isPointerTy()) return false; } |