[GHC] #12135: Failure to recompile when #include file is created earlier on include path

GHC ghc-devs at haskell.org
Fri Jun 3 21:23:14 UTC 2016


#12135: Failure to recompile when #include file is created earlier on include path
-------------------------------------+-------------------------------------
        Reporter:  NeilMitchell      |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Driver            |              Version:  8.0.1
      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:                    |
-------------------------------------+-------------------------------------
Changes (by thomie):

 * component:  Compiler => Driver


@@ -4,1 +4,1 @@
- If you create a file {{{Test.hs}}}
+ If you create a file {{{Main.hs}}}
@@ -7,1 +7,1 @@
- #include "a/Test.hs"
+ #include "Test.h"
@@ -17,4 +17,4 @@
- Then run and compile with {{{ghc --make -XCPP -Ib;a Main.hs}}} it compiles
- and runs properly, printing 1. Changing {{{a/Test.h}}} to {{{message =
- 2}}} then running {{{ghc}}} rebuilds and prints 2. Creating a fresh
- {{{b/Test.h}}} with {{{message = 3}}} does not cause {{{ghc}}} to
+ Then run and compile with {{{ghc --make -XCPP -Ib -Ia Main.hs}}} it
+ compiles and runs properly, printing 1. Changing {{{a/Test.h}}} to
+ {{{message = 2}}} then running {{{ghc}}} rebuilds and prints 2. Creating a
+ fresh {{{b/Test.h}}} with {{{message = 3}}} does not cause {{{ghc}}} to

New description:

 Originally discovered when trying to improve Hadrian, for context see:
 https://github.com/snowleopard/hadrian/issues/247#issuecomment-222317602

 If you create a file {{{Main.hs}}}

 {{{#!hs
 #include "Test.h"
 main = print message
 }}}

 And a file {{{a/Test.h}}}

 {{{#!hs
 message = 1
 }}}

 Then run and compile with {{{ghc --make -XCPP -Ib -Ia Main.hs}}} it
 compiles and runs properly, printing 1. Changing {{{a/Test.h}}} to
 {{{message = 2}}} then running {{{ghc}}} rebuilds and prints 2. Creating a
 fresh {{{b/Test.h}}} with {{{message = 3}}} does not cause {{{ghc}}} to
 recompile, and thus incorrectly still prints 2. Touching {{{Main.hs}}}
 causes recompilation, and then the correct header file is picked up,
 resulting in 3 being printed.

--

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


More information about the ghc-tickets mailing list