[cfe-commits] r44453 - in /cfe/trunk: CodeGen/CGStmt.cpp test/CodeGen/switch.c

Chris Lattner sabre at nondot.org
Fri Nov 30 09:44:58 PST 2007


Author: lattner
Date: Fri Nov 30 11:44:57 2007
New Revision: 44453

URL: http://llvm.org/viewvc/llvm-project?rev=44453&view=rev
Log:
Support fully general case expressions, patch by Sanghyeon Seo!

Modified:
    cfe/trunk/CodeGen/CGStmt.cpp
    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=44453&r1=44452&r2=44453&view=diff

==============================================================================
--- cfe/trunk/CodeGen/CGStmt.cpp (original)
+++ cfe/trunk/CodeGen/CGStmt.cpp Fri Nov 30 11:44:57 2007
@@ -444,7 +444,9 @@
     
   StartBlock("sw.bb");
   llvm::BasicBlock *CaseDest = Builder.GetInsertBlock();
-  llvm::ConstantInt *LV = cast<llvm::ConstantInt>(EmitScalarExpr(S.getLHS()));
+  llvm::APSInt CaseVal(32);
+  S.getLHS()->isIntegerConstantExpr(CaseVal, getContext());
+  llvm::ConstantInt *LV = llvm::ConstantInt::get(CaseVal);
   SwitchInsn->addCase(LV, CaseDest);
   EmitStmt(S.getSubStmt());
 }

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

==============================================================================
--- cfe/trunk/test/CodeGen/switch.c (original)
+++ cfe/trunk/test/CodeGen/switch.c Fri Nov 30 11:44:57 2007
@@ -3,6 +3,8 @@
 int foo(int i) {
   int j = 0;
   switch (i) {
+  case -1:
+    j = 1; break;
   case 1 : 
     j = 2; break;
   case 2:





More information about the cfe-commits mailing list