From 3869ac512d8bd406d8bf56b0c936b01dfa7be988 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <ian@well-typed.com> Date: Mon, 3 Sep 2012 19:03:00 +0100 Subject: [PATCH] Revert "Reduce the likelihood of x64/x86-64 changes breaking the build on other arches (#7083)." This reverts commit a2e589a1dcd5c74447d8f12b2db79474cca73850. Looks like it broke the build on x86/Windows. --- compiler/nativeGen/X86/Regs.hs | 56 ++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/compiler/nativeGen/X86/Regs.hs b/compiler/nativeGen/X86/Regs.hs index a3a257f4d6ec..854df0d0022b 100644 --- a/compiler/nativeGen/X86/Regs.hs +++ b/compiler/nativeGen/X86/Regs.hs @@ -51,17 +51,6 @@ where #include "nativeGen/NCG.h" #include "HsVersions.h" -#if i386_TARGET_ARCH == 0 && x86_64_TARGET_ARCH == 0 --- Compiling for some arch other than Intel so we choose x86-64 as default. -#undef arm_TARGET_ARCH -#undef powerpc_TARGET_ARCH -#undef powerpc64_TARGET_ARCH -#undef sparc_TARGET_ARCH - -#undef x86_64_TARGET_ARCH -#define x86_64_TARGET_ARCH 1 -#endif - #include "../includes/stg/MachRegs.h" import Reg @@ -422,6 +411,8 @@ allIntArgRegs :: [Reg] allFPArgRegs :: [Reg] callClobberedRegs :: [Reg] +#if defined(i386_TARGET_ARCH) || defined(x86_64_TARGET_ARCH) + #if i386_TARGET_ARCH #define eax 0 #define ebx 1 @@ -597,23 +588,25 @@ globalRegMaybe _ = Nothing -- -#if defined(mingw32_HOST_OS) +#if defined(mingw32_HOST_OS) && x86_64_TARGET_ARCH allArgRegs = zip (map regSingle [rcx,rdx,r8,r9]) (map regSingle [firstxmm ..]) allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined for this platform" allFPArgRegs = panic "X86.Regs.allFPArgRegs: not defined for this platform" -#elif i386_TARGET_ARCH - -allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch" -allIntArgRegs = panic "X86.Regs.allIntArgRegs: should not be used!" -allFPArgRegs = map regSingle [firstxmm .. firstxmm+7] - #else allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch" + +# if i386_TARGET_ARCH +allIntArgRegs = panic "X86.Regs.allIntArgRegs: should not be used!" +# elif x86_64_TARGET_ARCH allIntArgRegs = map regSingle [rdi,rsi,rdx,rcx,r8,r9] +# else +allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined for this arch" +# endif + allFPArgRegs = map regSingle [firstxmm .. firstxmm+7] #endif @@ -628,7 +621,7 @@ allHaskellArgRegs = [ RegReal r | Just r <- map globalRegMaybe globalArgRegs ] instrClobberedRegs :: [RealReg] #if i386_TARGET_ARCH instrClobberedRegs = map RealRegSingle [ eax, ecx, edx ] -#else +#elif x86_64_TARGET_ARCH instrClobberedRegs = map RealRegSingle [ rax, rcx, rdx ] #endif @@ -639,12 +632,35 @@ instrClobberedRegs = map RealRegSingle [ rax, rcx, rdx ] callClobberedRegs = map regSingle ([eax,ecx,edx] ++ floatregnos) -#else +#elif x86_64_TARGET_ARCH -- all xmm regs are caller-saves -- caller-saves registers callClobberedRegs = map regSingle ([rax,rcx,rdx,rsi,rdi,r8,r9,r10,r11] ++ floatregnos) +#else +callClobberedRegs + = panic "X86.Regs.callClobberedRegs: not defined for this architecture" +#endif + +#else /* i386_TARGET_ARCH || x86_64_TARGET_ARCH */ + + + +freeReg _ = 0# +globalRegMaybe _ = panic "X86.Regs.globalRegMaybe: not defined" + +allArgRegs = panic "X86.Regs.allArgRegs: not defined" +allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined" +allFPArgRegs = panic "X86.Regs.allFPArgRegs: not defined" +callClobberedRegs = panic "X86.Regs.callClobberedRegs: not defined" + +instrClobberedRegs :: [RealReg] +instrClobberedRegs = panic "X86.Regs.instrClobberedRegs: not defined for this arch" + +allHaskellArgRegs :: [Reg] +allHaskellArgRegs = panic "X86.Regs.allHaskellArgRegs: not defined for this arch" + #endif -- allocatableRegs is allMachRegNos with the fixed-use regs removed. -- GitLab