Improve control flow optimisation algorithm
Improve control flow optimisation algorithm

Fixes #8456. Previous version of control flow optimisations
did not update the list of block predecessors, leading to
unnecessary duplication of blocks in some cases. See Trac
and comments in the code for more details.

mettekou/ghc,nushio3/ghc,holzensp/ghc,siddhanathan/ghc,TomMD/ghc,ryantm/ghc,mcschroeder/ghc,sdiehl/ghc,ml9951/ghc,christiaanb/ghc,AlexanderPankiv/ghc,christiaanb/ghc,acowley/ghc,spacekitteh/smcghc,spacekitteh/smcghc,wxwxwwxxx/ghc,AlexanderPankiv/ghc,sgillespie/ghc,shlevy/ghc,snoyberg/ghc,lukexi/ghc,ryantm/ghc,tjakway/ghcjvm,christiaanb/ghc,jstolarek/ghc,nushio3/ghc,anton-dessiatov/ghc,TomMD/ghc,lukexi/ghc,forked-upstream-packages-for-ghcjs/ghc,fmthoma/ghc,green-haskell/ghc,green-haskell/ghc,gcampax/ghc,hferreiro/replay,mettekou/ghc,oldmanmike/ghc,wxwxwwxxx/ghc,fmthoma/ghc,wxwxwwxxx/ghc,da-x/ghc,ghc-android/ghc,elieux/ghc,forked-upstream-packages-for-ghcjs/ghc,jstolarek/ghc,oldmanmike/ghc,vikraman/ghc,hferreiro/replay,vikraman/ghc,acowley/ghc,sgillespie/ghc,bitemyapp/ghc,ezyang/ghc,snoyberg/ghc,nushio3/ghc,sdiehl/ghc,acowley/ghc,lukexi/ghc,ryantm/ghc,gcampax/ghc,mcschroeder/ghc,GaloisInc/halvm-ghc,acowley/ghc,da-x/ghc,wxwxwwxxx/ghc,nathyong/microghc-ghc,anton-dessiatov/ghc,vTurbine/ghc,da-x/ghc,wxwxwwxxx/ghc,sdiehl/ghc,fmthoma/ghc,jstolarek/ghc,anton-dessiatov/ghc,snoyberg/ghc,hferreiro/replay,shlevy/ghc,mcschroeder/ghc,hferreiro/replay,gcampax/ghc,urbanslug/ghc,ghc-android/ghc,urbanslug/ghc,ryantm/ghc,nkaretnikov/ghc,vTurbine/ghc,shlevy/ghc,nathyong/microghc-ghc,tjakway/ghcjvm,hferreiro/replay,sgillespie/ghc,AlexanderPankiv/ghc,snoyberg/ghc,spacekitteh/smcghc,GaloisInc/halvm-ghc,olsner/ghc,ml9951/ghc,mcschroeder/ghc,AlexanderPankiv/ghc,gridaphobe/ghc,gcampax/ghc,urbanslug/ghc,GaloisInc/halvm-ghc,ml9951/ghc,mcschroeder/ghc,forked-upstream-packages-for-ghcjs/ghc,siddhanathan/ghc,tibbe/ghc,mettekou/ghc,ryantm/ghc,GaloisInc/halvm-ghc,tibbe/ghc,olsner/ghc,oldmanmike/ghc,mettekou/ghc,fmthoma/ghc,ml9951/ghc,nushio3/ghc,mfine/ghc,green-haskell/ghc,jstolarek/ghc,tibbe/ghc,mfine/ghc,olsner/ghc,anton-dessiatov/ghc,olsner/ghc,spacekitteh/smcghc,hferreiro/replay,tibbe/ghc,shlevy/ghc,sgillespie/ghc,ezyang/ghc,vikraman/ghc,mettekou/ghc,ezyang/ghc,nushio3/ghc,acowley/ghc,fmthoma/ghc,sgillespie/ghc,forked-upstream-packages-for-ghcjs/ghc,lukexi/ghc,AlexanderPankiv/ghc,forked-upstream-packages-for-ghcjs/ghc,acowley/ghc,lukexi/ghc-7.8-arm64,da-x/ghc,AlexanderPankiv/ghc,vikraman/ghc,ghc-android/ghc,elieux/ghc,christiaanb/ghc,olsner/ghc,ml9951/ghc,gcampax/ghc,mfine/ghc,shlevy/ghc,gridaphobe/ghc,nathyong/microghc-ghc,elieux/ghc,vTurbine/ghc,shlevy/ghc,tjakway/ghcjvm,gcampax/ghc,mcschroeder/ghc,gridaphobe/ghc,gridaphobe/ghc,mfine/ghc,sgillespie/ghc,ghc-android/ghc,bitemyapp/ghc,TomMD/ghc,nkaretnikov/ghc,tjakway/ghcjvm,TomMD/ghc,sdiehl/ghc,siddhanathan/ghc,vikraman/ghc,da-x/ghc,mettekou/ghc,ghc-android/ghc,tjakway/ghcjvm,siddhanathan/ghc,urbanslug/ghc,gcampax/ghc,elieux/ghc,bitemyapp/ghc,forked-upstream-packages-for-ghcjs/ghc,holzensp/ghc,gridaphobe/ghc,TomMD/ghc,nkaretnikov/ghc,anton-dessiatov/ghc,siddhanathan/ghc,GaloisInc/halvm-ghc,mfine/ghc,TomMD/ghc,wxwxwwxxx/ghc,snoyberg/ghc,green-haskell/ghc,acowley/ghc,lukexi/ghc-7.8-arm64,oldmanmike/ghc,nkaretnikov/ghc,holzensp/ghc,christiaanb/ghc,spacekitteh/smcghc,christiaanb/ghc,mfine/ghc,holzensp/ghc,elieux/ghc,christiaanb/ghc,sgillespie/ghc,anton-dessiatov/ghc,da-x/ghc,tibbe/ghc,frantisekfarka/ghc-dsi,tjakway/ghcjvm,urbanslug/ghc,GaloisInc/halvm-ghc,ghc-android/ghc,lukexi/ghc-7.8-arm64,siddhanathan/ghc,mfine/ghc,fmthoma/ghc,nushio3/ghc,mcschroeder/ghc,nkaretnikov/ghc,frantisekfarka/ghc-dsi,forked-upstream-packages-for-ghcjs/ghc,anton-dessiatov/ghc,ml9951/ghc,bitemyapp/ghc,GaloisInc/halvm-ghc,gridaphobe/ghc,ml9951/ghc,ghc-android/ghc,oldmanmike/ghc,snoyberg/ghc,nushio3/ghc,ezyang/ghc,wxwxwwxxx/ghc,sdiehl/ghc,nkaretnikov/ghc,elieux/ghc,vTurbine/ghc,vikraman/ghc,sdiehl/ghc,gridaphobe/ghc,AlexanderPankiv/ghc,snoyberg/ghc,urbanslug/ghc,hferreiro/replay,nathyong/microghc-ghc,olsner/ghc,vTurbine/ghc,bitemyapp/ghc,nkaretnikov/ghc,vikraman/ghc,oldmanmike/ghc,ezyang/ghc,ml9951/ghc,vTurbine/ghc,lukexi/ghc-7.8-arm64,lukexi/ghc,nathyong/microghc-ghc,ezyang/ghc,TomMD/ghc,urbanslug/ghc,frantisekfarka/ghc-dsi,frantisekfarka/ghc-dsi,olsner/ghc,frantisekfarka/ghc-dsi,green-haskell/ghc,tjakway/ghcjvm,ezyang/ghc,shlevy/ghc,nathyong/microghc-ghc,elieux/ghc,fmthoma/ghc,holzensp/ghc,sdiehl/ghc,jstolarek/ghc,mettekou/ghc,siddhanathan/ghc,vTurbine/ghc,nathyong/microghc-ghc,lukexi/ghc-7.8-arm64,da-x/ghc,oldmanmike/ghc