A bug is every user-visible behaviour that is contrary to the documentation. I'd not call the output of
Devel::Peek user-visible (it's a Devel:: module, after all), and the the docs generally don't give performance guarantees.
That said you should still send a bug report to p5p, maybe they can do something about it (update: after reading tye's reply I think a doc patch would be appropriate).
I've taken a look inside the source code for pp_substr, but frankly, I do not understand the macro-machinations that go on in there.
I shared that experience the other day :/