diff options
author | Jan Korous <jkorous@apple.com> | 2019-09-24 00:33:47 +0000 |
---|---|---|
committer | Jan Korous <jkorous@apple.com> | 2019-09-24 00:33:47 +0000 |
commit | fbd13570b0d5f92ef2cf6bcfe7cc2f6178500187 (patch) | |
tree | 7b92759b8a8157d032135c2bc344e320f3a4d109 | |
parent | a4dd98f2e90b2916fd347020c70ba804c5557db1 (diff) | |
download | bcm5719-llvm-fbd13570b0d5f92ef2cf6bcfe7cc2f6178500187.tar.gz bcm5719-llvm-fbd13570b0d5f92ef2cf6bcfe7cc2f6178500187.zip |
[static analyzer] Define __clang_analyzer__ macro in driver
Differential Revision: https://reviews.llvm.org/D67938
llvm-svn: 372679
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 4 | ||||
-rw-r--r-- | clang/test/Analysis/misc-driver.c | 5 | ||||
-rw-r--r-- | clang/test/Analysis/misc-ps.m | 4 |
4 files changed, 8 insertions, 9 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index aa17efbee32..6453af73b0a 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3896,8 +3896,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_municode)) CmdArgs.push_back("-DUNICODE"); - if (isa<AnalyzeJobAction>(JA)) + if (isa<AnalyzeJobAction>(JA)) { RenderAnalyzerOptions(Args, CmdArgs, Triple, Input); + CmdArgs.push_back("-D__clang_analyzer__"); + } // Enable compatilibily mode to avoid analyzer-config related errors. // Since we can't access frontend flags through hasArg, let's manually iterate diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 95d9f62c608..9da37e0a446 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -990,10 +990,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI, else if (LangOpts.getStackProtector() == LangOptions::SSPReq) Builder.defineMacro("__SSP_ALL__", "3"); - // Define a macro that exists only when using the static analyzer. - if (FEOpts.ProgramAction == frontend::RunAnalysis) - Builder.defineMacro("__clang_analyzer__"); - if (LangOpts.FastRelaxedMath) Builder.defineMacro("__FAST_RELAXED_MATH__"); diff --git a/clang/test/Analysis/misc-driver.c b/clang/test/Analysis/misc-driver.c new file mode 100644 index 00000000000..f9e7fe373d3 --- /dev/null +++ b/clang/test/Analysis/misc-driver.c @@ -0,0 +1,5 @@ +// RUN: %clang --analyze %s + +#ifndef __clang_analyzer__ +#error __clang_analyzer__ not defined +#endif diff --git a/clang/test/Analysis/misc-ps.m b/clang/test/Analysis/misc-ps.m index 9a75cfd87b6..1cfd2eb1caf 100644 --- a/clang/test/Analysis/misc-ps.m +++ b/clang/test/Analysis/misc-ps.m @@ -2,10 +2,6 @@ // RUN: %clang_analyze_cc1 -triple i386-apple-darwin10 -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,alpha.core,osx.cocoa.AtSync -analyzer-store=region -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s -#ifndef __clang_analyzer__ -#error __clang_analyzer__ not defined -#endif - typedef struct objc_ivar *Ivar; typedef struct objc_selector *SEL; typedef signed char BOOL; |