#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