• niteria's avatar
    Make it possible to have different UniqSupply strategies · 158d2a91
    niteria authored
    To get reproducible/deterministic builds, the way that the Uniques are
    assigned shouldn't matter. This allows to test for that.
    
    It add 2 new flags:
    
    * `-dinitial-unique`
    * `-dunique-increment`
    
    And by varying these you can get interesting effects:
    
    * `-dinitial-unique=0 -dunique-increment 1` - current sequential
      UniqSupply
    
    * `-dinitial-unique=16777215 -dunique-increment -1` - UniqSupply that
      generates in decreasing order
    
    * `-dinitial-unique=1 -dunique-increment PRIME` - where PRIME big enough
      to overflow often - nonsequential order
    
    I haven't proven the usefullness of the last one yet and it's the reason
    why we have to mask the bits with `0xFFFFFF` in `genSym`, so I can
    remove it if it becomes contentious.
    
    Test Plan: validate on harbormaster
    
    Reviewers: simonmar, austin, ezyang, bgamari
    
    Reviewed By: austin, bgamari
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1360
    
    GHC Trac Issues: #4012
    158d2a91
DynFlags.hs 175 KB