Skip to content

Commit 11a8f1a

Browse files
committed
Fix tools
1 parent d889419 commit 11a8f1a

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
@@ -319,6 +319,9 @@ pub(crate) fn clean_const<'tcx>(constant: &hir::ConstArg<'tcx>) -> ConstantKind
319319
hir::ConstArgKind::Path(qpath) => {
320320
ConstantKind::Path { path: qpath_to_string(qpath).into() }
321321
}
322+
hir::ConstArgKind::Struct(..) => {
323+
ConstantKind::Path { path: "/* STRUCT EXPR */".to_string().into() }
324+
}
322325
hir::ConstArgKind::Anon(anon) => ConstantKind::Anonymous { body: anon.body },
323326
hir::ConstArgKind::Infer(..) | hir::ConstArgKind::Error(..) => ConstantKind::Infer,
324327
}
@@ -1806,7 +1809,7 @@ pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> T
18061809
let ct = cx.tcx.normalize_erasing_regions(typing_env, ct);
18071810
print_const(cx, ct)
18081811
}
1809-
hir::ConstArgKind::Path(..) => {
1812+
hir::ConstArgKind::Struct(..) | hir::ConstArgKind::Path(..) => {
18101813
let ct = lower_const_arg_for_rustdoc(cx.tcx, const_arg, FeedConstTy::No);
18111814
print_const(cx, ct)
18121815
}

src/librustdoc/clean/utils.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ use rustc_hir::def::{DefKind, Res};
1212
use rustc_hir::def_id::{DefId, LOCAL_CRATE, LocalDefId};
1313
use rustc_metadata::rendered_const;
1414
use rustc_middle::mir;
15-
use rustc_middle::ty::{self, GenericArgKind, GenericArgsRef, TyCtxt, TypeVisitableExt};
15+
use rustc_middle::ty::{
16+
self, GenericArgKind, GenericArgsRef, TyCtxt, TypeVisitableExt, ValTreeKindExt,
17+
};
1618
use rustc_span::symbol::{Symbol, kw, sym};
1719
use tracing::{debug, warn};
1820
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

@@ -1332,6 +1339,12 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> {
13321339
match &const_arg.kind {
13331340
ConstArgKind::Path(path) => self.hash_qpath(path),
13341341
ConstArgKind::Anon(anon) => self.hash_body(anon.body),
1342+
ConstArgKind::Struct(path, inits) => {
1343+
self.hash_qpath(path);
1344+
for init in *inits {
1345+
self.hash_const_arg(init.expr);
1346+
}
1347+
}
13351348
ConstArgKind::Infer(..) | ConstArgKind::Error(..) => {},
13361349
}
13371350
}

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)