Default implementation for a type class function missing when profiling is enabled
I tried to reduce this to a simpler case, but was unable to produce the bug.
At the following line you'll see the function loadObject'
defined for the type class Updatable
:
https://github.com/fpco/gitlib/blob/master/gitlib/Data/Git/Internal.hs#L115
And on this line I create an instance of the Updatable
type class, with no override for this function:
https://github.com/fpco/gitlib/blob/master/gitlib/Data/Git/Blob.hs#L47
All is well until I build with profiling, as follows:
cabal configure \
--enable-tests \
--enable-benchmarks \
--enable-library-profiling \
--enable-executable-profiling \
--ghc-option=-rtsopts \
--ghc-option=-prof \
--ghc-option=-fprof-auto \
--ghc-option=-fprof-auto-calls
cabal build
When built with profiling, the linker thinks that Blob.hs is trying to call another version of loadObject'
, _gitlibzm0zi5zi3_DataziGitziInternal_loadObjectzq_C1h_cc
, which is not defined anywhere. The default implementation in the type class definition is named _gitlibzm0zi5zi3_DataziGitziInternal_loadObjectzq_C1g_cc
.
The happens with both 7.4.2 and 7.6.1.
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 |