Conversation

I’m curious about the llvm miscompile with noalias. What is it about rustc adding noalias annotations that surfaces these llvm bugs? Doesn’t clang or a midend optimization pass add them too?
2
1
Rust has uncovered a bunch of these LLVM bugs. It has consistently been caused by issues in LLVM rather than in rustc. It also definitely impacts C but restrict isn't widely used. Most references in Rust should be marked noalias. It means no memory dependencies between them.
1
6
LLVM NoAlias means that two pointers do not have memory dependencies between them, i.e. there aren't writes made through one of the pointers that are visible through the other. Rust guarantees that while an &mut reference is active/usable, nothing else reads/writes that data.
1
2
Show replies