]> granicus.if.org Git - clang/commitdiff
Use EmitCallOrInvoke in EmitBadTypeidCall and EmitBadCastCall.
authorAnders Carlsson <andersca@mac.com>
Wed, 13 Apr 2011 02:35:36 +0000 (02:35 +0000)
committerAnders Carlsson <andersca@mac.com>
Wed, 13 Apr 2011 02:35:36 +0000 (02:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129424 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprCXX.cpp

index 4d5f8827de228bac9e648185a8c39a847e30a27a..4caba15cb2113b4384cd3777c6015c2aac83aade 100644 (file)
@@ -17,6 +17,8 @@
 #include "CGObjCRuntime.h"
 #include "CGDebugInfo.h"
 #include "llvm/Intrinsics.h"
+#include "llvm/Support/CallSite.h"
+
 using namespace clang;
 using namespace CodeGen;
 
@@ -1349,14 +1351,8 @@ static llvm::Constant *getBadTypeidFn(CodeGenFunction &CGF) {
 }
 
 static void EmitBadTypeidCall(CodeGenFunction &CGF) {
-  llvm::Value *F = getBadTypeidFn(CGF);
-  if (llvm::BasicBlock *InvokeDest = CGF.getInvokeDest()) {
-    llvm::BasicBlock *Cont = CGF.createBasicBlock("invoke.cont");
-    CGF.Builder.CreateInvoke(F, Cont, InvokeDest)->setDoesNotReturn();
-    CGF.EmitBlock(Cont);
-  } else
-    CGF.Builder.CreateCall(F)->setDoesNotReturn();
-  
+  llvm::Value *Fn = getBadTypeidFn(CGF);
+  CGF.EmitCallOrInvoke(Fn, 0, 0).setDoesNotReturn();
   CGF.Builder.CreateUnreachable();
 }
 
@@ -1437,14 +1433,8 @@ static llvm::Constant *getBadCastFn(CodeGenFunction &CGF) {
 }
 
 static void EmitBadCastCall(CodeGenFunction &CGF) {
-  llvm::Value *F = getBadCastFn(CGF);
-  if (llvm::BasicBlock *InvokeDest = CGF.getInvokeDest()) {
-    llvm::BasicBlock *Cont = CGF.createBasicBlock("invoke.cont");
-    CGF.Builder.CreateInvoke(F, Cont, InvokeDest)->setDoesNotReturn();
-    CGF.EmitBlock(Cont);
-  } else
-    CGF.Builder.CreateCall(F)->setDoesNotReturn();
-  
+  llvm::Value *Fn = getBadCastFn(CGF);
+  CGF.EmitCallOrInvoke(Fn, 0, 0).setDoesNotReturn();
   CGF.Builder.CreateUnreachable();
 }