Stale .hi files affect compilation.
I saw the following odd behaviour while playing with the example from #7446 (closed). Strangely, whether the warning (unusuable UNPACK pragma) is printed or not depends on the presence and contents of a .hi file despite of --fforce-recomp and even if the source file was modified.
> rm -f Peaker.*
> ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.1
> echo 'module Peaker(V(..)) where{ data V = V {-# UNPACK #-} !L; data L = L V }' > Peaker.hs
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> rm Peaker.hi
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> echo 'module Peaker(L(..)) where{ data V = V {-# UNPACK #-} !L; data L = L V }' > Peaker.hs
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
> rm Peaker.hi
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> echo 'module Peaker(V(..)) where{ data V = V {-# UNPACK #-} !L; data L = L V }' > Peaker.hs
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
> rm Peaker.hi
> ghc -fforce-recomp -O1 Peaker.hs
[1 of 1] Compiling Peaker ( Peaker.hs, Peaker.o )
Peaker.hs:1:38: Warning:
Ignoring unusable UNPACK pragma on the first argument of `V'
In the definition of data constructor `V'
In the data declaration for `V'
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |