I think it's fine to add whatever commandline flags are needed for testing - 
they are not user-visible anyway, and we should have *some* means to test KASan 
instrumentation without a frontend.

Looks mostly good.


================
Comment at: lib/Transforms/Instrumentation/AddressSanitizer.cpp:1447
@@ +1446,3 @@
+  if (!CompileKernel)
+    appendToGlobalCtors(M, AsanCtorFunction, kAsanCtorAndDtorPriority);
+  Mapping = getShadowMapping(TargetTriple, LongSize, CompileKernel);
----------------
I would actually prefer a null initialization, as it's weird to create 
functions that would never be called in KASan mode.

================
Comment at: tools/clang/include/clang/Basic/Sanitizers.h:56
@@ +55,3 @@
+  /// \brief Check if either ASan or KASan is enabled.
+  bool hasAsanOrKasan() const;
+
----------------
Um, no, I mean to add `hasOneOf` method that would take ArrayRef of sanitizer 
kinds and return true iff at least one of them is enabled. Then you could call 
it as...

================
Comment at: tools/clang/lib/AST/Decl.cpp:3684
@@ -3683,3 +3683,3 @@
   ASTContext &Context = getASTContext();
-  if (!Context.getLangOpts().Sanitize.has(SanitizerKind::Address) ||
+  if (!(Context.getLangOpts().Sanitize.hasAsanOrKasan()) ||
       !Context.getLangOpts().SanitizeAddressFieldPadding)
----------------
  Context.getLangOpts().Sanitize.hasOneOf({SanitizerKind::Address, 
SanitizerKind::KernelAddress})

================
Comment at: tools/clang/lib/CodeGen/BackendUtil.cpp:204
@@ -203,3 +203,3 @@
                                       legacy::PassManagerBase &PM) {
   PM.add(createAddressSanitizerFunctionPass());
   PM.add(createAddressSanitizerModulePass());
----------------
Pass false here.

http://reviews.llvm.org/D10411

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to