Test? (Also below) On Tue, Mar 6, 2018 at 8:27 PM, Petr Hosek via cfe-commits < cfe-commits@lists.llvm.org> wrote:
> Author: phosek > Date: Tue Mar 6 17:27:03 2018 > New Revision: 326860 > > URL: http://llvm.org/viewvc/llvm-project?rev=326860&view=rev > Log: > [Driver] Automatically disable incompatible default sanitizers > > When a sanitizer incompatible with one of the default sanitizers > is explicitly enabled, automatically disable all the conflicting > default sanitizers. > > Differential Revision: https://reviews.llvm.org/D44064 > > Modified: > cfe/trunk/lib/Driver/SanitizerArgs.cpp > > Modified: cfe/trunk/lib/Driver/SanitizerArgs.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ > SanitizerArgs.cpp?rev=326860&r1=326859&r2=326860&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Driver/SanitizerArgs.cpp (original) > +++ cfe/trunk/lib/Driver/SanitizerArgs.cpp Tue Mar 6 17:27:03 2018 > @@ -332,8 +332,30 @@ SanitizerArgs::SanitizerArgs(const ToolC > } > } > > + std::pair<SanitizerMask, SanitizerMask> IncompatibleGroups[] = { > + std::make_pair(Address, Thread | Memory), > + std::make_pair(Thread, Memory), > + std::make_pair(Leak, Thread | Memory), > + std::make_pair(KernelAddress, Address | Leak | Thread | Memory), > + std::make_pair(HWAddress, Address | Thread | Memory | > KernelAddress), > + std::make_pair(Efficiency, Address | HWAddress | Leak | Thread | > Memory | > + KernelAddress), > + std::make_pair(Scudo, Address | HWAddress | Leak | Thread | Memory | > + KernelAddress | Efficiency), > + std::make_pair(SafeStack, Address | HWAddress | Leak | Thread | > Memory | > + KernelAddress | Efficiency)}; > + > // Enable toolchain specific default sanitizers if not explicitly > disabled. > - Kinds |= TC.getDefaultSanitizers() & ~AllRemove; > + SanitizerMask Default = TC.getDefaultSanitizers() & ~AllRemove; > + > + // Disable default sanitizers that are incompatible with the default > ones. > You probably mean "Disable default sanitizers that are incompatible with explicitly requested ones"? > + for (auto G : IncompatibleGroups) { > + SanitizerMask Group = G.first; > + if ((Default & Group) && (Kinds & G.second)) > + Default &= ~Group; > + } > + > + Kinds |= Default; > > // We disable the vptr sanitizer if it was enabled by group expansion > but RTTI > // is disabled. > @@ -369,18 +391,6 @@ SanitizerArgs::SanitizerArgs(const ToolC > } > > // Warn about incompatible groups of sanitizers. > - std::pair<SanitizerMask, SanitizerMask> IncompatibleGroups[] = { > - std::make_pair(Address, Thread | Memory), > - std::make_pair(Thread, Memory), > - std::make_pair(Leak, Thread | Memory), > - std::make_pair(KernelAddress, Address | Leak | Thread | Memory), > - std::make_pair(HWAddress, Address | Thread | Memory | > KernelAddress), > - std::make_pair(Efficiency, Address | HWAddress | Leak | Thread | > Memory | > - KernelAddress), > - std::make_pair(Scudo, Address | HWAddress | Leak | Thread | Memory | > - KernelAddress | Efficiency), > - std::make_pair(SafeStack, Address | HWAddress | Leak | Thread | > Memory | > - KernelAddress | Efficiency)}; > for (auto G : IncompatibleGroups) { > SanitizerMask Group = G.first; > if (Kinds & Group) { > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits