#15696: Derived Ord instance for enumerations with more than 8 elements seems to be incorrect -------------------------------------+------------------------------------- Reporter: mrkkrp | Owner: (none) Type: bug | Status: new Priority: highest | Milestone: 8.6.2 Component: Compiler | Version: 8.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect result | Unknown/Multiple at runtime | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): Omer, might you look at this. With `-ddump-stg` I see {{{ Main.cmpT :: forall a1 a2. a1 -> a2 -> GHC.Types.Ordering [GblId, Arity=2, Caf=NoCafRefs, Str=<S,U><S,U>, Unf=OtherCon []] = [] \r [a2_s3tf b_s3tg] case case a2_s3tf of sat_s3th [Occ=Once] { __DEFAULT -> dataToTag# [sat_s3th]; } of a'_s3ti { __DEFAULT -> case case b_s3tg of sat_s3tj [Occ=Once] { __DEFAULT -> dataToTag# [sat_s3tj]; } of b'_s3tk { __DEFAULT -> case <# [a'_s3ti b'_s3tk] of { __DEFAULT -> case ==# [a'_s3ti b'_s3tk] of { __DEFAULT -> GHC.Types.GT []; 1# -> GHC.Types.EQ []; }; 1# -> GHC.Types.LT []; }; }; }; }}} which looks right. In another variant (I made `dataToTag#` lazy) I saw {{{ Main.cmpT :: forall a1 a2. a1 -> a2 -> GHC.Types.Ordering [GblId, Arity=2, Caf=NoCafRefs, Str=<S,1*U><S,1*U>, Unf=OtherCon []] = [] \r [a2_s3tf b_s3tg] case a2_s3tf of x1_s3th [Occ=Once] { __DEFAULT -> case dataToTag# [x1_s3th] of a'_s3ti { __DEFAULT -> case b_s3tg of x2_s3tj [Occ=Once] { __DEFAULT -> case dataToTag# [x2_s3tj] of b'_s3tk { __DEFAULT -> case <# [a'_s3ti b'_s3tk] of { __DEFAULT -> case ==# [a'_s3ti b'_s3tk] of { __DEFAULT -> GHC.Types.GT []; 1# -> GHC.Types.EQ []; }; 1# -> GHC.Types.LT []; }; }; }; }; }; }}} But both stubbornly return `LT` instead of `EQ`. This must be a code-gen or RTS issue. I have not looked at the Cmm. Might you do so? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15696#comment:14> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler