Print this page
12724 update smatch to 0.6.1-rc1-il-5

@@ -436,24 +436,24 @@
 
                 __pass_to_client(expr, RAW_ASSIGNMENT_HOOK);
 
                 /* foo = !bar() */
                 if (__handle_condition_assigns(expr))
-                        break;
+                        goto after_assign;
                 /* foo = (x < 5 ? foo : 5); */
                 if (__handle_select_assigns(expr))
-                        break;
+                        goto after_assign;
                 /* foo = ({frob(); frob(); frob(); 1;}) */
                 if (__handle_expr_statement_assigns(expr))
-                        break;
+                        break;  // FIXME: got after
                 /* foo = (3, 4); */
                 if (handle_comma_assigns(expr))
-                        break;
-                if (handle_postop_assigns(expr))
-                        break;
+                        goto after_assign;
                 if (handle__builtin_choose_expr_assigns(expr))
-                        break;
+                        goto after_assign;
+                if (handle_postop_assigns(expr))
+                        break;  /* no need to goto after_assign */
 
                 __split_expr(expr->right);
                 if (outside_of_function())
                         __pass_to_client(expr, GLOBAL_ASSIGNMENT_HOOK);
                 else

@@ -468,12 +468,12 @@
 
                 if (get_macro_name(right->pos) &&
                     get_macro_name(expr->pos) != get_macro_name(right->pos))
                         __pass_to_client(expr, MACRO_ASSIGNMENT_HOOK);
 
+after_assign:
                 __pass_to_client(expr, ASSIGNMENT_HOOK_AFTER);
-
                 __split_expr(expr->left);
                 break;
         }
         case EXPR_DEREF:
                 expr_set_parent_expr(expr->deref, expr);