diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-10-13 19:20:28 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2020-10-14 21:54:24 -0400 |
commit | 61222af1a92d896b31ed8e3c44746b9b98082615 (patch) | |
tree | da97c09d5612d7f8c059cc83d46540c4992e4f8e /compiler/GHC/CoreToByteCode.hs | |
parent | f11c94f3539630216046f478190d539a6c5ea96c (diff) | |
download | haskell-wip/T14334.tar.gz |
compiler/ByteCode: Allow 2^32 local labelswip/T14334
This widens LocalLabel to 2^16, avoiding the crash observed in #14334.
Closes #14334.
Diffstat (limited to 'compiler/GHC/CoreToByteCode.hs')
-rw-r--r-- | compiler/GHC/CoreToByteCode.hs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/GHC/CoreToByteCode.hs b/compiler/GHC/CoreToByteCode.hs index f28d40221a..3e2b8399f1 100644 --- a/compiler/GHC/CoreToByteCode.hs +++ b/compiler/GHC/CoreToByteCode.hs @@ -1966,7 +1966,7 @@ data BcM_State { bcm_hsc_env :: HscEnv , uniqSupply :: UniqSupply -- for generating fresh variable names , thisModule :: Module -- current module (for breakpoints) - , nextlabel :: Word16 -- for generating local labels + , nextlabel :: Word32 -- for generating local labels , ffis :: [FFIInfo] -- ffi info blocks, to free later -- Should be free()d when it is GCd , modBreaks :: Maybe ModBreaks -- info about breakpoints @@ -2038,7 +2038,7 @@ getLabelBc panic "getLabelBc: Ran out of labels" return (st{nextlabel = nl + 1}, LocalLabel nl) -getLabelsBc :: Word16 -> BcM [LocalLabel] +getLabelsBc :: Word32 -> BcM [LocalLabel] getLabelsBc n = BcM $ \st -> let ctr = nextlabel st in return (st{nextlabel = ctr+n}, coerce [ctr .. ctr+n-1]) |