Skip to content

Commit 1a44434

Browse files
committed
Fix tools
1 parent 0bc31fa commit 1a44434

File tree

7 files changed

+39
-11
lines changed

7 files changed

+39
-11
lines changed

compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
use cranelift_codegen::ir::immediates::Offset32;
44
use rustc_abi::Endian;
5-
use rustc_middle::ty::SimdAlign;
5+
use rustc_middle::ty::{SimdAlign, ValTreeKindExt};
66

77
use super::*;
88
use crate::prelude::*;
@@ -143,7 +143,10 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
143143

144144
let total_len = lane_count * 2;
145145

146-
let indexes = idx.iter().map(|idx| idx.unwrap_leaf().to_u32()).collect::<Vec<u32>>();
146+
let indexes = idx
147+
.iter()
148+
.map(|idx| idx.to_value().valtree.unwrap_leaf().to_u32())
149+
.collect::<Vec<u32>>();
147150

148151
for &idx in &indexes {
149152
assert!(u64::from(idx) < total_len, "idx {} out of range 0..{}", idx, total_len);
@@ -962,6 +965,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
962965
let ptr_val = ptr.load_scalar(fx);
963966

964967
let alignment = generic_args[3].expect_const().to_value().valtree.unwrap_branch()[0]
968+
.to_value()
969+
.valtree
965970
.unwrap_leaf()
966971
.to_simd_alignment();
967972

@@ -1007,6 +1012,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
10071012
let ret_lane_layout = fx.layout_of(ret_lane_ty);
10081013

10091014
let alignment = generic_args[3].expect_const().to_value().valtree.unwrap_branch()[0]
1015+
.to_value()
1016+
.valtree
10101017
.unwrap_leaf()
10111018
.to_simd_alignment();
10121019

@@ -1060,6 +1067,8 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
10601067
let ptr_val = ptr.load_scalar(fx);
10611068

10621069
let alignment = generic_args[3].expect_const().to_value().valtree.unwrap_branch()[0]
1070+
.to_value()
1071+
.valtree
10631072
.unwrap_leaf()
10641073
.to_simd_alignment();
10651074

src/librustdoc/clean/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,9 @@ pub(crate) fn clean_const<'tcx>(constant: &hir::ConstArg<'tcx>) -> ConstantKind
321321
hir::ConstArgKind::Path(qpath) => {
322322
ConstantKind::Path { path: qpath_to_string(qpath).into() }
323323
}
324+
hir::ConstArgKind::Struct(..) => {
325+
ConstantKind::Path { path: "/* STRUCT EXPR */".to_string().into() }
326+
}
324327
hir::ConstArgKind::Anon(anon) => ConstantKind::Anonymous { body: anon.body },
325328
hir::ConstArgKind::Infer(..) | hir::ConstArgKind::Error(..) => ConstantKind::Infer,
326329
}
@@ -1813,7 +1816,7 @@ pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> T
18131816
let ct = cx.tcx.normalize_erasing_regions(typing_env, ct);
18141817
print_const(cx, ct)
18151818
}
1816-
hir::ConstArgKind::Path(..) => {
1819+
hir::ConstArgKind::Struct(..) | hir::ConstArgKind::Path(..) => {
18171820
let ct = lower_const_arg_for_rustdoc(cx.tcx, const_arg, FeedConstTy::No);
18181821
print_const(cx, ct)
18191822
}

src/librustdoc/clean/utils.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ use rustc_hir::def::{DefKind, Res};
1010
use rustc_hir::def_id::{DefId, LOCAL_CRATE, LocalDefId};
1111
use rustc_metadata::rendered_const;
1212
use rustc_middle::mir;
13-
use rustc_middle::ty::{self, GenericArgKind, GenericArgsRef, TyCtxt, TypeVisitableExt};
13+
use rustc_middle::ty::{
14+
self, GenericArgKind, GenericArgsRef, TyCtxt, TypeVisitableExt, ValTreeKindExt,
15+
};
1416
use rustc_span::symbol::{Symbol, kw, sym};
1517
use tracing::{debug, warn};
1618
use {rustc_ast as ast, rustc_hir as hir};

src/tools/clippy/clippy_lints/src/utils/author.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ impl<'a, 'tcx> PrintVisitor<'a, 'tcx> {
319319
chain!(self, "let ConstArgKind::Anon({anon_const}) = {const_arg}.kind");
320320
self.body(field!(anon_const.body));
321321
},
322+
ConstArgKind::Struct(..) => chain!(self, "let ConstArgKind::Struct(..) = {const_arg}.kind"),
322323
ConstArgKind::Infer(..) => chain!(self, "let ConstArgKind::Infer(..) = {const_arg}.kind"),
323324
ConstArgKind::Error(..) => chain!(self, "let ConstArgKind::Error(..) = {const_arg}.kind"),
324325
}

