Few LLVM lint "Unusual" · Issue #48229 · rust-lang/rust (original) (raw)

In Issue #48227 I've seen code compiled with "-C passes=lint", I've used it on some of my code and I've found few problems, reduced below:


fn foo(_: &u32, _: &u32) {}
fn main() {
    let a = 0;
    foo(&a, &a);
}


...>rustc -C passes=lint test1.rs
Unusual: noalias argument aliases another argument
  call void @_ZN4bug13foo17h2a852a9d6b40f8a0E(i32* noalias readonly dereferenceable(4) %1, i32* noalias readonly dereferenceable(4) %1)

fn main() {
    (1 .. 9).take_while(|i| i * i <= 10).any(|_| true);
}


...>rustc -C passes=lint test2.rs
Unusual: noalias argument aliases another argument
  %3 = call i32 @"_ZN86_$LT$$RF$$u27$b$u20$i32$u20$as$u20$core..ops..arith..Mul$LT$$RF$$u27$a$u20$i32$GT$$GT$3mul17hdb3638dfdb52b819E"(i32* noalias readonly dereferenceab
le(4) %1, i32* noalias readonly dereferenceable(4) %1)

fn main() {
    (1 .. 9).filter(|_| true).sum::<u32>();
}


...>rustc -C passes=lint test3.rs
Unusual: Return statement in function with noreturn attribute
  ret void