[llvm] r254728 - [WebAssembly] Factor out the list of supported calling conventions.
Dan Gohman via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 4 09:16:08 PST 2015
Author: djg
Date: Fri Dec 4 11:16:07 2015
New Revision: 254728
URL: http://llvm.org/viewvc/llvm-project?rev=254728&view=rev
Log:
[WebAssembly] Factor out the list of supported calling conventions.
Modified:
llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
Modified: llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp?rev=254728&r1=254727&r2=254728&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp Fri Dec 4 11:16:07 2015
@@ -257,6 +257,16 @@ static void fail(SDLoc DL, SelectionDAG
DiagnosticInfoUnsupported(DL, *MF.getFunction(), msg, SDValue()));
}
+// Test whether the given calling convention is supported.
+static bool
+CallingConvSupported(CallingConv::ID CallConv) {
+ // We currently support the language-independent target-independent
+ // conventions.
+ return CallConv == CallingConv::C ||
+ CallConv == CallingConv::Fast ||
+ CallConv == CallingConv::Cold;
+}
+
SDValue
WebAssemblyTargetLowering::LowerCall(CallLoweringInfo &CLI,
SmallVectorImpl<SDValue> &InVals) const {
@@ -267,8 +277,7 @@ WebAssemblyTargetLowering::LowerCall(Cal
MachineFunction &MF = DAG.getMachineFunction();
CallingConv::ID CallConv = CLI.CallConv;
- if (CallConv != CallingConv::C && CallConv != CallingConv::Fast &&
- CallConv != CallingConv::Cold)
+ if (!CallingConvSupported(CallConv))
fail(DL, DAG,
"WebAssembly doesn't support language-specific or target-specific "
"calling conventions yet");
@@ -367,7 +376,7 @@ SDValue WebAssemblyTargetLowering::Lower
const SmallVectorImpl<SDValue> &OutVals, SDLoc DL,
SelectionDAG &DAG) const {
assert(Outs.size() <= 1 && "WebAssembly can only return up to one value");
- if (CallConv != CallingConv::C)
+ if (!CallingConvSupported(CallConv))
fail(DL, DAG, "WebAssembly doesn't support non-C calling conventions");
if (IsVarArg)
fail(DL, DAG, "WebAssembly doesn't support varargs yet");
@@ -399,7 +408,7 @@ SDValue WebAssemblyTargetLowering::Lower
SmallVectorImpl<SDValue> &InVals) const {
MachineFunction &MF = DAG.getMachineFunction();
- if (CallConv != CallingConv::C)
+ if (!CallingConvSupported(CallConv))
fail(DL, DAG, "WebAssembly doesn't support non-C calling conventions");
if (IsVarArg)
fail(DL, DAG, "WebAssembly doesn't support varargs yet");
More information about the llvm-commits
mailing list