Print this page
11972 resync smatch


 162         } else {
 163                 arg = get_argument_from_call_expr(call->args, param);
 164                 if (!arg)
 165                         return;
 166                 name = get_variable_from_key(arg, key, &sym);
 167         }
 168         if (!name || !sym)
 169                 goto free;
 170 
 171         set_state(my_id, name, sym, &nospec);
 172 free:
 173         free_string(name);
 174 }
 175 
 176 static int is_nospec_asm(struct statement *stmt)
 177 {
 178         char *macro;
 179 
 180         if (!stmt || stmt->type != STMT_ASM)
 181                 return 0;


 182         macro = get_macro_name(stmt->asm_string->pos);
 183         if (!macro || strcmp(macro, "CALL_NOSPEC") != 0)
 184                 return 0;
 185         return 1;
 186 }
 187 
 188 static void match_asm(struct statement *stmt)
 189 {
 190         if (is_nospec_asm(stmt))
 191                 in_nospec_stmt = true;
 192 }
 193 
 194 static void match_after_nospec_asm(struct statement *stmt)
 195 {
 196         in_nospec_stmt = false;
 197 }
 198 
 199 static void mark_user_data_as_nospec(void)
 200 {
 201         struct stree *stree;




 162         } else {
 163                 arg = get_argument_from_call_expr(call->args, param);
 164                 if (!arg)
 165                         return;
 166                 name = get_variable_from_key(arg, key, &sym);
 167         }
 168         if (!name || !sym)
 169                 goto free;
 170 
 171         set_state(my_id, name, sym, &nospec);
 172 free:
 173         free_string(name);
 174 }
 175 
 176 static int is_nospec_asm(struct statement *stmt)
 177 {
 178         char *macro;
 179 
 180         if (!stmt || stmt->type != STMT_ASM)
 181                 return 0;
 182         if (!stmt->asm_string)
 183                 return 0;
 184         macro = get_macro_name(stmt->asm_string->pos);
 185         if (!macro || strcmp(macro, "CALL_NOSPEC") != 0)
 186                 return 0;
 187         return 1;
 188 }
 189 
 190 static void match_asm(struct statement *stmt)
 191 {
 192         if (is_nospec_asm(stmt))
 193                 in_nospec_stmt = true;
 194 }
 195 
 196 static void match_after_nospec_asm(struct statement *stmt)
 197 {
 198         in_nospec_stmt = false;
 199 }
 200 
 201 static void mark_user_data_as_nospec(void)
 202 {
 203         struct stree *stree;