CmmCommonBlockElim: Improve hash function
CmmCommonBlockElim: Improve hash function

Previously, the hash function used to cut down the number of block
comparisons did not take local registers into account, causing far too
many similar, but different bocks to be considered candidates for the
(expensive!) comparision.

Adding register to the hash takes CmmCommonBlockElim's share of the
runtime of the example in #10397 from 17% to 2.5%, and eliminates all
unwanted hash collisions.

This patch also replaces the fancy trie by a plain Data.Map. It turned
out to be not performance critical, so this simplifies the code.

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

nkaretnikov/ghc,TomMD/ghc,snoyberg/ghc,wxwxwwxxx/ghc,acowley/ghc,gridaphobe/ghc,AlexanderPankiv/ghc,nushio3/ghc,ghc-android/ghc,wxwxwwxxx/ghc,fmthoma/ghc,GaloisInc/halvm-ghc,sgillespie/ghc,vikraman/ghc,mfine/ghc,shlevy/ghc,gridaphobe/ghc,urbanslug/ghc,GaloisInc/halvm-ghc,tjakway/ghcjvm,TomMD/ghc,gridaphobe/ghc,AlexanderPankiv/ghc,nkaretnikov/ghc,elieux/ghc,mettekou/ghc,GaloisInc/halvm-ghc,vikraman/ghc,ml9951/ghc,ml9951/ghc,oldmanmike/ghc,vikraman/ghc,acowley/ghc,fmthoma/ghc,shlevy/ghc,mcschroeder/ghc,vTurbine/ghc,siddhanathan/ghc,shlevy/ghc,TomMD/ghc,sdiehl/ghc,vikraman/ghc,mettekou/ghc,ezyang/ghc,ghc-android/ghc,AlexanderPankiv/ghc,urbanslug/ghc,oldmanmike/ghc,nushio3/ghc,fmthoma/ghc,urbanslug/ghc,acowley/ghc,da-x/ghc,AlexanderPankiv/ghc,siddhanathan/ghc,vikraman/ghc,fmthoma/ghc,tjakway/ghcjvm,siddhanathan/ghc,tjakway/ghcjvm,nushio3/ghc,nkaretnikov/ghc,da-x/ghc,olsner/ghc,snoyberg/ghc,acowley/ghc,mcschroeder/ghc,olsner/ghc,nkaretnikov/ghc,ezyang/ghc,GaloisInc/halvm-ghc,tjakway/ghcjvm,mfine/ghc,ml9951/ghc,sgillespie/ghc,sdiehl/ghc,gridaphobe/ghc,ezyang/ghc,sdiehl/ghc,olsner/ghc,ml9951/ghc,ezyang/ghc,wxwxwwxxx/ghc,gridaphobe/ghc,tjakway/ghcjvm,mfine/ghc,olsner/ghc,fmthoma/ghc,ml9951/ghc,olsner/ghc,anton-dessiatov/ghc,acowley/ghc,nkaretnikov/ghc,gridaphobe/ghc,wxwxwwxxx/ghc,mcschroeder/ghc,elieux/ghc,urbanslug/ghc,vTurbine/ghc,ezyang/ghc,olsner/ghc,oldmanmike/ghc,oldmanmike/ghc,TomMD/ghc,vikraman/ghc,shlevy/ghc,wxwxwwxxx/ghc,ghc-android/ghc,ezyang/ghc,anton-dessiatov/ghc,GaloisInc/halvm-ghc,da-x/ghc,mettekou/ghc,mfine/ghc,mcschroeder/ghc,shlevy/ghc,TomMD/ghc,acowley/ghc,oldmanmike/ghc,ghc-android/ghc,vTurbine/ghc,elieux/ghc,nkaretnikov/ghc,ghc-android/ghc,vTurbine/ghc,GaloisInc/halvm-ghc,da-x/ghc,anton-dessiatov/ghc,tjakway/ghcjvm,urbanslug/ghc,nushio3/ghc,wxwxwwxxx/ghc,sdiehl/ghc,elieux/ghc,fmthoma/ghc,nushio3/ghc,vikraman/ghc,sgillespie/ghc,fmthoma/ghc,ezyang/ghc,nkaretnikov/ghc,siddhanathan/ghc,wxwxwwxxx/ghc,urbanslug/ghc,mcschroeder/ghc,mettekou/ghc,mettekou/ghc,shlevy/ghc,sgillespie/ghc,oldmanmike/ghc,acowley/ghc,snoyberg/ghc,ghc-android/ghc,sgillespie/ghc,anton-dessiatov/ghc,sdiehl/ghc,siddhanathan/ghc,da-x/ghc,vTurbine/ghc,da-x/ghc,GaloisInc/halvm-ghc,vTurbine/ghc,mfine/ghc,siddhanathan/ghc,snoyberg/ghc,mfine/ghc,gridaphobe/ghc,ml9951/ghc,snoyberg/ghc,anton-dessiatov/ghc,nushio3/ghc,da-x/ghc,elieux/ghc,snoyberg/ghc,sgillespie/ghc,sgillespie/ghc,AlexanderPankiv/ghc,olsner/ghc,urbanslug/ghc,shlevy/ghc,AlexanderPankiv/ghc,anton-dessiatov/ghc,tjakway/ghcjvm,oldmanmike/ghc,mettekou/ghc,ghc-android/ghc,mettekou/ghc,mcschroeder/ghc,elieux/ghc,ml9951/ghc,sdiehl/ghc,TomMD/ghc,ml9951/ghc,nushio3/ghc,TomMD/ghc,mcschroeder/ghc,snoyberg/ghc,sdiehl/ghc,mfine/ghc,anton-dessiatov/ghc,vTurbine/ghc,AlexanderPankiv/ghc,elieux/ghc,siddhanathan/ghc