[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