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
> 

Reply via email to