2

Introduce a fast path that avoids the `debug_tuple` abstraction when deriving De...

 2 years ago
source link: https://github.com/rust-lang/rust/pull/88832
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Copy link

Contributor

pcwalton commented on Sep 10

The intent here is to allow LLVM to remove the switch entirely in favor of an
indexed load from a table of constant strings, which is likely what the
programmer would write in C. Unfortunately, LLVM currently doesn't perform this
optimization due to a bug, but there is a
patch
that fixes this issue. I've verified
that, with that patch applied on top of this commit, Debug for unit-like tuple
variants becomes a load, reducing the O(n) code bloat to O(1).

Note that inlining DebugTuple::finish() wasn't enough to allow LLVM to
optimize the code properly; I had to avoid the abstraction entirely. Not using
the abstraction is likely better for compile time anyway.

Part of #88793.

r? @oli-obk


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK