
#8816: Make SPARC registerised again. ------------------------------------+------------------------------ Reporter: kgardas | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: Resolution: | Keywords: Operating System: Solaris | Architecture: sparc Type of failure: None/Unknown | Test Case: Blocked By: 8847 | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | ------------------------------------+------------------------------ Comment (by slyfox): To try NCG locally you don't even need to patch autoconf. That did the trick for me: {{{ $ ./configure --target=sparc-unknown-linux-gnu --disable-unregisterised $ make }}} Unfortunately NCG for sparc needs a few more fixes. 64-bit subtract inplementation: {{{ rts_dist_HC rts/dist/build/StgStartup.o ghc-stage1: panic! (the 'impossible' happened) (GHC version 8.3.20170408 for sparc-unknown-linux): iselExpr64(sparc) I64[_c2::P32 + 64] - %MO_UU_Conv_W32_W64((Hp + 4) - I32[_c3::I32]) Call stack: CallStack (from HasCallStack): prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1134:58 in ghc:Outputable callStackDoc, called at compiler/utils/Outputable.hs:1138:37 in ghc:Outputable pprPanic, called at compiler/nativeGen/SPARC/CodeGen/Gen64.hs:196:6 in ghc:SPARC.CodeGen.Gen64 Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug }}} Something fun in register allocator WRT PIC register: {{{ HC [stage 1] libraries/ghc-prim/dist-install/build/GHC/Types.o ghc-stage1: panic! (the 'impossible' happened) (GHC version 8.3.20170408 for sparc-unknown-linux): SPARC.CodeGen.Base.getRegisterReg: global is in memory PicBaseReg Call stack: CallStack (from HasCallStack): prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1134:58 in ghc:Outputable callStackDoc, called at compiler/utils/Outputable.hs:1138:37 in ghc:Outputable pprPanic, called at compiler/nativeGen/SPARC/CodeGen/Base.hs:103:21 in ghc:SPARC.CodeGen.Base }}} '''-fPIC''' is not really supported by NCG: {{{ rts_dist_HC rts/dist/build/Compact.thr_l_dyn_o ghc-stage1: panic! (the 'impossible' happened) (GHC version 8.3.20170408 for sparc-unknown-linux): MachCodeGen: sparc genSwitch PIC not finished CallStack (from HasCallStack): error, called at compiler/nativeGen/SPARC/CodeGen.hs:316:11 in ghc:SPARC.CodeGen }}} prof build is also broken in an interesting way: {{{ HC [stage 1] libraries/ghc-prim/dist-install/build/GHC/Types.p_o /tmp/ghc26402_0/ghc_3.s: Assembler messages: /tmp/ghc26402_0/ghc_3.s:107:0: error: Error: can't resolve `iat6_str' {.rodata.str.iat6_str section} - `ghczmprim_GHCziTypes_HEqzusc_info' {.rodata.str.iat7_str section} | 107 | .long iat6_str-(ghczmprim_GHCziTypes_HEqzusc_info)+0 | ^ }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8816#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler