[GHC] #13027: Core lint errors compiling containers HEAD with GHC HEAD

GHC ghc-devs at haskell.org
Tue Jan 10 17:59:00 UTC 2017


#13027: Core lint errors compiling containers HEAD with GHC HEAD
-------------------------------------+-------------------------------------
        Reporter:  erikd             |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.2.1
       Component:  Compiler          |              Version:  8.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Building GHC      |            Test Case:
  failed                             |  simplCore/should_compile/T13027
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 Evaluatedness matters because the let/app invariant says that an argument
 of an application of unlifted type should be ok for speculation. And an
 application of a primop `foo# bar baz` is only considered ok for
 speculation if `bar` and `baz` are known to be evaluated, since otherwise
 evaluating `foo# bar baz` might evaluate `bar` and `baz` which could
 diverge. Actually `reallyUnsafePtrEquality#` never evaluates its arguments
 but the ok for speculation check does not know that; and if it did then
 the real underlying issue would still not be solved.

 I'm guessing that the expression `tagToEnum# @ Bool
 (reallyUnsafePtrEquality# @ (Set a) ww_s4m3 l_a2PV)` was produced at an
 earlier stage when the first argument was known to be evaluated. Looks
 like it might have been before worker/wrapper, since `go` produces a
 `StrictPair` whose fields are known to be evaluated. But `(# , #)` can
 hold unevaluated things so w/w causes us to lose the information that
 `ww_s4m3` is evaluated.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13027#comment:19>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list