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

<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><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>