Default implementation for a type class function missing when profiling is enabled
|Reported by:||JohnWiegley||Owned by:|
|Type of failure:||None/Unknown||Test Case:|
|Related Tickets:||Differential Revisions:|
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:
And on this line I create an instance of the Updatable type class, with no override for this function:
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.