[GHC] #10800: vector-0.11 compile time increased substantially with 7.10.1
GHC
ghc-devs at haskell.org
Sun Sep 20 11:56:37 UTC 2015
#10800: vector-0.11 compile time increased substantially with 7.10.1
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner: bgamari
Type: bug | Status: new
Priority: highest | Milestone: 8.0.1
Component: Compiler | Version: 7.10.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by bgamari):
The culprit appears to be `tests/Tests/Vector.hs`, which seems to blow up
in the simplifier with GHC 7.10.1,
= 7.10.1 =
{{{
[5 of 6] Compiling Tests.Vector ( tests/Tests/Vector.hs, dist/dist-
sandbox-7565eaee/build/vector-tests-O2/vector-tests-O2-tmp/Tests/Vector.o
)
*** Parser:
*** Renamer/typechecker:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
...
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
tests/Tests/Vector.hs:20:1: Warning:
The import of ‘Data.Monoid’ is redundant
except perhaps to import instances from ‘Data.Monoid’
To import instances alone, use: import Data.Monoid()
tests/Tests/Vector.hs:405:5: Warning:
Defined but not used: ‘limitUnfolds’
tests/Tests/Vector.hs:408:5: Warning:
Defined but not used: ‘prop_unfoldr’
tests/Tests/Vector.hs:615:1: Warning:
Defined but not used: ‘testBoolUnboxedVector’
*** Desugar:
Result size of Desugar (after optimization)
= {terms: 8,929, types: 29,113, coercions: 12,626}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 7,718, types: 22,842, coercions: 12,683}
Result size of Simplifier iteration=2
= {terms: 7,645, types: 22,550, coercions: 12,627}
Result size of Simplifier
= {terms: 7,645, types: 22,550, coercions: 12,627}
*** Specialise:
Result size of Specialise
= {terms: 158,601, types: 473,559, coercions: 266,978}
*** Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}):
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
OverSatApps = False})
= {terms: 191,838, types: 610,090, coercions: 266,978}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 341,716, types: 752,822, coercions: 950,308}
Result size of Simplifier iteration=2
= {terms: 341,082, types: 678,899, coercions: 700,199}
Result size of Simplifier iteration=3
= {terms: 324,911, types: 649,679, coercions: 477,703}
Result size of Simplifier iteration=4
= {terms: 323,711, types: 646,845, coercions: 470,304}
Result size of Simplifier
= {terms: 323,711, types: 646,845, coercions: 470,304}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 2,421,941, types: 4,434,113, coercions: 2,600,098}
Result size of Simplifier iteration=2
= {terms: 1,532,846, types: 2,868,287, coercions: 1,167,104}
Result size of Simplifier iteration=3
= {terms: 1,333,796, types: 2,347,850, coercions: 910,168}
Result size of Simplifier iteration=4
= {terms: 1,326,682, types: 2,333,558, coercions: 893,473}
Result size of Simplifier
= {terms: 1,326,682, types: 2,333,558, coercions: 893,473}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 2,517,661, types: 3,700,180, coercions: 1,244,341}
Result size of Simplifier iteration=2
= {terms: 1,648,651, types: 2,362,735, coercions: 1,118,836}
Result size of Simplifier iteration=3
= {terms: 1,533,366, types: 2,160,536, coercions: 1,018,335}
Result size of Simplifier iteration=4
= {terms: 1,531,057, types: 2,158,142, coercions: 1,017,409}
Result size of Simplifier
= {terms: 1,531,057, types: 2,158,142, coercions: 1,017,409}
*** Float inwards:
Result size of Float inwards
= {terms: 1,531,057, types: 2,158,142, coercions: 1,017,409}
*** Called arity analysis:
Result size of Called arity analysis
= {terms: 1,531,057, types: 2,158,142, coercions: 1,017,409}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 1,525,383, types: 2,148,094, coercions: 1,012,837}
Result size of Simplifier iteration=2
= {terms: 1,519,162, types: 2,137,087, coercions: 1,009,451}
Result size of Simplifier iteration=3
= {terms: 1,518,511, types: 2,135,070, coercions: 1,008,419}
Result size of Simplifier iteration=4
= {terms: 1,517,741, types: 2,133,682, coercions: 1,008,349}
Result size of Simplifier
= {terms: 1,517,741, types: 2,133,682, coercions: 1,008,349}
*** Demand analysis:
Result size of Demand analysis
= {terms: 1,517,741, types: 2,133,682, coercions: 1,008,349}
*** Worker Wrapper binds:
Result size of Worker Wrapper binds
= {terms: 1,638,656, types: 2,267,189, coercions: 1,016,585}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 1,581,976, types: 2,235,934, coercions: 1,015,794}
Result size of Simplifier iteration=2
= {terms: 1,498,911, types: 2,130,083, coercions: 1,007,028}
Result size of Simplifier iteration=3
= {terms: 1,498,641, types: 2,129,656, coercions: 1,007,547}
Result size of Simplifier iteration=4
= {terms: 1,498,663, types: 2,129,564, coercions: 1,008,931}
Result size of Simplifier
= {terms: 1,498,663, types: 2,129,564, coercions: 1,008,931}
*** Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = True}):
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
OverSatApps = True})
= {terms: 1,574,915, types: 2,289,456, coercions: 1,008,931}
*** Common sub-expression:
Result size of Common sub-expression
= {terms: 1,437,681, types: 2,110,200, coercions: 999,668}
*** Float inwards:
Result size of Float inwards
= {terms: 1,437,681, types: 2,110,200, coercions: 999,668}
*** Liberate case:
Result size of Liberate case
= {terms: 1,460,235, types: 2,122,207, coercions: 1,002,808}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 1,409,789, types: 2,018,248, coercions: 1,006,095}
Result size of Simplifier iteration=2
= {terms: 1,409,904, types: 2,020,763, coercions: 1,004,750}
Result size of Simplifier iteration=3
= {terms: 1,407,598, types: 2,016,738, coercions: 1,005,425}
Result size of Simplifier iteration=4
= {terms: 1,407,068, types: 2,015,811, coercions: 1,003,311}
Result size of Simplifier
= {terms: 1,407,068, types: 2,015,811, coercions: 1,003,311}
*** SpecConstr:
Result size of SpecConstr
= {terms: 2,875,513, types: 4,153,092, coercions: 1,868,890}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 2,811,029, types: 3,774,293, coercions: 1,781,476}
Result size of Simplifier iteration=2
= {terms: 1,657,609, types: 2,285,271, coercions: 1,158,260}
Result size of Simplifier iteration=3
= {terms: 1,634,476, types: 2,261,260, coercions: 1,111,721}
Result size of Simplifier iteration=4
= {terms: 1,623,734, types: 2,229,084, coercions: 1,097,616}
Result size of Simplifier
= {terms: 1,623,734, types: 2,229,084, coercions: 1,097,616}
*** Tidy Core:
Result size of Tidy Core
= {terms: 1,374,780, types: 1,868,771, coercions: 949,928}
writeBinIface: 12038 Names
writeBinIface: 14118 dict entries
writeBinIface: 12038 Names
writeBinIface: 14118 dict entries
*** CorePrep:
Result size of CorePrep
= {terms: 1,742,444, types: 2,159,089, coercions: 949,848}
*** Stg2Stg:
*** CodeGen:
*** Assembler:
/usr/bin/gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -Itests/Tests
-Idist/dist-sandbox-7565eaee/build/vector-tests-O2/vector-tests-O2-tmp
-Idist/dist-sandbox-7565eaee/build/vector-tests-O2/vector-tests-O2-tmp
-Idist/dist-sandbox-7565eaee/build/autogen -Idist/dist-sandbox-
7565eaee/build/vector-tests-O2/vector-tests-O2-tmp -x assembler -c
/tmp/ghc32343_0/ghc32343_13.s -o dist/dist-sandbox-7565eaee/build/vector-
tests-O2/vector-tests-O2-tmp/Tests/Vector.o
*** CorePrep:
Result size of CorePrep
= {terms: 1,742,444, types: 2,159,089, coercions: 949,848}
}}}
This is a substantial change from 7.8.3, which behaves as follows,
= 7.8.3 =
{{{
[5 of 6] Compiling Tests.Vector ( tests/Tests/Vector.hs, dist/dist-
sandbox-8a24a56a/build/vector-tests-O2/vector-tests-O2-tmp/Tests/Vector.o
)
*** Parser:
*** Renamer/typechecker:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
tests/Tests/Vector.hs:405:5: Warning:
Defined but not used: ‘limitUnfolds’
tests/Tests/Vector.hs:408:5: Warning:
Defined but not used: ‘prop_unfoldr’
tests/Tests/Vector.hs:615:1: Warning:
Defined but not used: ‘testBoolUnboxedVector’
*** Desugar:
Result size of Desugar (after optimization)
= {terms: 11,244, types: 57,883, coercions: 7,302}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 9,193, types: 44,105, coercions: 7,337}
Result size of Simplifier iteration=2
= {terms: 9,116, types: 43,718, coercions: 7,159}
Result size of Simplifier
= {terms: 9,116, types: 43,718, coercions: 7,159}
*** Specialise:
Result size of Specialise
= {terms: 82,833, types: 519,765, coercions: 78,989}
*** Float out(FOS {Lam = Just 0, Consts = True, PAPs = False}):
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
PAPs = False})
= {terms: 100,958, types: 568,910, coercions: 78,989}
*** Float inwards:
Result size of Float inwards
= {terms: 100,958, types: 568,910, coercions: 78,989}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 179,170, types: 343,254, coercions: 645,024}
Result size of Simplifier iteration=2
= {terms: 123,469, types: 170,930, coercions: 259,665}
Result size of Simplifier iteration=3
= {terms: 113,030, types: 155,318, coercions: 230,494}
Result size of Simplifier iteration=4
= {terms: 112,745, types: 154,554, coercions: 221,711}
Result size of Simplifier
= {terms: 112,745, types: 154,554, coercions: 221,711}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 515,401, types: 809,314, coercions: 598,712}
Result size of Simplifier iteration=2
= {terms: 345,742, types: 520,083, coercions: 376,036}
Result size of Simplifier iteration=3
= {terms: 294,322, types: 416,385, coercions: 312,220}
Result size of Simplifier iteration=4
= {terms: 287,445, types: 402,244, coercions: 297,516}
Result size of Simplifier
= {terms: 287,445, types: 402,244, coercions: 297,516}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 453,076, types: 567,575, coercions: 280,117}
Result size of Simplifier iteration=2
= {terms: 321,815, types: 378,160, coercions: 222,556}
Result size of Simplifier iteration=3
= {terms: 309,758, types: 365,364, coercions: 219,987}
Result size of Simplifier iteration=4
= {terms: 308,628, types: 364,331, coercions: 219,583}
Result size of Simplifier
= {terms: 308,628, types: 364,331, coercions: 219,583}
*** Demand analysis:
Result size of Demand analysis
= {terms: 308,628, types: 364,331, coercions: 219,583}
*** Worker Wrapper binds:
Result size of Worker Wrapper binds
= {terms: 352,621, types: 419,343, coercions: 223,102}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 334,327, types: 396,352, coercions: 217,632}
Result size of Simplifier iteration=2
= {terms: 297,776, types: 344,782, coercions: 211,762}
Result size of Simplifier iteration=3
= {terms: 297,134, types: 343,498, coercions: 211,068}
Result size of Simplifier iteration=4
= {terms: 296,791, types: 342,860, coercions: 211,033}
Result size of Simplifier
= {terms: 296,791, types: 342,860, coercions: 211,033}
*** Float out(FOS {Lam = Just 0, Consts = True, PAPs = True}):
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
PAPs = True})
= {terms: 311,717, types: 380,250, coercions: 211,033}
*** Common sub-expression:
Result size of Common sub-expression
= {terms: 281,729, types: 346,991, coercions: 196,315}
*** Float inwards:
Result size of Float inwards
= {terms: 281,729, types: 346,991, coercions: 196,315}
*** Liberate case:
Result size of Liberate case
= {terms: 301,329, types: 362,935, coercions: 200,458}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 281,187, types: 322,484, coercions: 200,278}
Result size of Simplifier iteration=2
= {terms: 279,511, types: 320,001, coercions: 199,549}
Result size of Simplifier
= {terms: 279,511, types: 320,001, coercions: 199,549}
*** SpecConstr:
Result size of SpecConstr
= {terms: 398,168, types: 420,420, coercions: 230,461}
*** Simplifier:
Result size of Simplifier iteration=1
= {terms: 390,005, types: 411,465, coercions: 230,270}
Result size of Simplifier iteration=2
= {terms: 272,588, types: 315,504, coercions: 201,634}
Result size of Simplifier iteration=3
= {terms: 269,759, types: 310,458, coercions: 200,366}
Result size of Simplifier
= {terms: 269,759, types: 310,458, coercions: 200,366}
*** Tidy Core:
Result size of Tidy Core
= {terms: 269,759, types: 310,458, coercions: 200,366}
writeBinIface: 518 Names
writeBinIface: 694 dict entries
writeBinIface: 518 Names
writeBinIface: 694 dict entries
*** CorePrep:
Result size of CorePrep
= {terms: 341,307, types: 360,564, coercions: 200,286}
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10800#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list