diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-11-04 21:13:02 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-04 21:13:02 +0000 | 
| commit | b27ec09a7e3f391ec763801d14d0732dcc75a216 (patch) | |
| tree | e3dadfdedd603e32a442e31e827b2ef822bba315 | |
| parent | d732f396a2b4c0abca3d06fb170390e444f269c4 (diff) | |
| download | bcm5719-llvm-b27ec09a7e3f391ec763801d14d0732dcc75a216.tar.gz bcm5719-llvm-b27ec09a7e3f391ec763801d14d0732dcc75a216.zip  | |
Move -undef flag into PreprocessorInitOptions
llvm-svn: 86047
| -rw-r--r-- | clang/include/clang/Frontend/InitPreprocessor.h | 12 | ||||
| -rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 5 | ||||
| -rw-r--r-- | clang/tools/clang-cc/clang-cc.cpp | 12 | 
3 files changed, 18 insertions, 11 deletions
diff --git a/clang/include/clang/Frontend/InitPreprocessor.h b/clang/include/clang/Frontend/InitPreprocessor.h index b29ee2728a8..bf27b19aa3d 100644 --- a/clang/include/clang/Frontend/InitPreprocessor.h +++ b/clang/include/clang/Frontend/InitPreprocessor.h @@ -29,7 +29,16 @@ class PreprocessorInitOptions {    std::vector<std::pair<std::string, bool/*isPTH*/> > Includes;    std::vector<std::string> MacroIncludes; +  unsigned UsePredefines : 1; /// Initialize the preprocessor with the compiler +                              /// and target specific predefines. +  public: +  PreprocessorInitOptions() : UsePredefines(true) {} + +  bool getUsePredefines() const { return UsePredefines; } +  void setUsePredefines(bool Value) { +    UsePredefines = Value; +  }    void addMacroDef(const std::string &Name) {      Macros.push_back(std::make_pair(Name, false)); @@ -63,8 +72,7 @@ public:  /// environment ready to process a single file. This returns true on error.  ///  bool InitializePreprocessor(Preprocessor &PP, -                            const PreprocessorInitOptions& InitOptions, -                            bool undef_macros); +                            const PreprocessorInitOptions& InitOptions);  } // end namespace clang diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index ec5c1061bb9..3a54d1dca78 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -443,8 +443,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,  /// environment ready to process a single file. This returns true on error.  ///  bool clang::InitializePreprocessor(Preprocessor &PP, -                                   const PreprocessorInitOptions &InitOpts, -                                   bool undef_macros) { +                                   const PreprocessorInitOptions &InitOpts) {    std::vector<char> PredefineBuffer;    const char *LineDirective = "# 1 \"<built-in>\" 3\n"; @@ -452,7 +451,7 @@ bool clang::InitializePreprocessor(Preprocessor &PP,                           LineDirective, LineDirective+strlen(LineDirective));    // Install things like __POWERPC__, __GNUC__, etc into the macro table. -  if (!undef_macros) +  if (InitOpts.getUsePredefines())      InitializePredefinedMacros(PP.getTargetInfo(), PP.getLangOptions(),                                 PredefineBuffer); diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp index 671fc35d182..66aa19a5d31 100644 --- a/clang/tools/clang-cc/clang-cc.cpp +++ b/clang/tools/clang-cc/clang-cc.cpp @@ -933,12 +933,9 @@ static bool InitializeSourceManager(Preprocessor &PP,  // Preprocessor Initialization  //===----------------------------------------------------------------------===// -// FIXME: Preprocessor builtins to support. -//   -A...    - Play with #assertions -//   -undef   - Undefine all predefined macros -  static llvm::cl::opt<bool> -undef_macros("undef", llvm::cl::value_desc("macro"), llvm::cl::desc("undef all system defines")); +UndefMacros("undef", llvm::cl::value_desc("macro"), +            llvm::cl::desc("undef all system defines"));  static llvm::cl::list<std::string>  D_macros("D", llvm::cl::value_desc("macro"), llvm::cl::Prefix, @@ -1137,6 +1134,9 @@ void InitializeIncludePaths(const char *Argv0, HeaderSearch &Headers,  }  void InitializePreprocessorInitOptions(PreprocessorInitOptions &InitOpts) { +  // Use predefines? +  InitOpts.setUsePredefines(!UndefMacros); +    // Add macros from the command line.    unsigned d = 0, D = D_macros.size();    unsigned u = 0, U = U_macros.size(); @@ -1251,7 +1251,7 @@ public:      PreprocessorInitOptions InitOpts;      InitializePreprocessorInitOptions(InitOpts); -    if (InitializePreprocessor(*PP, InitOpts, undef_macros)) +    if (InitializePreprocessor(*PP, InitOpts))        return 0;      return PP.take();  | 

