diff options
| author | Ryan Scott <ryan.gl.scott@gmail.com> | 2017-06-02 13:12:11 -0400 |
|---|---|---|
| committer | Ben Gamari <ben@smart-cactus.org> | 2017-06-02 13:12:13 -0400 |
| commit | a786b136f48dfcf907dad55bcdbc4fcd247f2794 (patch) | |
| tree | 9c6abee43aa398fdd8168b1cb7bd2d3fb5e6bacf /compiler/simplCore/OccurAnal.hs | |
| parent | 811a2986475d88f73bb22b4600970039e1b582d6 (diff) | |
| download | haskell-a786b136f48dfcf907dad55bcdbc4fcd247f2794.tar.gz | |
Use lengthIs and friends in more places
While investigating #12545, I discovered several places in the code
that performed length-checks like so:
```
length ts == 4
```
This is not ideal, since the length of `ts` could be much longer than 4,
and we'd be doing way more work than necessary! There are already a slew
of helper functions in `Util` such as `lengthIs` that are designed to do
this efficiently, so I found every place where they ought to be used and
did just that. I also defined a couple more utility functions for list
length that were common patterns (e.g., `ltLength`).
Test Plan: ./validate
Reviewers: austin, hvr, goldfire, bgamari, simonmar
Reviewed By: bgamari, simonmar
Subscribers: goldfire, rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D3622
Diffstat (limited to 'compiler/simplCore/OccurAnal.hs')
| -rw-r--r-- | compiler/simplCore/OccurAnal.hs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/simplCore/OccurAnal.hs b/compiler/simplCore/OccurAnal.hs index 98c81ce026..5dd30aa668 100644 --- a/compiler/simplCore/OccurAnal.hs +++ b/compiler/simplCore/OccurAnal.hs @@ -2572,7 +2572,7 @@ adjustRhsUsage mb_join_arity rec_flag bndrs usage Nothing -> all isOneShotBndr bndrs exact_join = case mb_join_arity of - Just join_arity -> join_arity == length bndrs + Just join_arity -> bndrs `lengthIs` join_arity _ -> False type IdWithOccInfo = Id @@ -2718,7 +2718,7 @@ decideJoinPointHood NotTopLevel usage bndrs ok_rule _ BuiltinRule{} = False -- only possible with plugin shenanigans ok_rule join_arity (Rule { ru_args = args }) - = length args == join_arity + = args `lengthIs` join_arity -- Invariant 1 as applied to LHSes of rules willBeJoinId_maybe :: CoreBndr -> Maybe JoinArity |
