Ticket #7557 (closed bug: invalid)
Default implementation for a type class function missing when profiling is enabled
Description
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.
