[GHC] #13543: Improve demand analysis for join points

GHC ghc-devs at haskell.org
Thu Mar 8 13:20:35 UTC 2018


#13543: Improve demand analysis for join points
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  (none)
            Type:  bug               |               Status:  closed
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.1
      Resolution:  fixed             |             Keywords:  JoinPoints
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by alpmestan):

 When running `./validate --slow`, I found out that the `T13543` test fails
 with all 3 of these ways: `hpc`, `optasm`, `optllvm`.

 {{{
 =====> T13543(hpc) 1 of 1 [0, 0, 0]
 cd "./simplCore/should_compile/T13543.run" &&  "/home/alp/ghc/inplace/test
 spaces/ghc-stage2" -c T13543.hs -dcore-lint -dcmm-lint -no-user-package-db
 -rtsopts -fno-warn-missed-specialisations -fshow-warning-groups
 -fdiagnostics-color=never -fno-diagnostics-show-caret -dno-debug-output
 -O -fhpc -ddump-str-signatures
 Actual stderr output differs from expected:
 diff -uw "./simplCore/should_compile/T13543.run/T13543.stderr.normalised"
 "./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised"
 --- ./simplCore/should_compile/T13543.run/T13543.stderr.normalised
 2018-03-08 14:13:19.867965000 +0100
 +++ ./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised
 2018-03-08 14:13:19.867965000 +0100
 @@ -1 +1,12 @@

 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><L,1*U><L,1*U>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 +
 +
 +
 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><L,1*U><L,1*U>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 *** unexpected failure for T13543(hpc)
 }}}

 {{{
 =====> T13543(optasm) 1 of 1 [0, 0, 0]
 cd "./simplCore/should_compile/T13543.run" &&  "/home/alp/ghc/inplace/test
 spaces/ghc-stage2" -c T13543.hs -dcore-lint -dcmm-lint -no-user-package-db
 -rtsopts -fno-warn-missed-specialisations -fshow-warning-groups
 -fdiagnostics-color=never -fno-diagnostics-show-caret -dno-debug-output
 -O -fasm -ddump-str-signatures
 Actual stderr output differs from expected:
 diff -uw "./simplCore/should_compile/T13543.run/T13543.stderr.normalised"
 "./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised"
 --- ./simplCore/should_compile/T13543.run/T13543.stderr.normalised
 2018-03-08 14:16:02.367965000 +0100
 +++ ./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised
 2018-03-08 14:16:02.367965000 +0100
 @@ -1 +1,12 @@

 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><S(S),1*U(U)><S(S),1*U(U)>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 +
 +
 +
 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><S(S),1*U(U)><S(S),1*U(U)>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 *** unexpected failure for T13543(optasm)
 }}}

 {{{
 =====> T13543(optllvm) 1 of 1 [0, 0, 0]
 cd "./simplCore/should_compile/T13543.run" &&  "/home/alp/ghc/inplace/test
 spaces/ghc-stage2" -c T13543.hs -dcore-lint -dcmm-lint -no-user-package-db
 -rtsopts -fno-warn-missed-specialisations -fshow-warning-groups
 -fdiagnostics-color=never -fno-diagnostics-show-caret -dno-debug-output
 -O -fllvm -ddump-str-signatures
 Actual stderr output differs from expected:
 diff -uw "./simplCore/should_compile/T13543.run/T13543.stderr.normalised"
 "./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised"
 --- ./simplCore/should_compile/T13543.run/T13543.stderr.normalised
 2018-03-08 14:16:28.627965000 +0100
 +++ ./simplCore/should_compile/T13543.run/T13543.comp.stderr.normalised
 2018-03-08 14:16:28.627965000 +0100
 @@ -1 +1,12 @@

 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><S(S),1*U(U)><S(S),1*U(U)>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 +
 +
 +
 +==================== Strictness signatures ====================
 +Foo.$trModule: m
 +Foo.f: <S(S),1*U(1*U)><S(S),1*U(U)><S(S),1*U(U)>m
 +Foo.g: <S(S(S)S(S)),1*U(1*U(U),1*U(U))>m
 *** unexpected failure for T13543(optllvm)
 }}}

 In all 3 cases, we're expecting an empty stderr (that we get with other
 ways like `normal`) but we instead get the strictness signatures dumped
 there, because of the flag that we pass to ghc:

 {{{
 test('T13543', normal, compile, ['-ddump-str-signatures'])
 }}}

 Should I just strip that flag so that these tests pass? It's still odd
 that say `normal` and `optasm` dump things in different places, isn't it?

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


More information about the ghc-tickets mailing list