Do not allow fallthroughs in switch statements. This fixes PR37,
253.perlbmk, and test/Programs/SingleSource/UnitTests/2003-10-13-SwitchTest.c!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9101 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp
index dea97e9..a3607be 100644
--- a/lib/Target/CBackend/Writer.cpp
+++ b/lib/Target/CBackend/Writer.cpp
@@ -1057,7 +1057,9 @@
Out << "; /* for PHI node */\n";
}
- if (CurBB->getNext() != Succ || isa<InvokeInst>(CurBB->getTerminator())) {
+ if (CurBB->getNext() != Succ ||
+ isa<InvokeInst>(CurBB->getTerminator()) ||
+ isa<SwitchInst>(CurBB->getTerminator())) {
Out << std::string(Indent, ' ') << " goto ";
writeOperand(Succ);
Out << ";\n";