# HG changeset patch # User Tomas Lindquist Olsen # Date 1217613271 -7200 # Node ID f7259fa1349c0a15c9e74217bc07cbd133945639 # Parent 7a67dedbf9338aee567b213d87ea258e2181d1ea Fixed problem with invoking intrinsics, which llvm doesn't allow. diff -r 7a67dedbf933 -r f7259fa1349c gen/irstate.h --- a/gen/irstate.h Fri Aug 01 18:07:33 2008 +0200 +++ b/gen/irstate.h Fri Aug 01 19:54:31 2008 +0200 @@ -215,6 +215,13 @@ llvm::BasicBlock* pad; if(pad = func()->landingPad.get()) { + // intrinsics don't support invoking + LLFunction* funcval = llvm::dyn_cast(Callee); + if (funcval && funcval->isIntrinsic()) + { + return new CallOrInvoke_Call(ir->CreateCall(Callee, ArgBegin, ArgEnd, Name)); + } + llvm::BasicBlock* postinvoke = llvm::BasicBlock::Create("postinvoke", topfunc(), scopeend()); llvm::InvokeInst* invoke = ir->CreateInvoke(Callee, postinvoke, pad, ArgBegin, ArgEnd, Name); scope() = IRScope(postinvoke, scopeend());