[GHC] #15569: Constant folding optimises 1 into 3

GHC ghc-devs at haskell.org
Sat Sep 8 14:29:20 UTC 2018


#15569: Constant folding optimises 1 into 3
-------------------------------------+-------------------------------------
        Reporter:  snowleopard       |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  highest           |            Milestone:  8.6.1
       Component:  Compiler          |              Version:  8.6.1-beta1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #9136             |  Differential Rev(s):  Phab:D5109
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ChaiTRex):

 = Semi-exhaustive testing is being performed using GHC before the fix =

 Using the attached program, I'm doing semi-exhaustive testing of constant
 folding up to an expression nesting depth of two (up to something like `(a
 + b)*(c + d)`) with literal and variable values in `[0, 1, 3, 7] ::
 [Int]`.

 Note that the attached program takes the better part of a day, so it might
 not be prudent to add it to the test suite unless that can be
 significantly reduced or a "very, very slow" testing option can be added.

 == Testing is being done before fix ==

 To ensure the tester actually detects problems, the tester program was
 performed until it detected this bug report's bug with GHC before the fix
 (at GHC commit `ff29fc84c03c800cfa04c2a00eb8edf6fa5f4183`).

 The tester program is still running and full output will be attached when
 the program finishes. The first few lines of output are:

 {{{
 ERROR! ((0 - x0) - (0 - x1)) is optimized incorrectly!
 ERROR! ((0 - x0) - (1 - x0)) is optimized incorrectly!
 ERROR! ((0 - x0) - (1 - x1)) is optimized incorrectly!
 ERROR! ((0 - x0) - (3 - x0)) is optimized incorrectly!
 ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮   ⋮
 }}}

 == Testing will be done after fix ==

 Testing will next be performed using GHC at `HEAD` (after the above fix).
 Results will be posted in my next comment in about a day.

 == The program ==

 There are two modules attached:

 * `ThisGHC.hs`: a Template Haskell helper module for running the specific
 GHC installation a program was compiled with.
 * `ConstantFolding.hs`: a program that repeatedly compiles a certain
 number of expressions at a time (to avoid heap overflows from compiling
 all expressions at once) with `-O2` and tests their output against those
 expressions compiled with `-O0`.

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


More information about the ghc-tickets mailing list