#11505: Boot file problem -------------------------------------+------------------------------------- Reporter: augustss | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Resolution: | Keywords: 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 jberryman): I can repro what looks like a similar issue on HEAD, but I don't have a good test yet. I'm experimenting building GHC with the following build flavour: {{{ SRC_HC_OPTS = -O -H64m GhcStage1HcOpts = -O GhcStage2HcOpts = -O2 -XStrictData -XUnboxedSums -funbox-strict-fields -fexpose-all-unfoldings -flate-dmd-anal -fmax-simplifier-iterations=8 -funfolding-use-threshold=120 -fstatic-argument-transformation -fsimpl- tick-factor=100000 GhcLibHcOpts = -O2 -XUnboxedSums -funbox-strict-fields -flate-dmd- anal -fmax-simplifier-iterations=8 -funfolding-use-threshold=120 -fsimpl- tick-factor=100000 BUILD_PROF_LIBS = NO HADDOCK_DOCS = NO BUILD_SPHINX_HTML = NO BUILD_SPHINX_PDF = NO BUILD_MAN = NO }}} Where the error pops up building stage2: {{{ "inplace/bin/ghc-stage1" -hisuf hi -osuf o -hcsuf hc -static -O -H64m -Wall -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header -Iincludes/dist-ghcconstants/header -this-unit-i d ghc-8.1 -hide-all-packages -i -icompiler/basicTypes -icompiler/cmm -icompiler/codeGen -icompiler/coreSyn -icompiler/deSugar -icompiler/ghci -icompiler/hsSyn -icompiler/iface -icompiler/llvmGen -i compiler/main -icompiler/nativeGen -icompiler/parser -icompiler/prelude -icompiler/profiling -icompiler/rename -icompiler/simplCore -icompiler/simplStg -icompiler/specialise -icompiler/stgSyn -icom piler/stranal -icompiler/typecheck -icompiler/types -icompiler/utils -icompiler/vectorise -icompiler/stage2/build -Icompiler/stage2/build -icompiler/stage2/build/./autogen -Icompiler/stage2/build/. /autogen -Icompiler/. -Icompiler/parser -Icompiler/utils -Icompiler/../rts/dist/build -Icompiler/stage2 -optP-DGHCI -optP-include -optPcompiler/stage2/build/./autogen/cabal_macros.h -package-id a rray-0.5.1.1 -package-id base-4.9.0.0 -package-id binary-0.8.3.0 -package- id bytestring-0.10.8.1 -package-id containers-0.5.7.1 -package-id deepseq-1.4.2.0 -package-id directory-1.2.6.2 -package-id filepath-1.4.1.0 -package-id ghc-boot-8.1 -package-id ghci-8.1 -package- id hoopl-3.10.2.1 -package-id hpc-0.6.0.3 -package-id process-1.4.2.0 -package-id template-haskell-2.11.0.0 -package-id time -1.6.0.1 -package-id transformers-0.5.2.0 -package-id unix-2.7.2.0 -Wall -fno-warn-name-shadowing -this-unit-id ghc -XHaskell2010 -optc- DTHREADED_RTS -DGHCI_TABLES_NEXT_TO_CODE -DSTAGE=2 -Rghc-timi ng -O2 -XStrictData -XUnboxedSums -funbox-strict-fields -fexpose-all- unfoldings -flate-dmd-anal -fmax-simplifier-iterations=8 -funfolding-use- threshold=120 -fstatic-argument-transformation -fsimpl -tick-factor=100000 -no-user-package-db -rtsopts -Wnoncanonical- monad-instances -odir compiler/stage2/build -hidir compiler/stage2/build -stubdir compiler/stage2/build -dynamic-too -c comp iler/basicTypes/ConLike.hs -o compiler/stage2/build/ConLike.o -dyno compiler/stage2/build/ConLike.dyn_o compiler/basicTypes/ConLike.hs:50:1: error: Type constructor ‘ConLike’ has conflicting definitions in the module and its hs-boot file Main module: data ConLike = RealDataCon {-# UNPACK #-}DataCon | PatSynCon {-# UNPACK #-}PatSyn Boot file: data ConLike = RealDataCon !DataCon | PatSynCon !PatSyn The constructors do not match: The strictness annotations for ‘RealDataCon’ differ The strictness annotations for ‘PatSynCon’ differ <<ghc: 246434928 bytes, 111 GCs, 12727312/40013680 avg/max bytes residency (7 samples), 83M in use, 0.000 INIT (0.000 elapsed), 0.130 MUT (0.135 elapsed), 0.179 GC (0.179 elapsed) :ghc>> compiler/ghc.mk:577: recipe for target 'compiler/stage2/build/ConLike.o' failed make[1]: *** [compiler/stage2/build/ConLike.o] Error 1 }}} Yet I can't repro with the original test case above, even when I pass all the flags I specify in the flavor above: {{{ $ ~/inplace/bin/ghc-stage1 -O2 -XStrictData -XUnboxedSums -funbox-strict- fields -fexpose-all-unfoldings -flate-dmd-anal -fmax-simplifier- iterations=8 -funfolding-use-threshold=120 -fstatic-argument- transformation -fsimpl-tick-factor=100000 -c /tmp/Foo.hs-boot ...and so on for Bar.hs and Foo.hs }}} No error is thrown. I don't understand enough of the way ghc-stage1 is being called in the ghc build's invocation to know where to begin experimenting further with this. Note, you have to put spaces around occurences of `#.` from `Data.Functor.Utils` for UnboxedSums to get the compile to go this far, but otherwise my ghc tree is unmodified from 14c2e8e0c11b -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11505#comment:5> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler