[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