about summary refs log tree commit diff
path: root/tests/rustdoc-js-std/write.js
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2024-03-20 01:27:33 -0700
committeriximeow <me@iximeow.net>2024-03-20 03:33:07 -0700
commite7fbf7223f640c5121b21183cd26ecd3ccb6a820 (patch)
tree38f9f6c5f5f44553ad41618048043623aa7cd3cb /tests/rustdoc-js-std/write.js
parentb7dcabe55e3b915ba9488dc374f752404c2c8945 (diff)
downloadrust-e7fbf7223f640c5121b21183cd26ecd3ccb6a820.tar.gz
rust-e7fbf7223f640c5121b21183cd26ecd3ccb6a820.zip
improve codegen of fmt_num to delete unreachable panic
it seems LLVM doesn't realize that `curr` is always decremented at least
once in either loop formatting characters of the input string by their
appropriate radix, and so the later `&buf[curr..]` generates a check for
out-of-bounds access and panic. this is unreachable in reality as even
for `x == T::zero()` we'll produce at least the character
`Self::digit(T::zero())` for at least one character output, and `curr`
will always be at least one below `buf.len()`.

adjust `fmt_int` to make this fact more obvious to the compiler, which
fortunately (or unfortunately) results in a measurable performance
improvement for workloads heavy on formatting integers.
Diffstat (limited to 'tests/rustdoc-js-std/write.js')
0 files changed, 0 insertions, 0 deletions