[GHC] #7922: adding direct *.c -> object code (*.o/so/dylib) support to compilation driver

GHC cvs-ghc at haskell.org
Tue May 21 22:53:48 CEST 2013


#7922: adding direct *.c -> object code (*.o/so/dylib) support to compilation
driver
---------------------------------+------------------------------------------
    Reporter:  carter            |       Owner:                  
        Type:  feature request   |      Status:  infoneeded      
    Priority:  normal            |   Milestone:                  
   Component:  Compiler          |     Version:  7.7             
    Keywords:                    |          Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown    
  Difficulty:  Unknown           |    Testcase:                  
   Blockedby:                    |    Blocking:                  
     Related:  #7904             |  
---------------------------------+------------------------------------------

Comment(by carter):

 {{{carter code/test » '/usr/local/bin/ghc' '-c' '-static' '-odir'
 'dist/build/test/test-tmp' '-Idist/build/test/test-tmp' '-optc-
 march=native' '-opta-march=native' '-optc-O3' '-optc-O2' '-package-db'
 'dist/package.conf.inplace' '-package-id'
 'base-4.6.0.1-2514ecbfe6573e639515d3e91d6e1f29' '-package-id'
 'vector-0.10.0.1-04d4a4538e7c444d2821bb98877cda5f' 'cbits/daft.c' -opta-
 march=native -v3
 Glasgow Haskell Compiler, Version 7.6.2, stage 2 booted by GHC version
 7.4.2
 Using binary package database:
 /usr/local/lib/ghc-7.6.2/package.conf.d/package.cache
 Using binary package database:
 /Users/carter/.ghc/x86_64-darwin-7.6.2/package.conf.d/package.cache
 Using package config file: dist/package.conf.inplace
 hiding package hashable-1.1.2.5 to avoid conflict with later version
 hashable-1.2.0.5
 hiding package unordered-containers-0.2.3.0 to avoid conflict with later
 version unordered-containers-0.2.3.1
 wired-in package ghc-prim mapped to ghc-
 prim-0.3.0.0-bd1d393903577692a5ef2aa7027b71f6
 wired-in package integer-gmp mapped to integer-
 gmp-0.5.0.0-49dcb29a60dab14e03e6dd01e871a242
 wired-in package base mapped to
 base-4.6.0.1-2514ecbfe6573e639515d3e91d6e1f29
 wired-in package rts mapped to builtin_rts
 wired-in package template-haskell mapped to template-
 haskell-2.8.0.0-0ad833f8876aca146ee7fa686b5bc01a
 wired-in package dph-seq not found.
 wired-in package dph-par not found.
 Hsc static flags: -static -static
 Created temporary directory:
 /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0
 *** C Compiler:
 'gcc' '-m64' '-fno-stack-protector' '-m64' '-x' 'c' 'cbits/daft.c' '-o'
 '/var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s'
 '-fno-common' '-U __PIC__' '-D__PIC__' '-Wimplicit' '-S' '-O'
 '-D__GLASGOW_HASKELL__=706' '-DTABLES_NEXT_TO_CODE' '-march=native' '-O3'
 '-O2' '-I' 'dist/build/test/test-tmp' '-I'
 '/Users/carter/Library/Haskell//lib/x86_64-osx-
 ghc-7.6.2/vector-0.10.0.1/include' '-I'
 '/Users/carter/Library/Haskell//lib/x86_64-osx-
 ghc-7.6.2/primitive-0.5.0.1/include' '-I'
 '/usr/local/lib/ghc-7.6.2/base-4.6.0.1/include' '-I'
 '/usr/local/lib/ghc-7.6.2/include'
 *** Assembler:
 'gcc' '-m64' '-fno-stack-protector' '-m64' '-march=native' '-march=native'
 '-Idist/build/test/test-tmp' '-c'
 '/var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s'
 '-o' 'dist/build/test/test-tmp/cbits/daft.o'

 /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s:6:0:
     no such instruction: `vmovupd (%rdi), %xmm0'

 /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s:7:0:
     no such instruction: `vaddpd %xmm0, %xmm0,%xmm0'

 /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s:8:0:
     no such instruction: `vmovupd %xmm0, (%rsi)'
 *** Deleting temp files:
 Deleting:
 /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0/ghc47284_0.s
 *** Deleting temp dirs:
 Deleting: /var/folders/py/wgp_hj9d2rl3cx48yym_ynj00000gn/T/ghc47284_0

 }}}


 oddly, even though it says its using gcc to do the assembly in the verbose
 log, running dtrace via the instruments application confirms that its
 actually using the '''as ''' apple assembler.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7922#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list