
#7904: GHC calls the cc1 of a gcc thats not the first in PATH -------------------------+-------------------------------------------------- Reporter: carter | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.6.3 | Keywords: Os: MacOS X | Architecture: x86_64 (amd64) Failure: None/Unknown | Blockedby: Blocking: | Related: -------------------------+-------------------------------------------------- I was earlier today trying to build some haskell code that ffi's out to some c code that uses SSE4 / AVX intrinsics, and was getting odd errors about not understanding -mavx or -msse4.2 , which was quite surprising since I was able to build those same c source files with clang or the gcc 4.8 i have at the top of my path. After some digging (and running dtrace while trying to bulld my code), I found that some point in the build process, ghc/cabal was running the cc1 of the apple gcc-llvm v4.2 (ie the gcc version i had used to build the ghc and comes with apple dev tools current version, and which lacks support for avx or sse4.2 ). I only hit this problem because i was deliberately writing code that would only compile assuming avx / sse4.2 support on the c compiler side, though this does have the implication that when ghc users are doing a simple cabalized build of some c code that has SIMD intrinsics, it'll only use simd <= ssse3, no higher. This could result in certain haskell codes on os x that lean on vectorized ffi's being 2x slower or worse than on other architectures perhaps. I'll be working around this problem in my own software development by rebuilding ghc on my mac using gcc 4.8 and see if that resolves that problem. That ends my overview of the bug whereby ghc uses the cc1 of the gcc that built it even when others are earlier in the path (which creates unexpected problems when naively using ghc as the c compilation driver). Now for the feature request: assuming theres a good reason for having the cc1 choice hard coded in, it'd probably be helpful for ghc to issue a warning when the hardwired cc1 refers to a gcc that isn't the first one visible when looking up gcc in the $path. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7904 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler