[lld] r255819 - Move parsing of LLVM options to parse() method.

Pete Cooper via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 16 12:53:27 PST 2015


Author: pete
Date: Wed Dec 16 14:53:27 2015
New Revision: 255819

URL: http://llvm.org/viewvc/llvm-project?rev=255819&view=rev
Log:
Move parsing of LLVM options to parse() method.

We used to parse the LLVM options in Driver::link.  However, that is
after parse() where we load files.  By moving the LLVM option handling
earlier, we can add DEBUG() to code such as MachONormalizedFileToAtoms.cpp
and have it enabled correctly by '-mllvm --debug'.

Modified:
    lld/trunk/include/lld/Driver/Driver.h
    lld/trunk/lib/Driver/CoreDriver.cpp
    lld/trunk/lib/Driver/DarwinLdDriver.cpp
    lld/trunk/lib/Driver/Driver.cpp
    lld/trunk/lib/Driver/GnuLdDriver.cpp

Modified: lld/trunk/include/lld/Driver/Driver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/Driver.h?rev=255819&r1=255818&r2=255819&view=diff
==============================================================================
--- lld/trunk/include/lld/Driver/Driver.h (original)
+++ lld/trunk/include/lld/Driver/Driver.h Wed Dec 16 14:53:27 2015
@@ -46,6 +46,9 @@ protected:
   static bool link(LinkingContext &context,
                    raw_ostream &diag = llvm::errs());
 
+  /// Parses the LLVM options from the context.
+  static void parseLLVMOptions(const LinkingContext &context);
+
 private:
   Driver() = delete;
 };

Modified: lld/trunk/lib/Driver/CoreDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/CoreDriver.cpp?rev=255819&r1=255818&r2=255819&view=diff
==============================================================================
--- lld/trunk/lib/Driver/CoreDriver.cpp (original)
+++ lld/trunk/lib/Driver/CoreDriver.cpp Wed Dec 16 14:53:27 2015
@@ -159,6 +159,8 @@ bool CoreDriver::parse(llvm::ArrayRef<co
     }
   }
 
+  parseLLVMOptions(ctx);
+
   if (ctx.getNodes().empty()) {
     diagnostics << "No input files\n";
     return false;

Modified: lld/trunk/lib/Driver/DarwinLdDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/DarwinLdDriver.cpp?rev=255819&r1=255818&r2=255819&view=diff
==============================================================================
--- lld/trunk/lib/Driver/DarwinLdDriver.cpp (original)
+++ lld/trunk/lib/Driver/DarwinLdDriver.cpp Wed Dec 16 14:53:27 2015
@@ -822,6 +822,10 @@ bool DarwinLdDriver::parse(llvm::ArrayRe
     }
   }
 
+  // Parse the LLVM options before we process files in case the file handling
+  // makes use of things like DEBUG().
+  parseLLVMOptions(ctx);
+
   // Handle input files and sectcreate.
   for (auto &arg : parsedArgs) {
     bool upward;

Modified: lld/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/Driver.cpp?rev=255819&r1=255818&r2=255819&view=diff
==============================================================================
--- lld/trunk/lib/Driver/Driver.cpp (original)
+++ lld/trunk/lib/Driver/Driver.cpp Wed Dec 16 14:53:27 2015
@@ -64,8 +64,7 @@ FileVector loadFile(LinkingContext &ctx,
   return files;
 }
 
-/// This is where the link is actually performed.
-bool Driver::link(LinkingContext &ctx, raw_ostream &diagnostics) {
+void Driver::parseLLVMOptions(const LinkingContext &ctx) {
   // Honor -mllvm
   if (!ctx.llvmOptions().empty()) {
     unsigned numArgs = ctx.llvmOptions().size();
@@ -76,6 +75,10 @@ bool Driver::link(LinkingContext &ctx, r
     args[numArgs + 1] = nullptr;
     llvm::cl::ParseCommandLineOptions(numArgs + 1, args);
   }
+}
+
+/// This is where the link is actually performed.
+bool Driver::link(LinkingContext &ctx, raw_ostream &diagnostics) {
   if (ctx.getNodes().empty())
     return false;
 

Modified: lld/trunk/lib/Driver/GnuLdDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/GnuLdDriver.cpp?rev=255819&r1=255818&r2=255819&view=diff
==============================================================================
--- lld/trunk/lib/Driver/GnuLdDriver.cpp (original)
+++ lld/trunk/lib/Driver/GnuLdDriver.cpp Wed Dec 16 14:53:27 2015
@@ -637,6 +637,10 @@ bool GnuLdDriver::parse(llvm::ArrayRef<c
   if (ctx->allowLinkWithDynamicLibraries())
     ctx->registry().addSupportELFDynamicSharedObjects(*ctx);
 
+  // Parse the LLVM options before we process files in case the file handling
+  // makes use of things like DEBUG().
+  parseLLVMOptions(*ctx);
+
   std::stack<int> groupStack;
   int numfiles = 0;
   bool asNeeded = false;




More information about the llvm-commits mailing list