diff --git a/compiler/cmm/CmmNode.hs b/compiler/cmm/CmmNode.hs index b3adefebdef5..61c0b801790d 100644 --- a/compiler/cmm/CmmNode.hs +++ b/compiler/cmm/CmmNode.hs @@ -1,6 +1,7 @@ -- CmmNode type for representation using Hoopl graphs. {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} +{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS -fno-warn-tabs #-} @@ -199,20 +200,8 @@ way is done in cmm/CmmOpt.hs currently. We should fix this! --------------------------------------------- -- Eq instance of CmmNode --- It is a shame GHC cannot infer it by itself :( - -instance Eq (CmmNode e x) where - (CmmEntry a) == (CmmEntry a') = a==a' - (CmmComment a) == (CmmComment a') = a==a' - (CmmAssign a b) == (CmmAssign a' b') = a==a' && b==b' - (CmmStore a b) == (CmmStore a' b') = a==a' && b==b' - (CmmUnsafeForeignCall a b c) == (CmmUnsafeForeignCall a' b' c') = a==a' && b==b' && c==c' - (CmmBranch a) == (CmmBranch a') = a==a' - (CmmCondBranch a b c) == (CmmCondBranch a' b' c') = a==a' && b==b' && c==c' - (CmmSwitch a b) == (CmmSwitch a' b') = a==a' && b==b' - (CmmCall a b c d e f) == (CmmCall a' b' c' d' e' f') = a==a' && b==b' && c==c' && d==d' && e==e' && f==f' - (CmmForeignCall a b c d e f) == (CmmForeignCall a' b' c' d' e' f') = a==a' && b==b' && c==c' && d==d' && e==e' && f==f' - _ == _ = False + +deriving instance Eq (CmmNode e x) ---------------------------------------------- -- Hoopl instances of CmmNode diff --git a/compiler/cmm/CmmPipeline.hs b/compiler/cmm/CmmPipeline.hs index 78fed222ef02..5e9bca30e31c 100644 --- a/compiler/cmm/CmmPipeline.hs +++ b/compiler/cmm/CmmPipeline.hs @@ -184,11 +184,11 @@ cpsTop hsc_env proc = || not (tablesNextToCode dflags) || -- Note [inconsistent-pic-reg] usingInconsistentPicReg - usingInconsistentPicReg = ( platformArch platform == ArchX86 || - platformArch platform == ArchPPC - ) - && platformOS platform == OSDarwin - && gopt Opt_PIC dflags + usingInconsistentPicReg + = case (platformArch platform, platformOS platform, gopt Opt_PIC dflags) + of (ArchX86, OSDarwin, pic) -> pic + (ArchPPC, OSDarwin, pic) -> pic + _ -> False {- Note [inconsistent-pic-reg]