Restrict the hack from r263429 to asan and msan.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 15 Mar 2016 09:41:39 +0000 (09:41 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 15 Mar 2016 09:41:39 +0000 (09:41 +0000)
The other sanitizers don't have backend passes that rely on value names.
Avoid paying the compile time cost of names there.

llvm-svn: 263541

clang/lib/Frontend/CompilerInvocation.cpp

index c212794..d264361 100644 (file)
@@ -2154,10 +2154,12 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
       Res.getLangOpts()->ObjCExceptions = 1;
   }
 
-  // FIXME: Override value name discarding when sanitizers are used because the
+  // FIXME: Override value name discarding when asan or msan is used because the
   // backend passes depend on the name of the alloca in order to print out
   // names.
-  Res.getCodeGenOpts().DiscardValueNames &= Res.getLangOpts()->Sanitize.empty();
+  Res.getCodeGenOpts().DiscardValueNames &=
+      !Res.getLangOpts()->Sanitize.has(SanitizerKind::Address) &&
+      !Res.getLangOpts()->Sanitize.has(SanitizerKind::Memory);
 
   // FIXME: ParsePreprocessorArgs uses the FileManager to read the contents of
   // PCH file and find the original header name. Remove the need to do that in