Frustrating behaviour of the INLINE pragma
So I have a function "a", which uses another function "b" from another module.
- Step 1. I benchmark its performance and get 250ns.
- Step 2. I go and put the "INLINE" pragma on the function "b", run the benchmark again and get 500ns. That is twice as long.
- Step 3. I go and add an explicit invocation of the inline function over function "b" in function "a" and finally get the desired optimization: 208ns.
You can reproduce the issue by executing cabal bench decoding --benchmark-options=numeric
after cloning the trees of the following commits:
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | MacOS X |
Architecture | x86_64 (amd64) |