mirror of
https://github.com/rust-lang/rust-clippy
synced 2025-02-16 05:58:41 +00:00
Auto merge of #7201 - mucinoab:master, r=giraffate
Remove powi, "square can be computed more efficiently" powi(2) produces exactly the same native code as x * x powi was part of the [`suboptimal_flops`] lint fixes #7058 changelog: Remove powi [`suboptimal_flops`], "square can be computed more efficiently"
This commit is contained in:
commit
9028173b24
4 changed files with 18 additions and 38 deletions
|
@ -323,7 +323,7 @@ fn check_powi(cx: &LateContext<'_>, expr: &Expr<'_>, args: &[Expr<'_>]) {
|
||||||
cx,
|
cx,
|
||||||
SUBOPTIMAL_FLOPS,
|
SUBOPTIMAL_FLOPS,
|
||||||
parent.span,
|
parent.span,
|
||||||
"square can be computed more efficiently",
|
"multiply and add expressions can be calculated more efficiently and accurately",
|
||||||
"consider using",
|
"consider using",
|
||||||
format!(
|
format!(
|
||||||
"{}.mul_add({}, {})",
|
"{}.mul_add({}, {})",
|
||||||
|
@ -337,16 +337,6 @@ fn check_powi(cx: &LateContext<'_>, expr: &Expr<'_>, args: &[Expr<'_>]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
span_lint_and_sugg(
|
|
||||||
cx,
|
|
||||||
SUBOPTIMAL_FLOPS,
|
|
||||||
expr.span,
|
|
||||||
"square can be computed more efficiently",
|
|
||||||
"consider using",
|
|
||||||
format!("{} * {}", Sugg::hir(cx, &args[0], ".."), Sugg::hir(cx, &args[0], "..")),
|
|
||||||
Applicability::MachineApplicable,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
let one = 1;
|
let one = 1;
|
||||||
let x = 3f32;
|
let x = 3f32;
|
||||||
let _ = x * x;
|
|
||||||
let _ = x * x;
|
|
||||||
|
|
||||||
let y = 4f32;
|
let y = 4f32;
|
||||||
let _ = x.mul_add(x, y);
|
let _ = x.mul_add(x, y);
|
||||||
|
@ -13,7 +11,10 @@ fn main() {
|
||||||
let _ = x.mul_add(x, y).sqrt();
|
let _ = x.mul_add(x, y).sqrt();
|
||||||
let _ = y.mul_add(y, x).sqrt();
|
let _ = y.mul_add(y, x).sqrt();
|
||||||
// Cases where the lint shouldn't be applied
|
// Cases where the lint shouldn't be applied
|
||||||
|
let _ = x.powi(2);
|
||||||
|
let _ = x.powi(1 + 1);
|
||||||
let _ = x.powi(3);
|
let _ = x.powi(3);
|
||||||
|
let _ = x.powi(4) + y;
|
||||||
let _ = x.powi(one + 1);
|
let _ = x.powi(one + 1);
|
||||||
let _ = (x.powi(2) + y.powi(2)).sqrt();
|
let _ = (x.powi(2) + y.powi(2)).sqrt();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
let one = 1;
|
let one = 1;
|
||||||
let x = 3f32;
|
let x = 3f32;
|
||||||
let _ = x.powi(2);
|
|
||||||
let _ = x.powi(1 + 1);
|
|
||||||
|
|
||||||
let y = 4f32;
|
let y = 4f32;
|
||||||
let _ = x.powi(2) + y;
|
let _ = x.powi(2) + y;
|
||||||
|
@ -13,7 +11,10 @@ fn main() {
|
||||||
let _ = (x.powi(2) + y).sqrt();
|
let _ = (x.powi(2) + y).sqrt();
|
||||||
let _ = (x + y.powi(2)).sqrt();
|
let _ = (x + y.powi(2)).sqrt();
|
||||||
// Cases where the lint shouldn't be applied
|
// Cases where the lint shouldn't be applied
|
||||||
|
let _ = x.powi(2);
|
||||||
|
let _ = x.powi(1 + 1);
|
||||||
let _ = x.powi(3);
|
let _ = x.powi(3);
|
||||||
|
let _ = x.powi(4) + y;
|
||||||
let _ = x.powi(one + 1);
|
let _ = x.powi(one + 1);
|
||||||
let _ = (x.powi(2) + y.powi(2)).sqrt();
|
let _ = (x.powi(2) + y.powi(2)).sqrt();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,40 +1,28 @@
|
||||||
error: square can be computed more efficiently
|
error: multiply and add expressions can be calculated more efficiently and accurately
|
||||||
--> $DIR/floating_point_powi.rs:7:13
|
--> $DIR/floating_point_powi.rs:9:13
|
||||||
|
|
|
||||||
LL | let _ = x.powi(2);
|
|
||||||
| ^^^^^^^^^ help: consider using: `x * x`
|
|
||||||
|
|
|
||||||
= note: `-D clippy::suboptimal-flops` implied by `-D warnings`
|
|
||||||
|
|
||||||
error: square can be computed more efficiently
|
|
||||||
--> $DIR/floating_point_powi.rs:8:13
|
|
||||||
|
|
|
||||||
LL | let _ = x.powi(1 + 1);
|
|
||||||
| ^^^^^^^^^^^^^ help: consider using: `x * x`
|
|
||||||
|
|
||||||
error: square can be computed more efficiently
|
|
||||||
--> $DIR/floating_point_powi.rs:11:13
|
|
||||||
|
|
|
|
||||||
LL | let _ = x.powi(2) + y;
|
LL | let _ = x.powi(2) + y;
|
||||||
| ^^^^^^^^^^^^^ help: consider using: `x.mul_add(x, y)`
|
| ^^^^^^^^^^^^^ help: consider using: `x.mul_add(x, y)`
|
||||||
|
|
|
||||||
|
= note: `-D clippy::suboptimal-flops` implied by `-D warnings`
|
||||||
|
|
||||||
error: square can be computed more efficiently
|
error: multiply and add expressions can be calculated more efficiently and accurately
|
||||||
--> $DIR/floating_point_powi.rs:12:13
|
--> $DIR/floating_point_powi.rs:10:13
|
||||||
|
|
|
|
||||||
LL | let _ = x + y.powi(2);
|
LL | let _ = x + y.powi(2);
|
||||||
| ^^^^^^^^^^^^^ help: consider using: `y.mul_add(y, x)`
|
| ^^^^^^^^^^^^^ help: consider using: `y.mul_add(y, x)`
|
||||||
|
|
||||||
error: square can be computed more efficiently
|
error: multiply and add expressions can be calculated more efficiently and accurately
|
||||||
--> $DIR/floating_point_powi.rs:13:13
|
--> $DIR/floating_point_powi.rs:11:13
|
||||||
|
|
|
|
||||||
LL | let _ = (x.powi(2) + y).sqrt();
|
LL | let _ = (x.powi(2) + y).sqrt();
|
||||||
| ^^^^^^^^^^^^^^^ help: consider using: `x.mul_add(x, y)`
|
| ^^^^^^^^^^^^^^^ help: consider using: `x.mul_add(x, y)`
|
||||||
|
|
||||||
error: square can be computed more efficiently
|
error: multiply and add expressions can be calculated more efficiently and accurately
|
||||||
--> $DIR/floating_point_powi.rs:14:13
|
--> $DIR/floating_point_powi.rs:12:13
|
||||||
|
|
|
|
||||||
LL | let _ = (x + y.powi(2)).sqrt();
|
LL | let _ = (x + y.powi(2)).sqrt();
|
||||||
| ^^^^^^^^^^^^^^^ help: consider using: `y.mul_add(y, x)`
|
| ^^^^^^^^^^^^^^^ help: consider using: `y.mul_add(y, x)`
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue