join points and stream fusion?

Christian Höner zu Siederdissen choener at
Thu Apr 27 21:30:33 UTC 2017

Dear all,

have some of you experienced bad code generation in ghc-8.2-rc1 in
combination with stream fusion from the vector package?

Unfortunately, the problem occurs with ADPfusion code which means no
simple example, but I'm asking because of the following core below.

In ghc-8.0 I have nice core, here however constructor specialization has
not happened, neither with the Left/Right nor with the SPEC.

The running time in ghc-8.0 is 2.6 seconds, in rc-1 10.9 seconds.


joinrec {
  $wfoldlM'_loop2_s1uf4 w_s1ueX ww1_s1uf2 w1_s1ueZ
    = case w_s1ueX of { __DEFAULT ->
      case w1_s1ueZ of {
        Left sa_au90 ->
          case sa_au90 of {
            Left sa1_XuNq ->
              case sa1_XuNq of {
                Left sa2_XuNe ->
                  case sa2_XuNe of {
                    SL s2_alTo k_alTp ->
                      case k_alTp of {
                        __DEFAULT ->
                          jump $wfoldlM'_loop2_s1uf4
                            SPEC ww1_s1uf2 lvl211_s1IDG;
                        1# ->
                          jump $wfoldlM'_loop2_s1uf4
                            SPEC ww1_s1uf2 (Left (Left (Left (SR s2_alTo))))

More information about the Glasgow-haskell-users mailing list