4 ms·
There are some "shoulds" related to aliasing I believe. Things the compiler can assume when compiling a rust program that it can't when compiling C, which shoul
by vintermann 7y ago
There are some "shoulds" related to aliasing I believe. Things the compiler can assume when compiling a rust program that it can't when compiling C, which should in theory let it generate more efficient code.
But last I heard Rust wasn't taking advantage of this due to issues with LLVM. The same benefits should also be achievable in C with pragmas.
- masklinn 7y ago> There are some "shoulds" related to aliasing I believe. c2rust has to be careful not to "restrict" pointers which can in fact alias. > But last I heard Rust wasn't taking advantage of this due to issues with LLVM. That's correct: https://github.com/rust-lang/rust/issues/54878 https://github.com/rust-lang/rust/issues/54878 > The same benefits should also be achievable in C with pragmas. I don't know that any compiler provides a noalias-all pragma. I don't know that it would be very sane either since C very much defines pointers as aliasing by default. Plus you wouldn't have any way to revert this behaviour and mark pointers as aliasing.
- jashmatthews 7y ago> C very much defines pointers as aliasing by default. This is actually a huge issue for the CRuby JIT which generates C from the VM bytecode. Alias analysis on the generated C code, which is full of indirection, is basically useless and severely restricts the possible optimizations.