On 13/02/2018 00:49, Jakub Jelinek wrote: > On Tue, Feb 13, 2018 at 12:41:28AM +0100, Paolo Bonzini wrote: >> On 09/02/2018 19:07, Jakub Jelinek wrote: >>> On Fri, Feb 09, 2018 at 07:01:08PM +0100, Richard Biener wrote: >>>>> which indeed fixes the testcase and seems not to break asan.exp. >>>> >>>> Huh. Need to double check why that makes sense ;) >>> >>> I think it does, for both ASAN_CHECK and ASAN_MARK the pointer argument >>> is the second one, the first one is an integer argument with flags. >>> And ASAN_MARK, both poison and unpoison, works kind like a clobber on the >>> referenced variable, before unpoison it is generally inaccessible and after >>> poison too. >> >> This was too optimistic. :( >> >> In use-after-scope-types-1.C, after the patch FRE+DSE are able to >> optimize away the problematic read. In general it seems to me that the >> sanitizer passes should be before DSE if we want ASAN builtins to have >> precise info, otherwise some reads or stores might not be >> instrumented---GCC was being lucky here. >> >> The obvious change here is: > > That is way too early, I don't think this is a good idea. > Certainly not in stage4.
Certainly, for now I'll revert. But can you expand on why it's too early? Indeed I suppose it may affect inlining decisions, on the other hand it seems dangerous to apply instrumentation after pretty much any optimization pass. Thanks, Paolo