Fixes the ARM build
authorMoritz Angermann <moritz@lichtzwerge.de>
Tue, 21 Oct 2014 20:33:18 +0000 (15:33 -0500)
committerAustin Seipp <austin@well-typed.com>
Tue, 21 Oct 2014 20:33:19 +0000 (15:33 -0500)
Summary:
CodeGen.Platform.hs was changed with the following diff:

   -#endif
    globalRegMaybe _                        = Nothing
   +#elif MACHREGS_NO_REGS
   +globalRegMaybe _ = Nothing
   +#else
   +globalRegMaybe = panic "globalRegMaybe not defined for this platform"
   +#endif

which causes globalRegMaybe ot panic for arch ARM.

This patch ensures globalRegMaybe is not called on ARM.

Signed-off-by: Moritz Angermann <moritz@lichtzwerge.de>
Test Plan: Building arm cross-compiler (e.g. --target=arm-apple-darwin10)

Reviewers: hvr, ezyang, simonmar, rwbarton, austin

Reviewed By: austin

Subscribers: dterei, bgamari, simonmar, ezyang, carter

Differential Revision: https://phabricator.haskell.org/D208

GHC Trac Issues: #9593

compiler/cmm/CmmSink.hs

index 4dced9a..22f4d2e 100644 (file)
@@ -10,6 +10,7 @@ import CmmLive
 import CmmUtils
 import Hoopl
 import CodeGen.Platform
+import Platform (isARM, platformArch)
 
 import DynFlags
 import UniqFM
@@ -235,8 +236,10 @@ isSmall _ = False
 isTrivial :: DynFlags -> CmmExpr -> Bool
 isTrivial _ (CmmReg (CmmLocal _)) = True
 isTrivial dflags (CmmReg (CmmGlobal r)) = -- see Note [Inline GlobalRegs?]
-   isJust (globalRegMaybe (targetPlatform dflags) r)
-   -- GlobalRegs that are loads from BaseReg are not trivial
+  if isARM (platformArch (targetPlatform dflags))
+  then True -- CodeGen.Platform.ARM does not have globalRegMaybe
+  else isJust (globalRegMaybe (targetPlatform dflags) r)
+  -- GlobalRegs that are loads from BaseReg are not trivial
 isTrivial _ (CmmLit _) = True
 isTrivial _ _          = False