Commit 59de6e84 authored by glaubitz's avatar glaubitz Committed by Sergei Trofimovich

Add sparc64 a known architecture (Ticket #11211)

Explicitly pass "--no-relax" on ArchSPARC64
(as ArchSPARC does) where gcc's default specs
set "-mrelax" which conflicts with "-Wl,-r".

Known architecture will also help extending
sparc NCG support 64-bit ABI.
Signed-off-by: glaubitz's avatarJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
parent b0283840
...@@ -196,6 +196,9 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS], ...@@ -196,6 +196,9 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
sparc) sparc)
test -z "[$]2" || eval "[$]2=ArchSPARC" test -z "[$]2" || eval "[$]2=ArchSPARC"
;; ;;
sparc64)
test -z "[$]2" || eval "[$]2=ArchSPARC64"
;;
arm) arm)
GET_ARM_ISA() GET_ARM_ISA()
test -z "[$]2" || eval "[$]2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT, armABI = \$ARM_ABI}\"" test -z "[$]2" || eval "[$]2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT, armABI = \$ARM_ABI}\""
...@@ -212,7 +215,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS], ...@@ -212,7 +215,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
mipsel) mipsel)
test -z "[$]2" || eval "[$]2=ArchMipsel" test -z "[$]2" || eval "[$]2=ArchMipsel"
;; ;;
hppa|hppa1_1|ia64|m68k|rs6000|s390|s390x|sh4|sparc64|vax) hppa|hppa1_1|ia64|m68k|rs6000|s390|s390x|sh4|vax)
test -z "[$]2" || eval "[$]2=ArchUnknown" test -z "[$]2" || eval "[$]2=ArchUnknown"
;; ;;
*) *)
......
...@@ -2135,7 +2135,8 @@ joinObjectFiles dflags o_files output_fn = do ...@@ -2135,7 +2135,8 @@ joinObjectFiles dflags o_files output_fn = do
-- gcc on sparc sets -Wl,--relax implicitly, but -- gcc on sparc sets -Wl,--relax implicitly, but
-- -r and --relax are incompatible for ld, so -- -r and --relax are incompatible for ld, so
-- disable --relax explicitly. -- disable --relax explicitly.
++ (if platformArch (targetPlatform dflags) == ArchSPARC ++ (if platformArch (targetPlatform dflags)
`elem` [ArchSPARC, ArchSPARC64]
&& ldIsGnuLd && ldIsGnuLd
then [SysTools.Option "-Wl,-no-relax"] then [SysTools.Option "-Wl,-no-relax"]
else []) else [])
......
...@@ -171,6 +171,7 @@ nativeCodeGen dflags this_mod modLoc h us cmms ...@@ -171,6 +171,7 @@ nativeCodeGen dflags this_mod modLoc h us cmms
ArchX86_64 -> nCG' (x86_64NcgImpl dflags) ArchX86_64 -> nCG' (x86_64NcgImpl dflags)
ArchPPC -> nCG' (ppcNcgImpl dflags) ArchPPC -> nCG' (ppcNcgImpl dflags)
ArchSPARC -> nCG' (sparcNcgImpl dflags) ArchSPARC -> nCG' (sparcNcgImpl dflags)
ArchSPARC64 -> panic "nativeCodeGen: No NCG for SPARC64"
ArchARM {} -> panic "nativeCodeGen: No NCG for ARM" ArchARM {} -> panic "nativeCodeGen: No NCG for ARM"
ArchARM64 -> panic "nativeCodeGen: No NCG for ARM64" ArchARM64 -> panic "nativeCodeGen: No NCG for ARM64"
ArchPPC_64 _ -> nCG' (ppcNcgImpl dflags) ArchPPC_64 _ -> nCG' (ppcNcgImpl dflags)
......
...@@ -109,6 +109,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts excl ...@@ -109,6 +109,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts excl
ArchX86_64 -> 5 ArchX86_64 -> 5
ArchPPC -> 16 ArchPPC -> 16
ArchSPARC -> 14 ArchSPARC -> 14
ArchSPARC64 -> panic "trivColorable ArchSPARC64"
ArchPPC_64 _ -> panic "trivColorable ArchPPC_64" ArchPPC_64 _ -> panic "trivColorable ArchPPC_64"
ArchARM _ _ _ -> panic "trivColorable ArchARM" ArchARM _ _ _ -> panic "trivColorable ArchARM"
ArchARM64 -> panic "trivColorable ArchARM64" ArchARM64 -> panic "trivColorable ArchARM64"
...@@ -134,6 +135,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcFloat conflicts exclus ...@@ -134,6 +135,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcFloat conflicts exclus
ArchX86_64 -> 0 ArchX86_64 -> 0
ArchPPC -> 0 ArchPPC -> 0
ArchSPARC -> 22 ArchSPARC -> 22
ArchSPARC64 -> panic "trivColorable ArchSPARC64"
ArchPPC_64 _ -> panic "trivColorable ArchPPC_64" ArchPPC_64 _ -> panic "trivColorable ArchPPC_64"
ArchARM _ _ _ -> panic "trivColorable ArchARM" ArchARM _ _ _ -> panic "trivColorable ArchARM"
ArchARM64 -> panic "trivColorable ArchARM64" ArchARM64 -> panic "trivColorable ArchARM64"
...@@ -159,6 +161,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcDouble conflicts exclu ...@@ -159,6 +161,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcDouble conflicts exclu
ArchX86_64 -> 0 ArchX86_64 -> 0
ArchPPC -> 26 ArchPPC -> 26
ArchSPARC -> 11 ArchSPARC -> 11
ArchSPARC64 -> panic "trivColorable ArchSPARC64"
ArchPPC_64 _ -> panic "trivColorable ArchPPC_64" ArchPPC_64 _ -> panic "trivColorable ArchPPC_64"
ArchARM _ _ _ -> panic "trivColorable ArchARM" ArchARM _ _ _ -> panic "trivColorable ArchARM"
ArchARM64 -> panic "trivColorable ArchARM64" ArchARM64 -> panic "trivColorable ArchARM64"
...@@ -184,6 +187,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcDoubleSSE conflicts ex ...@@ -184,6 +187,7 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcDoubleSSE conflicts ex
ArchX86_64 -> 10 ArchX86_64 -> 10
ArchPPC -> 0 ArchPPC -> 0
ArchSPARC -> 0 ArchSPARC -> 0
ArchSPARC64 -> panic "trivColorable ArchSPARC64"
ArchPPC_64 _ -> panic "trivColorable ArchPPC_64" ArchPPC_64 _ -> panic "trivColorable ArchPPC_64"
ArchARM _ _ _ -> panic "trivColorable ArchARM" ArchARM _ _ _ -> panic "trivColorable ArchARM"
ArchARM64 -> panic "trivColorable ArchARM64" ArchARM64 -> panic "trivColorable ArchARM64"
......
...@@ -74,6 +74,7 @@ maxSpillSlots dflags ...@@ -74,6 +74,7 @@ maxSpillSlots dflags
ArchX86_64 -> X86.Instr.maxSpillSlots dflags ArchX86_64 -> X86.Instr.maxSpillSlots dflags
ArchPPC -> PPC.Instr.maxSpillSlots dflags ArchPPC -> PPC.Instr.maxSpillSlots dflags
ArchSPARC -> SPARC.Instr.maxSpillSlots dflags ArchSPARC -> SPARC.Instr.maxSpillSlots dflags
ArchSPARC64 -> panic "maxSpillSlots ArchSPARC64"
ArchARM _ _ _ -> panic "maxSpillSlots ArchARM" ArchARM _ _ _ -> panic "maxSpillSlots ArchARM"
ArchARM64 -> panic "maxSpillSlots ArchARM64" ArchARM64 -> panic "maxSpillSlots ArchARM64"
ArchPPC_64 _ -> PPC.Instr.maxSpillSlots dflags ArchPPC_64 _ -> PPC.Instr.maxSpillSlots dflags
......
...@@ -208,6 +208,7 @@ linearRegAlloc dflags entry_ids block_live sccs ...@@ -208,6 +208,7 @@ linearRegAlloc dflags entry_ids block_live sccs
ArchX86 -> go $ (frInitFreeRegs platform :: X86.FreeRegs) ArchX86 -> go $ (frInitFreeRegs platform :: X86.FreeRegs)
ArchX86_64 -> go $ (frInitFreeRegs platform :: X86_64.FreeRegs) ArchX86_64 -> go $ (frInitFreeRegs platform :: X86_64.FreeRegs)
ArchSPARC -> go $ (frInitFreeRegs platform :: SPARC.FreeRegs) ArchSPARC -> go $ (frInitFreeRegs platform :: SPARC.FreeRegs)
ArchSPARC64 -> panic "linearRegAlloc ArchSPARC64"
ArchPPC -> go $ (frInitFreeRegs platform :: PPC.FreeRegs) ArchPPC -> go $ (frInitFreeRegs platform :: PPC.FreeRegs)
ArchARM _ _ _ -> panic "linearRegAlloc ArchARM" ArchARM _ _ _ -> panic "linearRegAlloc ArchARM"
ArchARM64 -> panic "linearRegAlloc ArchARM64" ArchARM64 -> panic "linearRegAlloc ArchARM64"
......
...@@ -43,6 +43,7 @@ targetVirtualRegSqueeze platform ...@@ -43,6 +43,7 @@ targetVirtualRegSqueeze platform
ArchX86_64 -> X86.virtualRegSqueeze ArchX86_64 -> X86.virtualRegSqueeze
ArchPPC -> PPC.virtualRegSqueeze ArchPPC -> PPC.virtualRegSqueeze
ArchSPARC -> SPARC.virtualRegSqueeze ArchSPARC -> SPARC.virtualRegSqueeze
ArchSPARC64 -> panic "targetVirtualRegSqueeze ArchSPARC64"
ArchPPC_64 _ -> PPC.virtualRegSqueeze ArchPPC_64 _ -> PPC.virtualRegSqueeze
ArchARM _ _ _ -> panic "targetVirtualRegSqueeze ArchARM" ArchARM _ _ _ -> panic "targetVirtualRegSqueeze ArchARM"
ArchARM64 -> panic "targetVirtualRegSqueeze ArchARM64" ArchARM64 -> panic "targetVirtualRegSqueeze ArchARM64"
...@@ -60,6 +61,7 @@ targetRealRegSqueeze platform ...@@ -60,6 +61,7 @@ targetRealRegSqueeze platform
ArchX86_64 -> X86.realRegSqueeze ArchX86_64 -> X86.realRegSqueeze
ArchPPC -> PPC.realRegSqueeze ArchPPC -> PPC.realRegSqueeze
ArchSPARC -> SPARC.realRegSqueeze ArchSPARC -> SPARC.realRegSqueeze
ArchSPARC64 -> panic "targetRealRegSqueeze ArchSPARC64"
ArchPPC_64 _ -> PPC.realRegSqueeze ArchPPC_64 _ -> PPC.realRegSqueeze
ArchARM _ _ _ -> panic "targetRealRegSqueeze ArchARM" ArchARM _ _ _ -> panic "targetRealRegSqueeze ArchARM"
ArchARM64 -> panic "targetRealRegSqueeze ArchARM64" ArchARM64 -> panic "targetRealRegSqueeze ArchARM64"
...@@ -76,6 +78,7 @@ targetClassOfRealReg platform ...@@ -76,6 +78,7 @@ targetClassOfRealReg platform
ArchX86_64 -> X86.classOfRealReg platform ArchX86_64 -> X86.classOfRealReg platform
ArchPPC -> PPC.classOfRealReg ArchPPC -> PPC.classOfRealReg
ArchSPARC -> SPARC.classOfRealReg ArchSPARC -> SPARC.classOfRealReg
ArchSPARC64 -> panic "targetClassOfRealReg ArchSPARC64"
ArchPPC_64 _ -> PPC.classOfRealReg ArchPPC_64 _ -> PPC.classOfRealReg
ArchARM _ _ _ -> panic "targetClassOfRealReg ArchARM" ArchARM _ _ _ -> panic "targetClassOfRealReg ArchARM"
ArchARM64 -> panic "targetClassOfRealReg ArchARM64" ArchARM64 -> panic "targetClassOfRealReg ArchARM64"
...@@ -92,6 +95,7 @@ targetMkVirtualReg platform ...@@ -92,6 +95,7 @@ targetMkVirtualReg platform
ArchX86_64 -> X86.mkVirtualReg ArchX86_64 -> X86.mkVirtualReg
ArchPPC -> PPC.mkVirtualReg ArchPPC -> PPC.mkVirtualReg
ArchSPARC -> SPARC.mkVirtualReg ArchSPARC -> SPARC.mkVirtualReg
ArchSPARC64 -> panic "targetMkVirtualReg ArchSPARC64"
ArchPPC_64 _ -> PPC.mkVirtualReg ArchPPC_64 _ -> PPC.mkVirtualReg
ArchARM _ _ _ -> panic "targetMkVirtualReg ArchARM" ArchARM _ _ _ -> panic "targetMkVirtualReg ArchARM"
ArchARM64 -> panic "targetMkVirtualReg ArchARM64" ArchARM64 -> panic "targetMkVirtualReg ArchARM64"
...@@ -108,6 +112,7 @@ targetRegDotColor platform ...@@ -108,6 +112,7 @@ targetRegDotColor platform
ArchX86_64 -> X86.regDotColor platform ArchX86_64 -> X86.regDotColor platform
ArchPPC -> PPC.regDotColor ArchPPC -> PPC.regDotColor
ArchSPARC -> SPARC.regDotColor ArchSPARC -> SPARC.regDotColor
ArchSPARC64 -> panic "targetRegDotColor ArchSPARC64"
ArchPPC_64 _ -> PPC.regDotColor ArchPPC_64 _ -> PPC.regDotColor
ArchARM _ _ _ -> panic "targetRegDotColor ArchARM" ArchARM _ _ _ -> panic "targetRegDotColor ArchARM"
ArchARM64 -> panic "targetRegDotColor ArchARM64" ArchARM64 -> panic "targetRegDotColor ArchARM64"
......
...@@ -51,6 +51,7 @@ data Arch ...@@ -51,6 +51,7 @@ data Arch
{ ppc_64ABI :: PPC_64ABI { ppc_64ABI :: PPC_64ABI
} }
| ArchSPARC | ArchSPARC
| ArchSPARC64
| ArchARM | ArchARM
{ armISA :: ArmISA { armISA :: ArmISA
, armISAExt :: [ArmISAExt] , armISAExt :: [ArmISAExt]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment