
#9886: Undefined reference to `__sync_fetch_and_xor_8' ----------------------------------------+---------------------------------- Reporter: erikd | Owner: erikd Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (CodeGen) | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: powerpc Type of failure: Building GHC failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: ----------------------------------------+---------------------------------- Comment (by erikd): It seems the 64 bit primpos are *only* needed on 32 bit architectures and then only for the native code generators. For x86 via the native code generator we needed #9346 as mentioned by @tibbe, but the arm backend did need anything because that omly compilers via LLVM. That leaves PowerPC as the remaining 32 bit architecture with an NCG. However, if I hack the 64 bit primops like (for example) this: {{{#!c StgWord64 hs_atomic_add64(volatile StgWord64 *x, StgWord64 val) { #if WORD_SIZE_IN_BITS == 32 printf ("%s : %s not implemented.\n", __FILE__, __func__) ; exit (1); #else return __sync_fetch_and_add(x, val); #endif } }}} then building the compiler runs to completion and futhermore, the one test for these atomic primops, `testsuite/tests/concurrent/should_run/AtomicPrimops.hs` passes. It turns out this test operates on Int which on 32 bit platforms is a 32 bit value. This makes me wonder if its worth the trouble of implementing these if they aren't used anywhere. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9886#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler