[GHC] #14626: No need to enter a scrutinised value

GHC ghc-devs at haskell.org
Thu Jan 11 22:52:07 UTC 2018


#14626: No need to enter a scrutinised value
-------------------------------------+-------------------------------------
        Reporter:  heisenbug         |                Owner:  heisenbug
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:  performance
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #13861            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by simonpj):

 > getSymtabName should somehow check the getTag# of the presumably strict
 fields and if any of them is 0, seq it?

 I don't think so.  Here's its code:
 {{{
 getSymtabName _ncu _dict symtab bh = do
     i :: Word32 <- get bh
     case i .&. 0xC0000000 of
       0x00000000 -> return $! symtab ! fromIntegral i

       0x80000000 ->
         let
           tag = chr (fromIntegral ((i .&. 0x3FC00000) `shiftR` 22))
           ix  = fromIntegral i .&. 0x003FFFFF
           u   = mkUnique tag ix
         in
           return $! case lookupKnownKeyName u of
                       Nothing -> pprPanic "getSymtabName:unknown known-key
 unique"
                                           (ppr i $$ ppr (unpkUnique u))
                       Just n  -> n

       _ -> pprPanic "getSymtabName:unknown name tag" (ppr i)
 }}}
 The only way it can return a `Name` is either as a result of
 `lookupKownKeyName` or as ar result of indexing `symtab`.  Both should
 return properly formed names.  Maybe somehow one of them isn't?  But which
 one?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14626#comment:23>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list