[cfe-commits] r62566 - in /cfe/trunk/tools/ccc/ccclib: Arguments.py Driver.py Tools.py

Daniel Dunbar daniel at zuster.org
Mon Jan 19 17:53:54 PST 2009


Author: ddunbar
Date: Mon Jan 19 19:53:54 2009
New Revision: 62566

URL: http://llvm.org/viewvc/llvm-project?rev=62566&view=rev
Log:
ccc: Recognize that -M and -MM only run preprocessor.
 - Clean up some placement of output args to match gcc more precisely
   (for testing).

Modified:
    cfe/trunk/tools/ccc/ccclib/Arguments.py
    cfe/trunk/tools/ccc/ccclib/Driver.py
    cfe/trunk/tools/ccc/ccclib/Tools.py

Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Arguments.py?rev=62566&r1=62565&r2=62566&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Arguments.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Arguments.py Mon Jan 19 19:53:54 2009
@@ -539,15 +539,16 @@
         ####
         # Bring on the random garbage.
 
-        self.MOption = self.addOption(FlagOption('-M'))
-        self.MDOption = self.addOption(FlagOption('-MD'))
-        self.MGOption = self.addOption(FlagOption('-MG'))
-        self.MMDOption = self.addOption(FlagOption('-MMD'))
-        self.MPOption = self.addOption(FlagOption('-MP'))
-        self.MMOption = self.addOption(FlagOption('-MM'))
-        self.MFOption = self.addOption(JoinedOrSeparateOption('-MF'))
-        self.MTOption = self.addOption(JoinedOrSeparateOption('-MT'))
-        self.MQOption = self.addOption(JoinedOrSeparateOption('-MQ'))
+        self.MGroup = OptionGroup('-M')
+        self.MOption = self.addOption(FlagOption('-M', self.MGroup))
+        self.MDOption = self.addOption(FlagOption('-MD', self.MGroup))
+        self.MGOption = self.addOption(FlagOption('-MG', self.MGroup))
+        self.MMDOption = self.addOption(FlagOption('-MMD', self.MGroup))
+        self.MPOption = self.addOption(FlagOption('-MP', self.MGroup))
+        self.MMOption = self.addOption(FlagOption('-MM', self.MGroup))
+        self.MFOption = self.addOption(JoinedOrSeparateOption('-MF', self.MGroup))
+        self.MTOption = self.addOption(JoinedOrSeparateOption('-MT', self.MGroup))
+        self.MQOption = self.addOption(JoinedOrSeparateOption('-MQ', self.MGroup))
         self.MachOption = self.addOption(FlagOption('-Mach'))
         self.uGroup = OptionGroup('-u')
         self.undefOption = self.addOption(FlagOption('-undef', self.uGroup))

Modified: cfe/trunk/tools/ccc/ccclib/Driver.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Driver.py?rev=62566&r1=62565&r2=62566&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Driver.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Driver.py Mon Jan 19 19:53:54 2009
@@ -338,6 +338,8 @@
         hasDashC = args.getLastArg(self.parser.cOption)
         hasDashE = args.getLastArg(self.parser.EOption)
         hasDashS = args.getLastArg(self.parser.SOption)
+        hasDashM = args.getLastArg(self.parser.MOption)
+        hasDashMM = args.getLastArg(self.parser.MMOption)
 
         inputType = None
         inputTypeOpt = None
@@ -401,7 +403,7 @@
         finalPhaseOpt = None
 
         # Determine what compilation mode we are in.
-        if hasDashE:
+        if hasDashE or hasDashM or hasDashMM:
             finalPhase = Phases.Phase.eOrderPreprocess
             finalPhaseOpt = hasDashE
         elif hasSyntaxOnly:
@@ -520,14 +522,12 @@
         # FIXME: We need to handle canonicalization of the specified arch.
 
         archs = []
-        hasDashM = None
+        hasDashM = args.getLastArg(self.parser.MGroup)
         hasSaveTemps = (args.getLastArg(self.parser.saveTempsOption) or 
                         args.getLastArg(self.parser.saveTempsOption2))
         for arg in args:
             if arg.opt is self.parser.archOption:
                 archs.append(arg)
-            elif arg.opt.name.startswith('-M'):
-                hasDashM = arg
 
         if not archs:
             archs.append(args.makeSeparateArg(self.hostInfo.getArchName(args),

Modified: cfe/trunk/tools/ccc/ccclib/Tools.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Tools.py?rev=62566&r1=62565&r2=62566&view=diff

==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Tools.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Tools.py Mon Jan 19 19:53:54 2009
@@ -425,27 +425,21 @@
     def getOutputArgs(self, arglist, output, isCPP=False):
         if isinstance(output, Jobs.PipedJob):
             if isCPP:
-                output_args = []
+                return []
             else:
-                output_args = ['-o', '-']
+                return ['-o', '-']
         elif output is None:
-            output_args = ['-o', '/dev/null']
+            return ['-o', '/dev/null']
         else:
-            output_args = arglist.render(output)
-
-        # There is no need for this level of compatibility, but it
-        # makes diffing easier.
-        if (not arglist.getLastArg(arglist.parser.syntaxOnlyOption) and
-            not arglist.getLastArg(arglist.parser.SOption)):
-            return [], output_args
-        else:
-            return output_args, []
+            return arglist.render(output)
 
     def addCPPOptionsArgs(self, cmd_args, arch, arglist, inputs,
                           output_args, isCXX):
         # Derived from cpp_options.
         self.addCPPUniqueOptionsArgs(cmd_args, arch, arglist, inputs)
         
+        cmd_args.extend(output_args)
+
         self.addCC1Args(cmd_args, arch, arglist)
 
         # NOTE: The code below has some commonality with cpp_options,
@@ -598,11 +592,10 @@
             arglist.getLastArg(arglist.parser.traditionalCPPOption)):
             cmd_args.append('-traditional-cpp')
 
-        early_output_args, end_output_args = self.getOutputArgs(arglist, output,
-                                                                isCPP=True)
+        output_args = self.getOutputArgs(arglist, output,
+                                         isCPP=True)
         self.addCPPOptionsArgs(cmd_args, arch, arglist, inputs, 
-                               early_output_args, isCXX)
-        cmd_args.extend(end_output_args)
+                               output_args, isCXX)
 
         arglist.addAllArgs(cmd_args, arglist.parser.dGroup)
 
@@ -629,7 +622,16 @@
             arglist.getLastArg(arglist.parser.f_traditionalOption)):
             raise Arguments.InvalidArgumentsError("-traditional is not supported without -E")
 
-        early_output_args, end_output_args = self.getOutputArgs(arglist, output)
+        output_args = self.getOutputArgs(arglist, output)
+    
+        # There is no need for this level of compatibility, but it
+        # makes diffing easier.
+        if (not arglist.getLastArg(arglist.parser.syntaxOnlyOption) and
+            not arglist.getLastArg(arglist.parser.SOption)):
+            early_output_args, end_output_args = [], output_args
+        else:
+            early_output_args, end_output_args = output_args, []
+
         if usePP:
             self.addCPPUniqueOptionsArgs(cmd_args, arch, arglist, inputs)
             self.addCC1OptionsArgs(cmd_args, arch, arglist, inputs,





More information about the cfe-commits mailing list