On 11/01/2016 03:53 PM, Jakub Jelinek wrote: > On Tue, Nov 01, 2016 at 03:47:54PM +0100, Martin Liška wrote: >> On 10/27/2016 07:23 PM, Jakub Jelinek wrote: >>> Ok for trunk with that change. >>> >>> Jakub >> >> Hello. >> >> I'll commit the patch as soon as following patch would be accepted. The patch >> fixes false positives when running asan-bootstrap. > > What kind of false positives it is for each case? Is it with normal > asan-bootstrap (without your -fsanitize-use-after-scope changes), or > only with those changes, or only with those changes and > -fsanitize-use-after-scope used during bootstrap?
It's only with those changes as -fsanitize-address-use-after-scope is enabled by default with -fsanitize=address. Current bootstrap-asan works fine. I'll re-trigger the bootstrap again, but IIRC the main culprit was ASAN_MARK poisoning done at switch labels (which should be partially fixed with a newer version of the patch). Martin > >> >From b62e4d7ffe659ec338ef83e84ccb572a07264283 Mon Sep 17 00:00:00 2001 >> From: marxin <mli...@suse.cz> >> Date: Tue, 20 Sep 2016 10:31:25 +0200 >> Subject: [PATCH 1/4] Fix ASAN bootstrap uninitialized warning. >> >> gcc/ChangeLog: >> >> 2016-09-26 Martin Liska <mli...@suse.cz> >> >> * ipa-devirt.c (record_targets_from_bases): Initialize a >> variable. >> * omp-low.c (lower_omp_target): Remove a variable from >> scope defined by a switch statement. >> * tree-dump.c (dequeue_and_dump): Likewise. >> >> gcc/java/ChangeLog: >> >> 2016-09-26 Martin Liska <mli...@suse.cz> >> >> * mangle.c (mangle_type): Remove a variable from >> scope defined by a switch statement. >> --- >> gcc/ipa-devirt.c | 2 +- >> gcc/omp-low.c | 11 ++++------- >> gcc/tree-dump.c | 8 +++----- >> 3 files changed, 8 insertions(+), 13 deletions(-) >> >> diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c >> index 49e2195..5c0ae72 100644 >> --- a/gcc/ipa-devirt.c >> +++ b/gcc/ipa-devirt.c >> @@ -2862,7 +2862,7 @@ record_targets_from_bases (tree otr_type, >> { >> while (true) >> { >> - HOST_WIDE_INT pos, size; >> + HOST_WIDE_INT pos = 0, size; >> tree base_binfo; >> tree fld; >> >> diff --git a/gcc/omp-low.c b/gcc/omp-low.c >> index e5b9e4c..62c9e5c 100644 >> --- a/gcc/omp-low.c >> +++ b/gcc/omp-low.c >> @@ -15803,11 +15803,10 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, >> omp_context *ctx) >> push_gimplify_context (); >> fplist = NULL; >> >> + tree var, x; >> for (c = clauses; c ; c = OMP_CLAUSE_CHAIN (c)) >> switch (OMP_CLAUSE_CODE (c)) >> { >> - tree var, x; >> - >> default: >> break; >> case OMP_CLAUSE_MAP: >> @@ -16066,12 +16065,11 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, >> omp_context *ctx) >> vec_alloc (vkind, map_cnt); >> unsigned int map_idx = 0; >> >> + tree ovar, nc, s, purpose, var, x, type; >> + unsigned int talign; >> for (c = clauses; c ; c = OMP_CLAUSE_CHAIN (c)) >> switch (OMP_CLAUSE_CODE (c)) >> { >> - tree ovar, nc, s, purpose, var, x, type; >> - unsigned int talign; >> - >> default: >> break; >> >> @@ -16442,10 +16440,10 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, >> omp_context *ctx) >> if (offloaded || data_region) >> { >> tree prev = NULL_TREE; >> + tree var, x; >> for (c = clauses; c ; c = OMP_CLAUSE_CHAIN (c)) >> switch (OMP_CLAUSE_CODE (c)) >> { >> - tree var, x; >> default: >> break; >> case OMP_CLAUSE_FIRSTPRIVATE: >> @@ -16594,7 +16592,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, >> omp_context *ctx) >> for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) >> switch (OMP_CLAUSE_CODE (c)) >> { >> - tree var; >> default: >> break; >> case OMP_CLAUSE_MAP: >> diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c >> index df47181..89f72a0 100644 >> --- a/gcc/tree-dump.c >> +++ b/gcc/tree-dump.c >> @@ -420,8 +420,6 @@ dequeue_and_dump (dump_info_p di) >> /* Now handle the various kinds of nodes. */ >> switch (code) >> { >> - int i; >> - >> case IDENTIFIER_NODE: >> dump_string_field (di, "strg", IDENTIFIER_POINTER (t)); >> dump_int (di, "lngt", IDENTIFIER_LENGTH (t)); >> @@ -435,6 +433,7 @@ dequeue_and_dump (dump_info_p di) >> >> case STATEMENT_LIST: >> { >> + int i; >> tree_stmt_iterator it; >> for (i = 0, it = tsi_start (t); !tsi_end_p (it); tsi_next (&it), i++) >> { >> @@ -447,7 +446,7 @@ dequeue_and_dump (dump_info_p di) >> >> case TREE_VEC: >> dump_int (di, "lngt", TREE_VEC_LENGTH (t)); >> - for (i = 0; i < TREE_VEC_LENGTH (t); ++i) >> + for (int i = 0; i < TREE_VEC_LENGTH (t); ++i) >> { >> char buffer[32]; >> sprintf (buffer, "%u", i); >> @@ -707,9 +706,8 @@ dequeue_and_dump (dump_info_p di) >> break; >> case OMP_CLAUSE: >> { >> - int i; >> fprintf (di->stream, "%s\n", omp_clause_code_name[OMP_CLAUSE_CODE (t)]); >> - for (i = 0; i < omp_clause_num_ops[OMP_CLAUSE_CODE (t)]; i++) >> + for (int i = 0; i < omp_clause_num_ops[OMP_CLAUSE_CODE (t)]; i++) >> dump_child ("op: ", OMP_CLAUSE_OPERAND (t, i)); >> } >> break; >> -- >> 2.10.1 >> > > > Jakub >