]> granicus.if.org Git - clang/commitdiff
Add PreprocessorOutputOptions to CompilerInvocation, and move initialization to
authorDaniel Dunbar <daniel@zuster.org>
Wed, 11 Nov 2009 10:07:44 +0000 (10:07 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 11 Nov 2009 10:07:44 +0000 (10:07 +0000)
clang-cc/Options.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86828 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/CompilerInvocation.h
include/clang/Frontend/Utils.h
lib/Frontend/PrintPreprocessedOutput.cpp
tools/clang-cc/Options.cpp
tools/clang-cc/Options.h
tools/clang-cc/clang-cc.cpp

index c2a66bdf1d6ea5d21fb386299d94e983c16638c3..b217dca965c1047105a3b03949b16d1b72a07097 100644 (file)
@@ -15,6 +15,7 @@
 #include "clang/Frontend/DiagnosticOptions.h"
 #include "clang/Frontend/HeaderSearchOptions.h"
 #include "clang/Frontend/PreprocessorOptions.h"
+#include "clang/Frontend/PreprocessorOutputOptions.h"
 #include "llvm/ADT/StringMap.h"
 #include <string>
 
@@ -42,13 +43,13 @@ class CompilerInvocation {
   /// Options controlling the preprocessor (aside from #include handling).
   PreprocessorOptions PreprocessorOpts;
 
+  /// Options controlling preprocessed output.
+  PreprocessorOutputOptions PreprocessorOutputOpts;
+
   /// The location for the output file. This is optional only for compiler
   /// invocations which have no output.
   std::string OutputFile;
 
-  /// Set of target-specific code generation features to enable/disable.
-  llvm::StringMap<bool> TargetFeatures;
-
 public:
   CompilerInvocation() {}
 
@@ -58,11 +59,6 @@ public:
   std::string &getOutputFile() { return OutputFile; }
   const std::string &getOutputFile() const { return OutputFile; }
 
-  llvm::StringMap<bool> &getTargetFeatures() { return TargetFeatures; }
-  const llvm::StringMap<bool> &getTargetFeatures() const {
-    return TargetFeatures;
-  }
-
   /// @}
   /// @name Option Subgroups
   /// @{
@@ -88,6 +84,13 @@ public:
     return PreprocessorOpts;
   }
 
+  PreprocessorOutputOptions &getPreprocessorOutputOpts() {
+    return PreprocessorOutputOpts;
+  }
+  const PreprocessorOutputOptions &getPreprocessorOutputOpts() const {
+    return PreprocessorOutputOpts;
+  }
+
   /// @}
 };
 
index ffaaaea30bc99d37ea904fe837fd719e384b2242..d3a0b097f0c03753ce6854efeb35c5adcfab50da 100644 (file)
@@ -59,7 +59,7 @@ bool ProcessWarningOptions(Diagnostic &Diags,
 
 /// DoPrintPreprocessedInput - Implement -E mode.
 void DoPrintPreprocessedInput(Preprocessor &PP, llvm::raw_ostream* OS,
-                              PreprocessorOutputOptions &Opts);
+                              const PreprocessorOutputOptions &Opts);
 
 /// RewriteMacrosInInput - Implement -rewrite-macros mode.
 void RewriteMacrosInInput(Preprocessor &PP, llvm::raw_ostream* OS);
