Skip to content

Commit

Permalink
omit unused args warnings for intrinsics without body
Browse files Browse the repository at this point in the history
  • Loading branch information
vayunbiyani committed Jan 23, 2025
1 parent 65d7296 commit 8e22ec0
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 14 deletions.
8 changes: 8 additions & 0 deletions compiler/rustc_passes/src/liveness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1521,6 +1521,14 @@ impl<'tcx> Liveness<'_, 'tcx> {
}

fn warn_about_unused_args(&self, body: &hir::Body<'_>, entry_ln: LiveNode) {
if let Some(intrinsic) =
self.ir.tcx.intrinsic(self.ir.tcx.hir().body_owner_def_id(body.id()))
{
if intrinsic.must_be_overridden {
return;
}
}

for p in body.params {
self.check_unused_vars_in_pat(
p.pat,
Expand Down
6 changes: 6 additions & 0 deletions tests/ui/liveness/liveness-unused.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#![deny(unused_variables)]
#![deny(unused_assignments)]
#![allow(dead_code, non_camel_case_types, trivial_numeric_casts, dropping_copy_types)]
#![feature(intrinsics)]

use std::ops::AddAssign;

Expand Down Expand Up @@ -137,5 +138,10 @@ fn f7() {
drop(a);
}

// unused params warnings are not needed for intrinsic functions without bodies
#[rustc_intrinsic]
unsafe fn simd_shuffle<T, I, U>(a: T, b: T, i: I) -> U;


fn main() {
}
28 changes: 14 additions & 14 deletions tests/ui/liveness/liveness-unused.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
warning: unreachable statement
--> $DIR/liveness-unused.rs:92:9
--> $DIR/liveness-unused.rs:93:9
|
LL | continue;
| -------- any code following this expression is unreachable
Expand All @@ -14,7 +14,7 @@ LL | #![warn(unused)]
= note: `#[warn(unreachable_code)]` implied by `#[warn(unused)]`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:8:7
--> $DIR/liveness-unused.rs:9:7
|
LL | fn f1(x: isize) {
| ^ help: if this is intentional, prefix it with an underscore: `_x`
Expand All @@ -26,33 +26,33 @@ LL | #![deny(unused_variables)]
| ^^^^^^^^^^^^^^^^

error: unused variable: `x`
--> $DIR/liveness-unused.rs:12:8
--> $DIR/liveness-unused.rs:13:8
|
LL | fn f1b(x: &mut isize) {
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:20:9
--> $DIR/liveness-unused.rs:21:9
|
LL | let x: isize;
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:25:9
--> $DIR/liveness-unused.rs:26:9
|
LL | let x = 3;
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: variable `x` is assigned to, but never used
--> $DIR/liveness-unused.rs:30:13
--> $DIR/liveness-unused.rs:31:13
|
LL | let mut x = 3;
| ^
|
= note: consider using `_x` instead

error: value assigned to `x` is never read
--> $DIR/liveness-unused.rs:32:5
--> $DIR/liveness-unused.rs:33:5
|
LL | x += 4;
| ^
Expand All @@ -65,47 +65,47 @@ LL | #![deny(unused_assignments)]
| ^^^^^^^^^^^^^^^^^^

error: variable `z` is assigned to, but never used
--> $DIR/liveness-unused.rs:37:13
--> $DIR/liveness-unused.rs:38:13
|
LL | let mut z = 3;
| ^
|
= note: consider using `_z` instead

error: unused variable: `i`
--> $DIR/liveness-unused.rs:59:12
--> $DIR/liveness-unused.rs:60:12
|
LL | Some(i) => {
| ^ help: if this is intentional, prefix it with an underscore: `_i`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:79:9
--> $DIR/liveness-unused.rs:80:9
|
LL | for x in 1..10 { }
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:84:10
--> $DIR/liveness-unused.rs:85:10
|
LL | for (x, _) in [1, 2, 3].iter().enumerate() { }
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: unused variable: `x`
--> $DIR/liveness-unused.rs:89:13
--> $DIR/liveness-unused.rs:90:13
|
LL | for (_, x) in [1, 2, 3].iter().enumerate() {
| ^ help: if this is intentional, prefix it with an underscore: `_x`

error: variable `x` is assigned to, but never used
--> $DIR/liveness-unused.rs:112:9
--> $DIR/liveness-unused.rs:113:9
|
LL | let x;
| ^
|
= note: consider using `_x` instead

error: value assigned to `x` is never read
--> $DIR/liveness-unused.rs:116:9
--> $DIR/liveness-unused.rs:117:9
|
LL | x = 0;
| ^
Expand Down

0 comments on commit 8e22ec0

Please sign in to comment.