From 4d6a2546b5a98d3386edfc159dad5ca9b9bb6a70 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Tue, 6 Mar 2018 17:09:31 +0300 Subject: [PATCH] struct_assignment/assigned_expression: save some more information In assigned_expr, we want to save some fake expressions but really want we don't want to save is fake struct assignments because there are so many of them. Signed-off-by: Dan Carpenter --- check_assigned_expr.c | 2 +- smatch.h | 1 + smatch_flow.c | 1 + smatch_struct_assignment.c | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/check_assigned_expr.c b/check_assigned_expr.c index 5543cfcc..1260a80b 100644 --- a/check_assigned_expr.c +++ b/check_assigned_expr.c @@ -63,7 +63,7 @@ static void match_assignment(struct expression *expr) return; if (is_fake_call(expr->right)) return; - if (__in_fake_assign) { + if (__in_fake_struct_assign) { struct range_list *rl; if (!get_implied_rl(expr->right, &rl)) diff --git a/smatch.h b/smatch.h index b8e43032..6d61818a 100644 --- a/smatch.h +++ b/smatch.h @@ -431,6 +431,7 @@ int in_condition(void); /* smatch_flow.c */ extern int __in_fake_assign; +extern int __in_fake_struct_assign; void smatch (int argc, char **argv); int inside_loop(void); int definitely_inside_loop(void); diff --git a/smatch_flow.c b/smatch_flow.c index 960bfdd6..4dbb47d5 100644 --- a/smatch_flow.c +++ b/smatch_flow.c @@ -26,6 +26,7 @@ #include "smatch_slist.h" int __in_fake_assign; +int __in_fake_struct_assign; static int in_fake_env; int final_pass; int __inline_call; diff --git a/smatch_struct_assignment.c b/smatch_struct_assignment.c index 620d7f9c..393ad1ae 100644 --- a/smatch_struct_assignment.c +++ b/smatch_struct_assignment.c @@ -133,7 +133,9 @@ struct expression *get_faked_expression(void) static void split_fake_expr(struct expression *expr) { __in_fake_assign++; + __in_fake_struct_assign++; __split_expr(expr); + __in_fake_struct_assign--; __in_fake_assign--; } -- 2.11.4.GIT