diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2021-10-06 12:35:58 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-10-07 20:20:01 -0400 |
commit | 44886aaba46230de003fb99153a3120667225302 (patch) | |
tree | 30fa4a9f9202da98cd1a26af1f848e23a19b1a5c /compiler/GHC/Builtin/Names.hs | |
parent | e1d02fb0f04bcf3acea1da96d291a03bb749718d (diff) | |
download | haskell-44886aaba46230de003fb99153a3120667225302.tar.gz |
Bignum: allow inlining of naturalEq/Ne/Gt/Lt/Ge/Le/Compare (#20361)
Perform constant folding on bigNatCompare instead.
Some functions of the Enum class for Natural now need to be inlined
explicitly to be specialized at call sites (because `x > lim` for
Natural is inlined and the resulting function is a little too big to
inline). If we don't do this, T17499 runtime allocations regresses by
16%.
Diffstat (limited to 'compiler/GHC/Builtin/Names.hs')
-rw-r--r-- | compiler/GHC/Builtin/Names.hs | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/compiler/GHC/Builtin/Names.hs b/compiler/GHC/Builtin/Names.hs index 91c9c80cef..5407e16b90 100644 --- a/compiler/GHC/Builtin/Names.hs +++ b/compiler/GHC/Builtin/Names.hs @@ -398,11 +398,6 @@ basicKnownKeyNames naturalToWordName, naturalToWordClampName, - naturalGeName, - naturalLeName, - naturalGtName, - naturalLtName, - naturalCompareName, naturalPopCountName, naturalShiftRName, naturalShiftLName, @@ -1195,11 +1190,6 @@ integerFromNaturalName , integerShiftRName , naturalToWordName , naturalToWordClampName - , naturalGeName - , naturalLeName - , naturalGtName - , naturalLtName - , naturalCompareName , naturalPopCountName , naturalShiftRName , naturalShiftLName @@ -1228,6 +1218,7 @@ integerFromNaturalName , naturalSizeInBaseName , bignatFromWordListName , bignatEqName + , bignatCompareName :: Name bnbVarQual, bnnVarQual, bniVarQual :: String -> Unique -> Name @@ -1238,14 +1229,10 @@ bniVarQual str key = varQual gHC_NUM_INTEGER (fsLit str) key -- Types and DataCons bignatFromWordListName = bnbVarQual "bigNatFromWordList#" bignatFromWordListIdKey bignatEqName = bnbVarQual "bigNatEq#" bignatEqIdKey +bignatCompareName = bnbVarQual "bigNatCompare" bignatCompareIdKey naturalToWordName = bnnVarQual "naturalToWord#" naturalToWordIdKey naturalToWordClampName = bnnVarQual "naturalToWordClamp#" naturalToWordClampIdKey -naturalGeName = bnnVarQual "naturalGe#" naturalGeIdKey -naturalLeName = bnnVarQual "naturalLe#" naturalLeIdKey -naturalGtName = bnnVarQual "naturalGt#" naturalGtIdKey -naturalLtName = bnnVarQual "naturalLt#" naturalLtIdKey -naturalCompareName = bnnVarQual "naturalCompare" naturalCompareIdKey naturalPopCountName = bnnVarQual "naturalPopCount#" naturalPopCountIdKey naturalShiftRName = bnnVarQual "naturalShiftR#" naturalShiftRIdKey naturalShiftLName = bnnVarQual "naturalShiftL#" naturalShiftLIdKey @@ -2592,14 +2579,8 @@ integerFromNaturalIdKey , integerFromWordIdKey , integerFromWord64IdKey , integerFromInt64IdKey - , bignatEqIdKey , naturalToWordIdKey , naturalToWordClampIdKey - , naturalGeIdKey - , naturalLeIdKey - , naturalGtIdKey - , naturalLtIdKey - , naturalCompareIdKey , naturalPopCountIdKey , naturalShiftRIdKey , naturalShiftLIdKey @@ -2627,6 +2608,8 @@ integerFromNaturalIdKey , naturalPowModIdKey , naturalSizeInBaseIdKey , bignatFromWordListIdKey + , bignatEqIdKey + , bignatCompareIdKey :: Unique integerFromNaturalIdKey = mkPreludeMiscIdUnique 600 @@ -2675,11 +2658,6 @@ integerFromInt64IdKey = mkPreludeMiscIdUnique 644 naturalToWordIdKey = mkPreludeMiscIdUnique 650 naturalToWordClampIdKey = mkPreludeMiscIdUnique 651 -naturalGeIdKey = mkPreludeMiscIdUnique 654 -naturalLeIdKey = mkPreludeMiscIdUnique 655 -naturalGtIdKey = mkPreludeMiscIdUnique 656 -naturalLtIdKey = mkPreludeMiscIdUnique 657 -naturalCompareIdKey = mkPreludeMiscIdUnique 658 naturalPopCountIdKey = mkPreludeMiscIdUnique 659 naturalShiftRIdKey = mkPreludeMiscIdUnique 660 naturalShiftLIdKey = mkPreludeMiscIdUnique 661 @@ -2709,6 +2687,7 @@ naturalSizeInBaseIdKey = mkPreludeMiscIdUnique 684 bignatFromWordListIdKey = mkPreludeMiscIdUnique 690 bignatEqIdKey = mkPreludeMiscIdUnique 691 +bignatCompareIdKey = mkPreludeMiscIdUnique 692 ------------------------------------------------------ |