2 ms·
Did you mean to link to a different example, or different compiler flags? The link you provide shows only one function, because LLVM has optimized both to be i
by eddyb 6y ago
Did you mean to link to a different example, or different compiler flags?
The link you provide shows only one function, because LLVM has optimized both to be identical, and deduplicated them.
(If you disable the "Directives" filter, you can see a `.set example::clone_concrete, example::clone_abstract`, which aliases one to the other)
- 5462 6y agoThe behavior differs between (the present) nightly and rustc 1.45.2; the nightly available when this link was posted matched the 1.45.2 behavior. The output with 1.45.2 is as follows: example::clone_concrete: mov eax, edi ret example::clone_abstract: mov ecx, edi and ecx, -256 xor eax, eax xor edx, edx cmp dil, 1 sete dl cmove eax, ecx or eax, edx ret
- eddyb 6y agoFascinating coincidence! It was probably the LLVM upgrade (https://github.com/rust-lang/rust/pull/73526 https://github.com/rust-lang/rust/pull/73526) landing, probably before the comment was even posted (but the nightly would only show up with the upgraded LLVM the next day).