Hi! var ={v} {CLOBBER}; stmts shouldn't be tsan instrumented, those aren't stores, just markups that var's scope ends. Additionally this patch removes the IMHO unneeded TODO_update_address_taken (discussed earlier already) and fixes formatting of a few comments.
Ok for trunk? 2012-11-23 Jakub Jelinek <ja...@redhat.com> * tsan.c: Fix up comment formatting. (instrument_gimple): Ignore gimple_clobber_p stmts. (pass_tsan, pass_tsan_O0): Remove TODO_update_address_taken from todo_flags_finish. --- gcc/tsan.c.jj 2012-11-23 10:31:37.000000000 +0100 +++ gcc/tsan.c 2012-11-23 13:35:06.448082211 +0100 @@ -107,7 +107,7 @@ is_load_of_const_p (tree expr, bool is_w } /* Instruments EXPR if needed. If any instrumentation is inserted, - * return true. */ + return true. */ static bool instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write) @@ -161,7 +161,7 @@ instrument_expr (gimple_stmt_iterator gs || bitsize != size * BITS_PER_UNIT) return false; - /* TODO: handle other case: ARRAY_RANGE_REF. */ + /* TODO: handle other case: ARRAY_RANGE_REF. */ if (tcode != ARRAY_REF && tcode != VAR_DECL && tcode != COMPONENT_REF @@ -197,7 +197,7 @@ instrument_expr (gimple_stmt_iterator gs { /* If the call can throw, it must be the last stmt in a basic block, so the instrumented stmts need to be - inserted in successor bbs. */ + inserted in successor bbs. */ if (is_ctrl_altering_stmt (stmt)) { edge e; @@ -217,7 +217,7 @@ instrument_expr (gimple_stmt_iterator gs } /* Instruments the gimple pointed to by GSI. Return - * true if func entry/exit should be instrumented. */ + true if func entry/exit should be instrumented. */ static bool instrument_gimple (gimple_stmt_iterator gsi) @@ -231,7 +231,8 @@ instrument_gimple (gimple_stmt_iterator && (gimple_call_fndecl (stmt) != builtin_decl_implicit (BUILT_IN_TSAN_INIT))) return true; - else if (is_gimple_assign (stmt)) + else if (is_gimple_assign (stmt) + && !gimple_clobber_p (stmt)) { if (gimple_store_p (stmt)) { @@ -248,7 +249,7 @@ instrument_gimple (gimple_stmt_iterator } /* Instruments all interesting memory accesses in the current function. - * Return true if func entry/exit should be instrumented. */ + Return true if func entry/exit should be instrumented. */ static bool instrument_memory_accesses (void) @@ -372,8 +373,7 @@ struct gimple_opt_pass pass_tsan = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_verify_all | TODO_update_ssa - | TODO_update_address_taken /* todo_flags_finish */ + TODO_verify_all | TODO_update_ssa /* todo_flags_finish */ } }; @@ -399,7 +399,6 @@ struct gimple_opt_pass pass_tsan_O0 = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_verify_all | TODO_update_ssa - | TODO_update_address_taken /* todo_flags_finish */ + TODO_verify_all | TODO_update_ssa /* todo_flags_finish */ } }; Jakub