<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Mar 15, 2013 at 12:20 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><div class="im">On Thu, Mar 14, 2013 at 7:03 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><p dir="ltr"><br>
On Mar 14, 2013 5:16 AM, "Alexey Samsonov" <<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>> wrote:<br>
><br>
> Author: samsonov<br>
> Date: Thu Mar 14 07:13:27 2013<br>
> New Revision: 177061<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=177061&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=177061&view=rev</a><br>
> Log:<br>
> [ASan] Make -fsanitize=address imply -fsanitize=init-order (if the latter is not explicitly disabled).</p>
</div><p dir="ltr">Should we consider making it always implied even if it has been previously explicitly disabled? That's how warning flags work, for example, so users are used to that sort of precedence/ordering system</p>

</blockquote></div><div>Hm, this makes sense. I think I'll change this to your way tomorrow. Thanks!</div></div></div></div></blockquote><div><br></div><div style>Done in r177391.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>

<p dir="ltr">><br>
> Modified:<br>
>     cfe/trunk/lib/Driver/Tools.cpp<br>
>     cfe/trunk/test/Driver/fsanitize.c<br>
><br>
> Modified: cfe/trunk/lib/Driver/Tools.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=177061&r1=177060&r2=177061&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=177061&r1=177060&r2=177061&view=diff</a><br>



> ==============================================================================<br>
> --- cfe/trunk/lib/Driver/Tools.cpp (original)<br>
> +++ cfe/trunk/lib/Driver/Tools.cpp Thu Mar 14 07:13:27 2013<br>
> @@ -1483,6 +1483,8 @@ SanitizerArgs::SanitizerArgs(const Drive<br>
>        AsanZeroBaseShadow(false) {<br>
>    unsigned AllKinds = 0;  // All kinds of sanitizers that were turned on<br>
>                            // at least once (possibly, disabled further).<br>
> +  unsigned AllRemovedKinds = 0;  // All kinds of sanitizers that were explicitly<br>
> +                                 // removed at least once.<br>
>    for (ArgList::const_iterator I = Args.begin(), E = Args.end(); I != E; ++I) {<br>
>      unsigned Add, Remove;<br>
>      if (!parse(D, Args, *I, Add, Remove, true))<br>
> @@ -1491,6 +1493,12 @@ SanitizerArgs::SanitizerArgs(const Drive<br>
>      Kind |= Add;<br>
>      Kind &= ~Remove;<br>
>      AllKinds |= Add;<br>
> +    AllRemovedKinds |= Remove;<br>
> +  }<br>
> +  // Assume -fsanitize=address implies -fsanitize=init-order, if the latter is<br>
> +  // not disabled explicitly.<br>
> +  if ((Kind & Address) != 0 && (AllRemovedKinds & InitOrder) == 0) {<br>
> +    Kind |= InitOrder;<br>
>    }<br>
><br>
>    UbsanTrapOnError =<br>
><br>
> Modified: cfe/trunk/test/Driver/fsanitize.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=177061&r1=177060&r2=177061&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=177061&r1=177060&r2=177061&view=diff</a><br>



> ==============================================================================<br>
> --- cfe/trunk/test/Driver/fsanitize.c (original)<br>
> +++ cfe/trunk/test/Driver/fsanitize.c Thu Mar 14 07:13:27 2013<br>
> @@ -16,6 +16,12 @@<br>
>  // RUN: %clang -target x86_64-linux-gnu -fsanitize=address-full %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-FULL<br>
>  // CHECK-ASAN-FULL: "-fsanitize={{((address|init-order|use-after-return|use-after-scope),?){4}"}}<br>
><br>
> +// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 |  FileCheck %s --check-prefix=CHECK-ASAN-IMPLIED-INIT-ORDER<br>
> +// CHECK-ASAN-IMPLIED-INIT-ORDER: "-fsanitize={{((address|init-order),?){2}"}}<br>
> +<br>
> +// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize=init-order %s -### 2>&1 |  FileCheck %s --check-prefix=CHECK-ASAN-NO-IMPLIED-INIT-ORDER<br>
> +// CHECK-ASAN-NO-IMPLIED-INIT-ORDER-NOT: init-order<br>
> +<br>
>  // RUN: %clang -target x86_64-linux-gnu -fcatch-undefined-behavior -fno-sanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-NO-TRAP-ERROR<br>
>  // CHECK-UNDEFINED-NO-TRAP-ERROR: '-fcatch-undefined-behavior' not allowed with '-fno-sanitize-undefined-trap-on-error'<br>
><br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</p>
</div></div></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>