[cfe-commits] r44484 - in /cfe/trunk: CodeGen/CGStmt.cpp clang.xcodeproj/project.pbxproj test/CodeGen/switch.c

Chris Lattner sabre at nondot.org
Fri Nov 30 21:27:34 PST 2007


Author: lattner
Date: Fri Nov 30 23:27:33 2007
New Revision: 44484

URL: http://llvm.org/viewvc/llvm-project?rev=44484&view=rev
Log:
fix a couple switch codegen problems Oliver reported.

Modified:
    cfe/trunk/CodeGen/CGStmt.cpp
    cfe/trunk/clang.xcodeproj/project.pbxproj
    cfe/trunk/test/CodeGen/switch.c

Modified: cfe/trunk/CodeGen/CGStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CGStmt.cpp?rev=44484&r1=44483&r2=44484&view=diff

==============================================================================
--- cfe/trunk/CodeGen/CGStmt.cpp (original)
+++ cfe/trunk/CodeGen/CGStmt.cpp Fri Nov 30 23:27:33 2007
@@ -468,7 +468,7 @@
 
   // Create basic block to hold stuff that comes after switch statement.
   // Initially use it to hold DefaultStmt.
-  llvm::BasicBlock *NextBlock = new llvm::BasicBlock("after.sw", CurFn);
+  llvm::BasicBlock *NextBlock = new llvm::BasicBlock("after.sw");
   SwitchInsn = Builder.CreateSwitch(CondV, NextBlock);
 
   // All break statements jump to NextBlock. If BreakContinueStack is non empty
@@ -492,8 +492,11 @@
   llvm::BasicBlock *BB = Builder.GetInsertBlock();
   if (isDummyBlock(BB))
     BB->eraseFromParent();
+  else  // Otherwise, branch to continuation.
+    Builder.CreateBr(NextBlock);
 
   // Place NextBlock as the new insert point.
+  CurFn->getBasicBlockList().push_back(NextBlock);
   Builder.SetInsertPoint(NextBlock);
   SwitchInsn = SavedSwitchInsn;
   CaseRangeBlock = SavedCRBlock;

Modified: cfe/trunk/clang.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/clang.xcodeproj/project.pbxproj?rev=44484&r1=44483&r2=44484&view=diff

==============================================================================
--- cfe/trunk/clang.xcodeproj/project.pbxproj (original)
+++ cfe/trunk/clang.xcodeproj/project.pbxproj Fri Nov 30 23:27:33 2007
@@ -766,6 +766,7 @@
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
+			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
 			projectDirPath = "";

Modified: cfe/trunk/test/CodeGen/switch.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/switch.c?rev=44484&r1=44483&r2=44484&view=diff

==============================================================================
--- cfe/trunk/test/CodeGen/switch.c (original)
+++ cfe/trunk/test/CodeGen/switch.c Fri Nov 30 23:27:33 2007
@@ -64,3 +64,13 @@
   }
   return j;
 }
+
+void foo5(){
+    switch(0){
+    default:
+        if (0) {
+
+        }
+    }
+}
+





More information about the cfe-commits mailing list