index b1a1936150302cd2fc57cb22cc42ceb48931c041..37424057809c00019134c98c425680d493b2c31f 100644 (file)
@@ -468,7 +468,7 @@ static void DoPrintMacros(Preprocessor &PP, llvm::raw_ostream *OS) {
 /// DoPrintPreprocessedInput - This implements -E mode.
 ///
 void clang::DoPrintPreprocessedInput(Preprocessor &PP, llvm::raw_ostream *OS,
-                                     PreprocessorOutputOptions &Opts) {
+                                     const PreprocessorOutputOptions &Opts) {
   // Show macros with no output is handled specially.
   if (!Opts.ShowCPP) {
     assert(Opts.ShowMacros && "Not yet implemented!");
index 7b22d28fcb99d9d6ca6fe55d2475694bb4398383..211f1412a1b4d539e4df61cdb21d45b54f8bbd32 100644 (file)
@@ -20,6 +20,7 @@
 #include "clang/Frontend/HeaderSearchOptions.h"
 #include "clang/Frontend/PCHReader.h"
 #include "clang/Frontend/PreprocessorOptions.h"
+#include "clang/Frontend/PreprocessorOutputOptions.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/Support/CommandLine.h"
@@ -526,6 +527,31 @@ isysroot("isysroot", llvm::cl::value_desc("dir"), llvm::cl::init("/"),
 
 }
 
+//===----------------------------------------------------------------------===//
+// Preprocessed Output Options
+//===----------------------------------------------------------------------===//
+
+namespace preprocessoroutputoptions {
+
+static llvm::cl::opt<bool>
+DisableLineMarkers("P", llvm::cl::desc("Disable linemarker output in -E mode"));
+
+static llvm::cl::opt<bool>
+EnableCommentOutput("C", llvm::cl::desc("Enable comment output in -E mode"));
+
+static llvm::cl::opt<bool>
+EnableMacroCommentOutput("CC",
+                         llvm::cl::desc("Enable comment output in -E mode, "
+                                        "even from macro expansions"));
+static llvm::cl::opt<bool>
+DumpMacros("dM", llvm::cl::desc("Print macro definitions in -E mode instead of"
+                                " normal output"));
+static llvm::cl::opt<bool>
+DumpDefines("dD", llvm::cl::desc("Print macro definitions in -E mode in "
+                                "addition to normal output"));
+
+}
+
 //===----------------------------------------------------------------------===//
 // Option Object Construction
 //===----------------------------------------------------------------------===//
@@ -1010,3 +1036,15 @@ void clang::InitializeLangOptions(LangOptions &Options, LangKind LK,
 
   Target.setForcedLangOptions(Options);
 }
+
+void
+clang::InitializePreprocessorOutputOptions(PreprocessorOutputOptions &Opts) {
+  using namespace preprocessoroutputoptions;
+
+  Opts.ShowCPP = !DumpMacros;
+  Opts.ShowMacros = DumpMacros || DumpDefines;
+  Opts.ShowLineMarkers = !DisableLineMarkers;
+  Opts.ShowComments = EnableCommentOutput;
+  Opts.ShowMacroComments = EnableMacroCommentOutput;
+}
+
index 6d1447d991f688166e16b6815e486b5614e0fa42..88acb4263a5bc7410d244a55b9b1c688c0b9395c 100644 (file)
@@ -20,6 +20,7 @@ class DiagnosticOptions;
 class HeaderSearchOptions;
 class LangOptions;
 class PreprocessorOptions;
+class PreprocessorOutputOptions;
 class TargetInfo;
 
 enum LangKind {
@@ -55,6 +56,8 @@ void InitializeLangOptions(LangOptions &Options, LangKind LK,
 
 void InitializePreprocessorOptions(PreprocessorOptions &Opts);
 
+void InitializePreprocessorOutputOptions(PreprocessorOutputOptions &Opts);
+
 } // end namespace clang
 
 #endif
index e812e364e82db4d30994c9276d2dee46a4d84671..d8c9ddd220d505ac401588aa41cd33d1219c3e07 100644 (file)
@@ -454,27 +454,10 @@ static llvm::cl::opt<bool> OptPedantic("pedantic");
 static llvm::cl::opt<bool> OptPedanticErrors("pedantic-errors");
 static llvm::cl::opt<bool> OptNoWarnings("w");
 
-//===----------------------------------------------------------------------===//
-// Preprocessing (-E mode) Options
-//===----------------------------------------------------------------------===//
-static llvm::cl::opt<bool>
-DisableLineMarkers("P", llvm::cl::desc("Disable linemarker output in -E mode"));
-static llvm::cl::opt<bool>
-EnableCommentOutput("C", llvm::cl::desc("Enable comment output in -E mode"));
-static llvm::cl::opt<bool>
-EnableMacroCommentOutput("CC",
-                         llvm::cl::desc("Enable comment output in -E mode, "
-                                        "even from macro expansions"));
-static llvm::cl::opt<bool>
-DumpMacros("dM", llvm::cl::desc("Print macro definitions in -E mode instead of"
-                                " normal output"));
-static llvm::cl::opt<bool>
-DumpDefines("dD", llvm::cl::desc("Print macro definitions in -E mode in "
-                                "addition to normal output"));
-
 //===----------------------------------------------------------------------===//
 // Dependency file options
 //===----------------------------------------------------------------------===//
+
 static llvm::cl::opt<std::string>
 DependencyFile("dependency-file",
                llvm::cl::desc("Filename (or -) to write dependency output to"));
@@ -920,13 +903,8 @@ static void ProcessInputFile(const CompilerInvocation &CompOpts,
 
   case PrintPreprocessedInput: {
     llvm::TimeRegion Timer(ClangFrontendTimer);
-    PreprocessorOutputOptions Opts;
-    Opts.ShowCPP = !DumpMacros;
-    Opts.ShowMacros = DumpMacros || DumpDefines;
-    Opts.ShowLineMarkers = !DisableLineMarkers;
-    Opts.ShowComments = EnableCommentOutput;
-    Opts.ShowMacroComments = EnableMacroCommentOutput;
-    DoPrintPreprocessedInput(PP, OS.get(), Opts);
+    DoPrintPreprocessedInput(PP, OS.get(),
+                             CompOpts.getPreprocessorOutputOpts());
     ClearSourceMgr = true;
   }
 
@@ -1123,6 +1101,9 @@ static void ConstructCompilerInvocation(CompilerInvocation &Opts,
   // Initialize the other preprocessor options.
   InitializePreprocessorOptions(Opts.getPreprocessorOpts());
 
+  // Initialize the preprocessed output options.
+  InitializePreprocessorOutputOptions(Opts.getPreprocessorOutputOpts());
+
   // Finalize some code generation options.
   FinalizeCompileOptions(Opts.getCompileOpts(), Opts.getLangOpts());
 }