aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Mips/MipsFastISel.cpp
diff options
context:
space:
mode:
authorVasileios Kalintiris <Vasileios.Kalintiris@imgtec.com>2015-07-28 21:43:31 +0000
committerVasileios Kalintiris <Vasileios.Kalintiris@imgtec.com>2015-07-28 21:43:31 +0000
commit9876946aee62bbe1e963200a0e55e2fd785c5a88 (patch)
tree63b53d4d195f605f4e619518d06e596b02d7ce1b /llvm/lib/Target/Mips/MipsFastISel.cpp
parentc69780d7977078d10d6ef86fd81ea0a3ac9c5939 (diff)
downloadllvm-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.cpp9
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);