On Tue, Oct 25, 2016 at 01:40:03PM +0200, Martin Liška wrote:
> While reading and trying to understand sanopt code, I've noticed that we can 
> possibly
> optimize out a ASAN_CHECK when there's a BB in between DOM(BB) and BB which 
> can
> call a freeing function.
> 
> Ready to be installed after it survives regression tests?
> Martin

> >From d8ed43c1f8e29cfe63ebd7c40a76715c9c644522 Mon Sep 17 00:00:00 2001
> From: marxin <mli...@suse.cz>
> Date: Tue, 25 Oct 2016 13:29:47 +0200
> Subject: [PATCH] Fix not caught use-after-scope with -O1 (PR sanitize/78106)
> 
> gcc/ChangeLog:
> 
> 2016-10-25  Martin Liska  <mli...@suse.cz>
> 
>       PR sanitizer/78106
>       * sanopt.c (imm_dom_path_with_freeing_call): Handle gasm
>       statements as they can also contain possibly a freeing call.

Other places use something like
      if ((gimple_code (stmt) == GIMPLE_ASM && gimple_vdef (stmt))
          || (is_gimple_call (stmt)
              && (!nonfreeing_call_p (stmt) || !nonbarrier_call_p (stmt))))
though what you added matches more what ipa-pure-const.c does, ok.

> gcc/testsuite/ChangeLog:
> 
> 2016-10-25  Martin Liska  <mli...@suse.cz>
> 
>       PR sanitizer/78106
>       * gcc.dg/asan/pr78106.c: New test.

The test is bad.  1) asan is supported on various architectures, call release
is x86 specific, and even there on some OSes the syntax might be different
(_release, etc.?) 2) you aren't trying to maintain required stack alignment

So, I think it would be better to just use dg-do compile and just scan some
dump.

        Jakub

Reply via email to