diff options
author | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2015-07-28 21:43:31 +0000 |
---|---|---|
committer | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2015-07-28 21:43:31 +0000 |
commit | 9876946aee62bbe1e963200a0e55e2fd785c5a88 (patch) | |
tree | 63b53d4d195f605f4e619518d06e596b02d7ce1b /llvm/lib/Target/Mips/MipsFastISel.cpp | |
parent | c69780d7977078d10d6ef86fd81ea0a3ac9c5939 (diff) | |
download | llvm-9876946aee62bbe1e963200a0e55e2fd785c5a88.zip llvm-9876946aee62bbe1e963200a0e55e2fd785c5a88.tar.gz llvm-9876946aee62bbe1e963200a0e55e2fd785c5a88.tar.bz2 |
[mips][FastISel] Fix call lowering by bailing out on "fastcc" calls.
Summary:
Currently, we support only the MIPS O32 ABI calling convention for call
lowering. With this change we avoid using the O32 calling convetion for
lowering calls marked as using the fast calling convention.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11515
llvm-svn: 243485
Diffstat (limited to 'llvm/lib/Target/Mips/MipsFastISel.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/MipsFastISel.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsFastISel.cpp b/llvm/lib/Target/Mips/MipsFastISel.cpp index 80d400b..2c88950 100644 --- a/llvm/lib/Target/Mips/MipsFastISel.cpp +++ b/llvm/lib/Target/Mips/MipsFastISel.cpp @@ -1245,6 +1245,10 @@ bool MipsFastISel::fastLowerCall(CallLoweringInfo &CLI) { const Value *Callee = CLI.Callee; MCSymbol *Symbol = CLI.Symbol; + // Do not handle FastCC. + if (CC == CallingConv::Fast) + return false; + // Allow SelectionDAG isel to handle tail calls. if (IsTailCall) return false; @@ -1422,6 +1426,11 @@ bool MipsFastISel::selectRet(const Instruction *I) { if (Ret->getNumOperands() > 0) { CallingConv::ID CC = F.getCallingConv(); + + // Do not handle FastCC. + if (CC == CallingConv::Fast) + return false; + SmallVector<ISD::OutputArg, 4> Outs; GetReturnInfo(F.getReturnType(), F.getAttributes(), Outs, TLI, DL); |