[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