src/tools/clippy/clippy_utils/src/consts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,7 @@ pub fn const_item_rhs_to_expr<'tcx>(tcx: TyCtxt<'tcx>, ct_rhs: ConstItemRhs<'tcx
11391139
ConstItemRhs::Body(body_id) => Some(tcx.hir_body(body_id).value),
11401140
ConstItemRhs::TypeConst(const_arg) => match const_arg.kind {
11411141
ConstArgKind::Anon(anon) => Some(tcx.hir_body(anon.body).value),
1142-
ConstArgKind::Path(_) | ConstArgKind::Error(..) | ConstArgKind::Infer(..) => None,
1142+
ConstArgKind::Struct(..) | ConstArgKind::Path(_) | ConstArgKind::Error(..) | ConstArgKind::Infer(..) => None,
11431143
},
11441144
}
11451145
}

src/tools/clippy/clippy_utils/src/hir_utils.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -477,11 +477,18 @@ impl HirEqInterExpr<'_, '_, '_> {
477477
(ConstArgKind::Path(l_p), ConstArgKind::Path(r_p)) => self.eq_qpath(l_p, r_p),
478478
(ConstArgKind::Anon(l_an), ConstArgKind::Anon(r_an)) => self.eq_body(l_an.body, r_an.body),
479479
(ConstArgKind::Infer(..), ConstArgKind::Infer(..)) => true,
480+
(ConstArgKind::Struct(path_a, inits_a), ConstArgKind::Struct(path_b, inits_b)) => {
481+
self.eq_qpath(path_a, path_b)
482+
&& inits_a.iter().zip(*inits_b).all(|(init_a, init_b)| {
483+
self.eq_const_arg(init_a.expr, init_b.expr)
484+
})
485+
}
480486
// Use explicit match for now since ConstArg is undergoing flux.
481-
(ConstArgKind::Path(..), ConstArgKind::Anon(..))
482-
| (ConstArgKind::Anon(..), ConstArgKind::Path(..))
483-
| (ConstArgKind::Infer(..) | ConstArgKind::Error(..), _)
484-
| (_, ConstArgKind::Infer(..) | ConstArgKind::Error(..)) => false,
487+
(ConstArgKind::Path(..), _)
488+
| (ConstArgKind::Anon(..), _)
489+
| (ConstArgKind::Infer(..), _)
490+
| (ConstArgKind::Struct(..), _)
491+
| (ConstArgKind::Error(..), _) => false,
485492
}
486493
}
487494

@@ -1335,6 +1342,12 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> {
13351342
match &const_arg.kind {
13361343
ConstArgKind::Path(path) => self.hash_qpath(path),
13371344
ConstArgKind::Anon(anon) => self.hash_body(anon.body),
1345+
ConstArgKind::Struct(path, inits) => {
1346+
self.hash_qpath(path);
1347+
for init in *inits {
1348+
self.hash_const_arg(init.expr);
1349+
}
1350+
}
13381351
ConstArgKind::Infer(..) | ConstArgKind::Error(..) => {},
13391352
}
13401353
}

src/tools/miri/src/intrinsics/atomic.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc_middle::mir::BinOp;
2-
use rustc_middle::ty::AtomicOrdering;
2+
use rustc_middle::ty::{AtomicOrdering, ValTreeKindExt};
33
use rustc_middle::{mir, ty};
44

55
use super::check_intrinsic_arg_count;
@@ -31,7 +31,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
3131

3232
let get_ord_at = |i: usize| {
3333
let ordering = generic_args.const_at(i).to_value();
34-
ordering.valtree.unwrap_branch()[0].unwrap_leaf().to_atomic_ordering()
34+
ordering.valtree.unwrap_branch()[0].to_value().valtree.unwrap_leaf().to_atomic_ordering()
3535
};
3636

3737
fn read_ord(ord: AtomicOrdering) -> AtomicReadOrd {

0 commit comments

Comments
 (0)