Fix a build failure on non-{x86,amd64}
[ghc-hetmet.git] / compiler / nativeGen / X86 / RegInfo.hs
index 21b594e..140ff57 100644 (file)
@@ -13,12 +13,11 @@ import Size
 import Reg
 
 import Outputable
+import Platform
 import Unique
 
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
 import UniqFM
 import X86.Regs
-#endif
 
 
 mkVirtualReg :: Unique -> Size -> VirtualReg
@@ -29,52 +28,41 @@ mkVirtualReg u size
         FF80   -> VirtualRegD   u
         _other  -> VirtualRegI   u
 
-
--- reg colors for x86
-#if i386_TARGET_ARCH
 regDotColor :: RealReg -> SDoc
 regDotColor reg
  = let Just    str     = lookupUFM regColors reg
    in  text str
 
 regColors :: UniqFM [Char]
-regColors
- = listToUFM
- $     [ (eax, "#00ff00")
-       , (ebx, "#0000ff")
-       , (ecx, "#00ffff")
-       , (edx, "#0080ff") ]
-        ++ fpRegColors
+regColors = listToUFM (normalRegColors ++ fpRegColors)
 
--- reg colors for x86_64
-#elif x86_64_TARGET_ARCH
-regDotColor :: RealReg -> SDoc
-regDotColor reg
- = let Just    str     = lookupUFM regColors reg
-   in  text str
+-- TODO: We shouldn't be using defaultTargetPlatform here.
+--       We should be passing DynFlags in instead, and looking at
+--       its targetPlatform.
 
-regColors :: UniqFM [Char]
-regColors
- = listToUFM
- $     [ (rax, "#00ff00"), (eax, "#00ff00")
-       , (rbx, "#0000ff"), (ebx, "#0000ff")
-       , (rcx, "#00ffff"), (ecx, "#00ffff")
-       , (rdx, "#0080ff"), (edx, "#00ffff")
-       , (r8,  "#00ff80")
-       , (r9,  "#008080")
-       , (r10, "#0040ff")
-       , (r11, "#00ff40")
-       , (r12, "#008040")
-       , (r13, "#004080")
-       , (r14, "#004040")
-       , (r15, "#002080") ]
-       ++ fpRegColors
-#else
-regDotColor :: Reg -> SDoc
-regDotColor    = panic "not defined"
-#endif
+normalRegColors :: [(Reg,String)]
+normalRegColors = case platformArch defaultTargetPlatform of
+                  ArchX86 -> [ (eax, "#00ff00")
+                             , (ebx, "#0000ff")
+                             , (ecx, "#00ffff")
+                             , (edx, "#0080ff") ]
+                  ArchX86_64 -> [ (rax, "#00ff00"), (eax, "#00ff00")
+                                , (rbx, "#0000ff"), (ebx, "#0000ff")
+                                , (rcx, "#00ffff"), (ecx, "#00ffff")
+                                , (rdx, "#0080ff"), (edx, "#00ffff")
+                                , (r8,  "#00ff80")
+                                , (r9,  "#008080")
+                                , (r10, "#0040ff")
+                                , (r11, "#00ff40")
+                                , (r12, "#008040")
+                                , (r13, "#004080")
+                                , (r14, "#004040")
+                                , (r15, "#002080") ]
+                  ArchPPC     -> panic "X86 normalRegColors ArchPPC"
+                  ArchPPC_64  -> panic "X86 normalRegColors ArchPPC_64"
+                  ArchSPARC   -> panic "X86 normalRegColors ArchSPARC"
+                  ArchUnknown -> panic "X86 normalRegColors ArchUnknown"
 
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
 fpRegColors :: [(Reg,String)]
 fpRegColors =
         [ (fake0, "#ff00ff")
@@ -85,4 +73,4 @@ fpRegColors =
        , (fake5, "#5500ff") ]
 
        ++ zip (map regSingle [24..39]) (repeat "red")
-#endif
+