[llvm-commits] [dragonegg] r95496 - /dragonegg/trunk/llvm-convert.cpp

Duncan Sands baldrick at free.fr
Sat Feb 6 04:42:08 PST 2010


Author: baldrick
Date: Sat Feb  6 06:42:07 2010
New Revision: 95496

URL: http://llvm.org/viewvc/llvm-project?rev=95496&view=rev
Log:
When doing builtin function lowering, "Result" should only be
set if there is a value to return.  In one of these cases an
unreachable instruction was being returned, in the other a call
to a void returning function.  This fixes darwin-ehreturn-1.c
from the GCC testsuite.

Modified:
    dragonegg/trunk/llvm-convert.cpp

Modified: dragonegg/trunk/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-convert.cpp?rev=95496&r1=95495&r2=95496&view=diff

==============================================================================
--- dragonegg/trunk/llvm-convert.cpp (original)
+++ dragonegg/trunk/llvm-convert.cpp Sat Feb  6 06:42:07 2010
@@ -4794,7 +4794,8 @@
   return true;
 }
 
-bool TreeToLLVM::EmitBuiltinEHReturn(gimple stmt, Value *&Result) {
+bool TreeToLLVM::EmitBuiltinEHReturn(gimple stmt,
+                                     Value *&Result ATTRIBUTE_UNUSED) {
   if (!validate_gimple_arglist(stmt, INTEGER_TYPE, POINTER_TYPE, VOID_TYPE))
     return false;
 
@@ -4808,12 +4809,9 @@
   Offset = Builder.CreateIntCast(Offset, IntPtr, /*isSigned*/true);
   Handler = Builder.CreateBitCast(Handler, Type::getInt8PtrTy(Context));
 
-  SmallVector<Value *, 2> Args;
-  Args.push_back(Offset);
-  Args.push_back(Handler);
-  Builder.CreateCall(Intrinsic::getDeclaration(TheModule, IID),
-                     Args.begin(), Args.end());
-  Result = Builder.CreateUnreachable();
+  Value *Args[2] = { Offset, Handler };
+  Builder.CreateCall(Intrinsic::getDeclaration(TheModule, IID), Args, Args + 2);
+  Builder.CreateUnreachable();
   BeginBlock(BasicBlock::Create(Context));
 
   return true;
@@ -4886,12 +4884,13 @@
   return true;
 }
 
-bool TreeToLLVM::EmitBuiltinUnwindInit(gimple stmt, Value *&Result) {
+bool TreeToLLVM::EmitBuiltinUnwindInit(gimple stmt,
+                                       Value *&Result ATTRIBUTE_UNUSED) {
   if (!validate_gimple_arglist(stmt, VOID_TYPE))
     return false;
 
-  Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule,
-                                                    Intrinsic::eh_unwind_init));
+  Builder.CreateCall(Intrinsic::getDeclaration(TheModule,
+                                               Intrinsic::eh_unwind_init));
 
   return true;
 }





More information about the llvm-commits mailing list