]> granicus.if.org Git - clang/commitdiff
fix off-by-one error
authorChris Lattner <sabre@nondot.org>
Sat, 25 Aug 2007 01:55:00 +0000 (01:55 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 25 Aug 2007 01:55:00 +0000 (01:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41392 91177308-0d34-0410-b5e6-96231b3b80d8

AST/Expr.cpp
AST/Stmt.cpp

index e71fcfa79255566d9e882a19e52d9de17b54e517..d5fd241e8a3d5ba3d694632e682487efc31babf4 100644 (file)
@@ -231,6 +231,8 @@ bool Expr::hasLocalSideEffect() const {
   }
   case BinaryOperatorClass:
     return cast<BinaryOperator>(this)->isAssignmentOp();
+  case CompoundAssignOperator:
+    return true;
 
   case MemberExprClass:
   case ArraySubscriptExprClass:
index 58d0eb755cea4da96db46f2c019aee55c06ba7f6..4aca7a49911d6e55d933993f07eeb6c982de1b35 100644 (file)
@@ -21,7 +21,7 @@ static struct StmtClassNameTable {
   const char *Name;
   unsigned Counter;
   unsigned Size;
-} StmtClassInfo[Stmt::lastExprConstant];
+} StmtClassInfo[Stmt::lastExprConstant+1];
 
 static StmtClassNameTable &getStmtInfoTableEntry(Stmt::StmtClass E) {
   static bool Initialized = false;
@@ -48,13 +48,13 @@ void Stmt::PrintStats() {
   
   unsigned sum = 0;
   fprintf(stderr, "*** Stmt/Expr Stats:\n");
-  for (int i = 0; i != Stmt::lastExprConstant; i++) {
+  for (int i = 0; i != Stmt::lastExprConstant+1; i++) {
     if (StmtClassInfo[i].Name == 0) continue;
     sum += StmtClassInfo[i].Counter;
   }
   fprintf(stderr, "  %d stmts/exprs total.\n", sum);
   sum = 0;
-  for (int i = 0; i != Stmt::lastExprConstant; i++) {
+  for (int i = 0; i != Stmt::lastExprConstant+1; i++) {
     if (StmtClassInfo[i].Name == 0) continue;
     fprintf(stderr, "    %d %s, %d each (%d bytes)\n", 
             StmtClassInfo[i].Counter, StmtClassInfo[i].Name,