Recompilation avoidance fails after a LANGUAGE change
It looks like the recompilation checker can be confused when a LANGUAGE pragma is added or removed.
The following shell script demonstrates the issue:
#!/bin/sh
cat >Foo.hs <<END
{-# LANGUAGE UndecidableInstances #-}
module Foo where
END
rm -f Foo.hi Foo.o
ghc -c Foo.hs; ghc --show-iface Foo.hi | grep flag
sed -i 's/\^{-\#/--&/' Foo.hs # comment out the pragma
ghc -c Foo.hs; ghc --show-iface Foo.hi | grep flag
ghc -c Foo.hs; ghc --show-iface Foo.hi | grep flag
ghc -c Foo.hs; ghc --show-iface Foo.hi | grep flag
I get this output:
% ./bug.sh
flag hash: b1ada48735eec2ef16d5070887aa7f10
flag hash: b1ada48735eec2ef16d5070887aa7f10
flag hash: e7b294090e04f1a84f0bfc9b8cc49322
compilation IS NOT required
flag hash: e7b294090e04f1a84f0bfc9b8cc49322
In the third invocation to GHC, I expect the recompilation checker to detect that compilation is not required, because nothing has changed since the second invocation. Also it seems suspicious that the flag hash changes beteen the second run and the third run.
Trac metadata
Trac field | Value |
---|---|
Version | 8.4.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |