We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent a455345 commit 4c2d4cdCopy full SHA for 4c2d4cd
src/librustc/middle/trans/base.rs
@@ -2140,7 +2140,10 @@ pub fn get_fn_llvm_attributes(ccx: &CrateContext, fn_ty: ty::t)
2140
attrs.push((idx, llvm::NonNullAttribute as u64));
2141
}
2142
// `&mut` pointer parameters never alias other parameters, or mutable global data
2143
- ty::ty_rptr(b, mt) if mt.mutbl == ast::MutMutable => {
+ // `&` pointer parameters never alias either (for LLVM's purposes) as long as the
2144
+ // interior is safe
2145
+ ty::ty_rptr(b, mt) if mt.mutbl == ast::MutMutable ||
2146
+ !ty::type_contents(ccx.tcx(), mt.ty).interior_unsafe() => {
2147
attrs.push((idx, llvm::NoAliasAttribute as u64));
2148
2149
match b {
0 commit comments