[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