Mercurial > projects > ldc
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->()