diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index dd5f0b1eb52..3003a02064b 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -567,8 +567,10 @@ void CWriter::printFunction(Function *F) { void CWriter::visitReturnInst(ReturnInst *I) { // Don't output a void return if this is the last basic block in the function if (I->getNumOperands() == 0 && - *(I->getParent()->getParent()->end()-1) == I->getParent()) + *(I->getParent()->getParent()->end()-1) == I->getParent() && + !I->getParent()->size() == 1) { return; + } Out << " return"; if (I->getNumOperands()) { diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index dd5f0b1eb52..3003a02064b 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -567,8 +567,10 @@ void CWriter::printFunction(Function *F) { void CWriter::visitReturnInst(ReturnInst *I) { // Don't output a void return if this is the last basic block in the function if (I->getNumOperands() == 0 && - *(I->getParent()->getParent()->end()-1) == I->getParent()) + *(I->getParent()->getParent()->end()-1) == I->getParent() && + !I->getParent()->size() == 1) { return; + } Out << " return"; if (I->getNumOperands()) {