diff gen/irstate.cpp @ 315:a9697749e898 trunk

[svn r336] Made sure calls within a landing pad area are invokes. Nested trys still need some consideration.
author ChristianK
date Thu, 03 Jul 2008 22:05:45 +0200
parents 9967a3270837
children 0d52412d5b1a
line wrap: on
line diff
--- a/gen/irstate.cpp	Wed Jul 02 22:20:18 2008 +0200
+++ b/gen/irstate.cpp	Thu Jul 03 22:05:45 2008 +0200
@@ -123,6 +123,47 @@
     return !scopebb()->empty() && scopebb()->back().isTerminator();
 }
 
+CallOrInvoke* IRState::CreateCallOrInvoke(LLValue* Callee, const char* Name)
+{
+    LLSmallVector<LLValue*, 1> args;
+    return CreateCallOrInvoke(Callee, args.begin(), args.end(), Name);
+}
+
+CallOrInvoke* IRState::CreateCallOrInvoke(LLValue* Callee, LLValue* Arg1, const char* Name)
+{
+    LLSmallVector<LLValue*, 1> args;
+    args.push_back(Arg1);
+    return CreateCallOrInvoke(Callee, args.begin(), args.end(), Name);
+}
+
+CallOrInvoke* IRState::CreateCallOrInvoke2(LLValue* Callee, LLValue* Arg1, LLValue* Arg2, const char* Name)
+{
+    LLSmallVector<LLValue*, 2> args;
+    args.push_back(Arg1);
+    args.push_back(Arg2);
+    return CreateCallOrInvoke(Callee, args.begin(), args.end(), Name);
+}
+
+CallOrInvoke* IRState::CreateCallOrInvoke3(LLValue* Callee, LLValue* Arg1, LLValue* Arg2, LLValue* Arg3, const char* Name)
+{
+    LLSmallVector<LLValue*, 3> args;
+    args.push_back(Arg1);
+    args.push_back(Arg2);
+    args.push_back(Arg3);
+    return CreateCallOrInvoke(Callee, args.begin(), args.end(), Name);
+}
+
+CallOrInvoke* IRState::CreateCallOrInvoke4(LLValue* Callee, LLValue* Arg1, LLValue* Arg2,  LLValue* Arg3, LLValue* Arg4, const char* Name)
+{
+    LLSmallVector<LLValue*, 4> args;
+    args.push_back(Arg1);
+    args.push_back(Arg2);
+    args.push_back(Arg3);
+    args.push_back(Arg4);
+    return CreateCallOrInvoke(Callee, args.begin(), args.end(), Name);
+}
+
+
 //////////////////////////////////////////////////////////////////////////////////////////
 
 IRBuilder* IRBuilderHelper::operator->()