[cfe-commits] r66737 - in /cfe/trunk/tools/ccc: ccclib/ToolChain.py ccclib/Tools.py ccclib/Types.py test/ccc/darwin-x86-cc1.m
Daniel Dunbar
daniel at zuster.org
Wed Mar 11 16:07:54 PDT 2009
Author: ddunbar
Date: Wed Mar 11 18:07:54 2009
New Revision: 66737
URL: http://llvm.org/viewvc/llvm-project?rev=66737&view=rev
Log:
ccc: -x assembler-with-cpp was broken for darwin, and it wasn't using
clang as the preprocessor even when it should.
Modified:
cfe/trunk/tools/ccc/ccclib/ToolChain.py
cfe/trunk/tools/ccc/ccclib/Tools.py
cfe/trunk/tools/ccc/ccclib/Types.py
cfe/trunk/tools/ccc/test/ccc/darwin-x86-cc1.m
Modified: cfe/trunk/tools/ccc/ccclib/ToolChain.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/ToolChain.py?rev=66737&r1=66736&r2=66737&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/ToolChain.py (original)
+++ cfe/trunk/tools/ccc/ccclib/ToolChain.py Wed Mar 11 18:07:54 2009
@@ -57,14 +57,14 @@
def shouldUseClangCompiler(self, action):
# If user requested no clang, or this isn't a "compile" phase,
- # or this isn't a C family option, then don't use clang.
+ # or this isn't an input clang understands, then don't use clang.
if (self.driver.cccNoClang or
not isinstance(action.phase, (Phases.PreprocessPhase,
Phases.CompilePhase,
Phases.SyntaxOnlyPhase,
Phases.EmitLLVMPhase,
Phases.PrecompilePhase)) or
- action.inputs[0].type not in Types.cTypesSet):
+ action.inputs[0].type not in Types.clangableTypesSet):
return False
if self.driver.cccNoClangPreprocessor:
Modified: cfe/trunk/tools/ccc/ccclib/Tools.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Tools.py?rev=66737&r1=66736&r2=66737&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Tools.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Tools.py Wed Mar 11 18:07:54 2009
@@ -193,7 +193,13 @@
elif outputType is Types.LLVMBCType:
cmd_args.append('-emit-llvm-bc')
elif outputType is Types.AsmTypeNoPP:
- cmd_args.append('-S')
+ # FIXME: This is hackish, it would be better if we had the
+ # action instead of just looking at types.
+ assert len(inputs) == 1
+ if inputs[0].type is Types.AsmType:
+ cmd_args.append('-E')
+ else:
+ cmd_args.append('-S')
elif (inputs[0].type.preprocess and
outputType is inputs[0].type.preprocess):
cmd_args.append('-E')
@@ -453,7 +459,9 @@
"""getCC1Name(type) -> name, use-cpp, is-cxx"""
# FIXME: Get bool results from elsewhere.
- if type is Types.CType or type is Types.CHeaderType:
+ if type is Types.AsmType:
+ return 'cc1',True,False
+ elif type is Types.CType or type is Types.CHeaderType:
return 'cc1',True,False
elif type is Types.CTypeNoPP or type is Types.CHeaderNoPPType:
return 'cc1',False,False
Modified: cfe/trunk/tools/ccc/ccclib/Types.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Types.py?rev=66737&r1=66736&r2=66737&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/ccclib/Types.py (original)
+++ cfe/trunk/tools/ccc/ccclib/Types.py Wed Mar 11 18:07:54 2009
@@ -148,14 +148,15 @@
}
# Set of C family types.
-cTypesSet = set([CType, CTypeNoPP,
- ObjCType, ObjCTypeNoPP,
- CXXType, CXXTypeNoPP,
- ObjCXXType, ObjCXXTypeNoPP,
- CHeaderType, CHeaderNoPPType,
- ObjCHeaderType, ObjCHeaderNoPPType,
- CXXHeaderType, CXXHeaderNoPPType,
- ObjCXXHeaderType, ObjCXXHeaderNoPPType])
+clangableTypesSet = set([AsmType, # Assembler to preprocess
+ CType, CTypeNoPP,
+ ObjCType, ObjCTypeNoPP,
+ CXXType, CXXTypeNoPP,
+ ObjCXXType, ObjCXXTypeNoPP,
+ CHeaderType, CHeaderNoPPType,
+ ObjCHeaderType, ObjCHeaderNoPPType,
+ CXXHeaderType, CXXHeaderNoPPType,
+ ObjCXXHeaderType, ObjCXXHeaderNoPPType])
# Set of C++ family types.
cxxTypesSet = set([CXXType, CXXTypeNoPP,
Modified: cfe/trunk/tools/ccc/test/ccc/darwin-x86-cc1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/test/ccc/darwin-x86-cc1.m?rev=66737&r1=66736&r2=66737&view=diff
==============================================================================
--- cfe/trunk/tools/ccc/test/ccc/darwin-x86-cc1.m (original)
+++ cfe/trunk/tools/ccc/test/ccc/darwin-x86-cc1.m Wed Mar 11 18:07:54 2009
@@ -11,5 +11,14 @@
// RUN: xcc -ccc-no-clang -ccc-host-bits 32 -ccc-host-machine i386 -ccc-host-system darwin -ccc-host-release 10.5.0 -### -x objective-c-header %s -o /tmp/x.gch &> %t.opts &&
// RUN: grep ' "/usr/libexec/gcc/i686-apple-darwin10/4.2.1/cc1obj" "-quiet" "-D__DYNAMIC__" ".*darwin-x86-cc1.m" "-fPIC" "-quiet" "-dumpbase" "darwin-x86-cc1.m" "-mmacosx-version-min=10.6.5" "-mtune=core2" "-auxbase" ".*" "-o" "/dev/null" "--output-pch=" "/tmp/x.gch"' %t.opts &&
+// RUN: touch %t.s &&
+// RUN: xcc -ccc-no-clang -ccc-host-bits 32 -ccc-host-machine i386 -ccc-host-system darwin -ccc-host-release 10.5.0 -### -c -x assembler %t.s &> %t.opts &&
+// RUN: grep /cc1 %t.opts | count 0 &&
+// RUN: grep ' "/usr/libexec/gcc/i686-apple-darwin10/4.2.1/as" "-arch" "i386" "-force_cpusubtype_ALL" "-o" ".*darwin-x86-cc1.m.out.tmp.s"' %t.opts &&
+
+// RUN: xcc -ccc-no-clang -ccc-host-bits 32 -ccc-host-machine i386 -ccc-host-system darwin -ccc-host-release 10.5.0 -### -c -x assembler-with-cpp %t.s &> %t.opts &&
+// RUN: grep ' "/usr/libexec/gcc/i686-apple-darwin10/4.2.1/cc1" "-E" "-quiet" "-D__DYNAMIC__" ".*darwin-x86-cc1.m.out.tmp.s" "-o" ".*" "-fPIC" "-mmacosx-version-min=10.6.5" "-mtune=core2"' %t.opts &&
+// RUN: grep ' "/usr/libexec/gcc/i686-apple-darwin10/4.2.1/as" "-arch" "i386" "-force_cpusubtype_ALL" "-o" ".*"' %t.opts &&
+
// RUN: true
More information about the cfe-commits
mailing list