Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 251cda5

Browse filesBrowse files
committed
Auto merge of rust-lang#140520 - matthiaskrgr:rollup-7aoqcnp, r=matthiaskrgr
Rollup of 9 pull requests Successful merges: - rust-lang#134232 (Share the naked asm impl between cg_ssa and cg_clif) - rust-lang#139624 (Don't allow flattened format_args in const.) - rust-lang#140090 (Check bare function idents for non snake-case name) - rust-lang#140203 (Issue an error when using `no_mangle` on language items) - rust-lang#140450 (ast: Remove token visiting from AST visitor) - rust-lang#140498 (Misc tweaks to HIR typeck (mostly w.r.t. checking calls)) - rust-lang#140504 (transmutability: ensure_sufficient_stack when answering query) - rust-lang#140506 (unstable-book: fix capitalization) - rust-lang#140516 (Replace use of rustc_type_ir by rustc_middle) Failed merges: - rust-lang#140374 (Resolve instance for SymFn in global/naked asm) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 7188f45 + 1e440ae commit 251cda5
Copy full SHA for 251cda5

File tree

Expand file treeCollapse file tree

66 files changed

+960
-1239
lines changed
Filter options

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

66 files changed

+960
-1239
lines changed

‎Cargo.lock

Copy file name to clipboardExpand all lines: Cargo.lock
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4494,7 +4494,6 @@ dependencies = [
44944494
"rustc_session",
44954495
"rustc_span",
44964496
"rustc_transmute",
4497-
"rustc_type_ir",
44984497
"smallvec",
44994498
"thin-vec",
45004499
"tracing",

‎compiler/rustc_ast/src/mut_visit.rs

Copy file name to clipboardExpand all lines: compiler/rustc_ast/src/mut_visit.rs
+16-123Lines changed: 16 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
1010
use std::ops::DerefMut;
1111
use std::panic;
12-
use std::sync::Arc;
1312

1413
use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
1514
use rustc_data_structures::stack::ensure_sufficient_stack;
@@ -20,7 +19,6 @@ use thin_vec::ThinVec;
2019

2120
use crate::ast::*;
2221
use crate::ptr::P;
23-
use crate::token::{self, Token};
2422
use crate::tokenstream::*;
2523
use crate::visit::{AssocCtxt, BoundKind, FnCtxt};
2624

@@ -48,11 +46,6 @@ pub trait WalkItemKind {
4846
}
4947

5048
pub trait MutVisitor: Sized {
51-
/// Mutable token visiting only exists for the `macro_rules` token marker and should not be
52-
/// used otherwise. Token visitor would be entirely separate from the regular visitor if
53-
/// the marker didn't have to visit AST fragments in nonterminal tokens.
54-
const VISIT_TOKENS: bool = false;
55-
5649
// Methods in this trait have one of three forms:
5750
//
5851
// fn visit_t(&mut self, t: &mut T); // common
@@ -360,6 +353,8 @@ pub trait MutVisitor: Sized {
360353
// Do nothing.
361354
}
362355

356+
// Span visiting is no longer used, but we keep it for now,
357+
// in case it's needed for something like #127241.
363358
fn visit_span(&mut self, _sp: &mut Span) {
364359
// Do nothing.
365360
}
@@ -473,12 +468,8 @@ fn visit_attr_args<T: MutVisitor>(vis: &mut T, args: &mut AttrArgs) {
473468

474469
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
475470
fn visit_delim_args<T: MutVisitor>(vis: &mut T, args: &mut DelimArgs) {
476-
let DelimArgs { dspan, delim: _, tokens } = args;
477-
visit_tts(vis, tokens);
478-
visit_delim_span(vis, dspan);
479-
}
480-
481-
pub fn visit_delim_span<T: MutVisitor>(vis: &mut T, DelimSpan { open, close }: &mut DelimSpan) {
471+
let DelimArgs { dspan, delim: _, tokens: _ } = args;
472+
let DelimSpan { open, close } = dspan;
482473
vis.visit_span(open);
483474
vis.visit_span(close);
484475
}
@@ -552,7 +543,7 @@ fn walk_assoc_item_constraint<T: MutVisitor>(
552543
}
553544

554545
pub fn walk_ty<T: MutVisitor>(vis: &mut T, ty: &mut P<Ty>) {
555-
let Ty { id, kind, span, tokens } = ty.deref_mut();
546+
let Ty { id, kind, span, tokens: _ } = ty.deref_mut();
556547
vis.visit_id(id);
557548
match kind {
558549
TyKind::Err(_guar) => {}
@@ -600,12 +591,11 @@ pub fn walk_ty<T: MutVisitor>(vis: &mut T, ty: &mut P<Ty>) {
600591
}
601592
TyKind::MacCall(mac) => vis.visit_mac_call(mac),
602593
}
603-
visit_lazy_tts(vis, tokens);
604594
vis.visit_span(span);
605595
}
606596

607597
pub fn walk_ty_pat<T: MutVisitor>(vis: &mut T, ty: &mut P<TyPat>) {
608-
let TyPat { id, kind, span, tokens } = ty.deref_mut();
598+
let TyPat { id, kind, span, tokens: _ } = ty.deref_mut();
609599
vis.visit_id(id);
610600
match kind {
611601
TyPatKind::Range(start, end, _include_end) => {
@@ -615,7 +605,6 @@ pub fn walk_ty_pat<T: MutVisitor>(vis: &mut T, ty: &mut P<TyPat>) {
615605
TyPatKind::Or(variants) => visit_thin_vec(variants, |p| vis.visit_ty_pat(p)),
616606
TyPatKind::Err(_) => {}
617607
}
618-
visit_lazy_tts(vis, tokens);
619608
vis.visit_span(span);
620609
}
621610

@@ -655,11 +644,10 @@ fn walk_path_segment<T: MutVisitor>(vis: &mut T, segment: &mut PathSegment) {
655644
visit_opt(args, |args| vis.visit_generic_args(args));
656645
}
657646

658-
fn walk_path<T: MutVisitor>(vis: &mut T, Path { segments, span, tokens }: &mut Path) {
647+
fn walk_path<T: MutVisitor>(vis: &mut T, Path { segments, span, tokens: _ }: &mut Path) {
659648
for segment in segments {
660649
vis.visit_path_segment(segment);
661650
}
662-
visit_lazy_tts(vis, tokens);
663651
vis.visit_span(span);
664652
}
665653

@@ -705,7 +693,7 @@ fn walk_parenthesized_parameter_data<T: MutVisitor>(vis: &mut T, args: &mut Pare
705693
}
706694

707695
fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
708-
let Local { id, super_, pat, ty, kind, span, colon_sp, attrs, tokens } = local.deref_mut();
696+
let Local { id, super_, pat, ty, kind, span, colon_sp, attrs, tokens: _ } = local.deref_mut();
709697
visit_opt(super_, |sp| vis.visit_span(sp));
710698
vis.visit_id(id);
711699
visit_attrs(vis, attrs);
@@ -721,7 +709,6 @@ fn walk_local<T: MutVisitor>(vis: &mut T, local: &mut P<Local>) {
721709
vis.visit_block(els);
722710
}
723711
}
724-
visit_lazy_tts(vis, tokens);
725712
visit_opt(colon_sp, |sp| vis.visit_span(sp));
726713
vis.visit_span(span);
727714
}
@@ -730,14 +717,10 @@ fn walk_attribute<T: MutVisitor>(vis: &mut T, attr: &mut Attribute) {
730717
let Attribute { kind, id: _, style: _, span } = attr;
731718
match kind {
732719
AttrKind::Normal(normal) => {
733-
let NormalAttr {
734-
item: AttrItem { unsafety: _, path, args, tokens },
735-
tokens: attr_tokens,
736-
} = &mut **normal;
720+
let NormalAttr { item: AttrItem { unsafety: _, path, args, tokens: _ }, tokens: _ } =
721+
&mut **normal;
737722
vis.visit_path(path);
738723
visit_attr_args(vis, args);
739-
visit_lazy_tts(vis, tokens);
740-
visit_lazy_tts(vis, attr_tokens);
741724
}
742725
AttrKind::DocComment(_kind, _sym) => {}
743726
}
@@ -786,90 +769,6 @@ pub fn walk_flat_map_param<T: MutVisitor>(vis: &mut T, mut param: Param) -> Smal
786769
smallvec![param]
787770
}
788771

789-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
790-
fn visit_attr_tt<T: MutVisitor>(vis: &mut T, tt: &mut AttrTokenTree) {
791-
match tt {
792-
AttrTokenTree::Token(token, _spacing) => {
793-
visit_token(vis, token);
794-
}
795-
AttrTokenTree::Delimited(dspan, _spacing, _delim, tts) => {
796-
visit_attr_tts(vis, tts);
797-
visit_delim_span(vis, dspan);
798-
}
799-
AttrTokenTree::AttrsTarget(AttrsTarget { attrs, tokens }) => {
800-
visit_attrs(vis, attrs);
801-
visit_lazy_tts_opt_mut(vis, Some(tokens));
802-
}
803-
}
804-
}
805-
806-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
807-
fn visit_tt<T: MutVisitor>(vis: &mut T, tt: &mut TokenTree) {
808-
match tt {
809-
TokenTree::Token(token, _spacing) => {
810-
visit_token(vis, token);
811-
}
812-
TokenTree::Delimited(dspan, _spacing, _delim, tts) => {
813-
visit_tts(vis, tts);
814-
visit_delim_span(vis, dspan);
815-
}
816-
}
817-
}
818-
819-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
820-
fn visit_tts<T: MutVisitor>(vis: &mut T, TokenStream(tts): &mut TokenStream) {
821-
if T::VISIT_TOKENS && !tts.is_empty() {
822-
let tts = Arc::make_mut(tts);
823-
visit_vec(tts, |tree| visit_tt(vis, tree));
824-
}
825-
}
826-
827-
fn visit_attr_tts<T: MutVisitor>(vis: &mut T, AttrTokenStream(tts): &mut AttrTokenStream) {
828-
if T::VISIT_TOKENS && !tts.is_empty() {
829-
let tts = Arc::make_mut(tts);
830-
visit_vec(tts, |tree| visit_attr_tt(vis, tree));
831-
}
832-
}
833-
834-
fn visit_lazy_tts_opt_mut<T: MutVisitor>(vis: &mut T, lazy_tts: Option<&mut LazyAttrTokenStream>) {
835-
if T::VISIT_TOKENS {
836-
if let Some(lazy_tts) = lazy_tts {
837-
let mut tts = lazy_tts.to_attr_token_stream();
838-
visit_attr_tts(vis, &mut tts);
839-
*lazy_tts = LazyAttrTokenStream::new_direct(tts);
840-
}
841-
}
842-
}
843-
844-
fn visit_lazy_tts<T: MutVisitor>(vis: &mut T, lazy_tts: &mut Option<LazyAttrTokenStream>) {
845-
visit_lazy_tts_opt_mut(vis, lazy_tts.as_mut());
846-
}
847-
848-
/// Applies ident visitor if it's an ident. In practice this is not actually
849-
/// used by specific visitors right now, but there's a test below checking that
850-
/// it works.
851-
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
852-
pub fn visit_token<T: MutVisitor>(vis: &mut T, t: &mut Token) {
853-
let Token { kind, span } = t;
854-
match kind {
855-
token::Ident(name, _is_raw) | token::Lifetime(name, _is_raw) => {
856-
let mut ident = Ident::new(*name, *span);
857-
vis.visit_ident(&mut ident);
858-
*name = ident.name;
859-
*span = ident.span;
860-
return; // Avoid visiting the span for the second time.
861-
}
862-
token::NtIdent(ident, _is_raw) => {
863-
vis.visit_ident(ident);
864-
}
865-
token::NtLifetime(ident, _is_raw) => {
866-
vis.visit_ident(ident);
867-
}
868-
_ => {}
869-
}
870-
vis.visit_span(span);
871-
}
872-
873772
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
874773
fn visit_defaultness<T: MutVisitor>(vis: &mut T, defaultness: &mut Defaultness) {
875774
match defaultness {
@@ -1188,10 +1087,9 @@ fn walk_mt<T: MutVisitor>(vis: &mut T, MutTy { ty, mutbl: _ }: &mut MutTy) {
11881087
}
11891088

11901089
pub fn walk_block<T: MutVisitor>(vis: &mut T, block: &mut P<Block>) {
1191-
let Block { id, stmts, rules: _, span, tokens } = block.deref_mut();
1090+
let Block { id, stmts, rules: _, span, tokens: _ } = block.deref_mut();
11921091
vis.visit_id(id);
11931092
stmts.flat_map_in_place(|stmt| vis.flat_map_stmt(stmt));
1194-
visit_lazy_tts(vis, tokens);
11951093
vis.visit_span(span);
11961094
}
11971095

@@ -1472,12 +1370,11 @@ fn walk_item_ctxt<K: WalkItemKind>(
14721370
item: &mut P<Item<K>>,
14731371
ctxt: K::Ctxt,
14741372
) {
1475-
let Item { attrs, id, kind, vis, span, tokens } = item.deref_mut();
1373+
let Item { attrs, id, kind, vis, span, tokens: _ } = item.deref_mut();
14761374
visitor.visit_id(id);
14771375
visit_attrs(visitor, attrs);
14781376
visitor.visit_vis(vis);
14791377
kind.walk(*span, *id, vis, ctxt, visitor);
1480-
visit_lazy_tts(visitor, tokens);
14811378
visitor.visit_span(span);
14821379
}
14831380

@@ -1551,7 +1448,7 @@ impl WalkItemKind for ForeignItemKind {
15511448
}
15521449

15531450
pub fn walk_pat<T: MutVisitor>(vis: &mut T, pat: &mut P<Pat>) {
1554-
let Pat { id, kind, span, tokens } = pat.deref_mut();
1451+
let Pat { id, kind, span, tokens: _ } = pat.deref_mut();
15551452
vis.visit_id(id);
15561453
match kind {
15571454
PatKind::Err(_guar) => {}
@@ -1593,7 +1490,6 @@ pub fn walk_pat<T: MutVisitor>(vis: &mut T, pat: &mut P<Pat>) {
15931490
PatKind::Paren(inner) => vis.visit_pat(inner),
15941491
PatKind::MacCall(mac) => vis.visit_mac_call(mac),
15951492
}
1596-
visit_lazy_tts(vis, tokens);
15971493
vis.visit_span(span);
15981494
}
15991495

@@ -1657,7 +1553,7 @@ fn walk_format_args<T: MutVisitor>(vis: &mut T, fmt: &mut FormatArgs) {
16571553
vis.visit_span(span);
16581554
}
16591555

1660-
pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, tokens }: &mut Expr) {
1556+
pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, tokens: _ }: &mut Expr) {
16611557
vis.visit_id(id);
16621558
visit_attrs(vis, attrs);
16631559
match kind {
@@ -1848,7 +1744,6 @@ pub fn walk_expr<T: MutVisitor>(vis: &mut T, Expr { kind, id, span, attrs, token
18481744
ExprKind::Err(_guar) => {}
18491745
ExprKind::Dummy => {}
18501746
}
1851-
visit_lazy_tts(vis, tokens);
18521747
vis.visit_span(span);
18531748
}
18541749

@@ -1890,25 +1785,23 @@ fn walk_flat_map_stmt_kind<T: MutVisitor>(vis: &mut T, kind: StmtKind) -> SmallV
18901785
StmtKind::Semi(expr) => vis.filter_map_expr(expr).into_iter().map(StmtKind::Semi).collect(),
18911786
StmtKind::Empty => smallvec![StmtKind::Empty],
18921787
StmtKind::MacCall(mut mac) => {
1893-
let MacCallStmt { mac: mac_, style: _, attrs, tokens } = mac.deref_mut();
1788+
let MacCallStmt { mac: mac_, style: _, attrs, tokens: _ } = mac.deref_mut();
18941789
visit_attrs(vis, attrs);
18951790
vis.visit_mac_call(mac_);
1896-
visit_lazy_tts(vis, tokens);
18971791
smallvec![StmtKind::MacCall(mac)]
18981792
}
18991793
}
19001794
}
19011795

19021796
fn walk_vis<T: MutVisitor>(vis: &mut T, visibility: &mut Visibility) {
1903-
let Visibility { kind, span, tokens } = visibility;
1797+
let Visibility { kind, span, tokens: _ } = visibility;
19041798
match kind {
19051799
VisibilityKind::Public | VisibilityKind::Inherited => {}
19061800
VisibilityKind::Restricted { path, id, shorthand: _ } => {
19071801
vis.visit_id(id);
19081802
vis.visit_path(path);
19091803
}
19101804
}
1911-
visit_lazy_tts(vis, tokens);
19121805
vis.visit_span(span);
19131806
}
19141807

‎compiler/rustc_codegen_cranelift/src/base.rs

Copy file name to clipboardExpand all lines: compiler/rustc_codegen_cranelift/src/base.rs
+2-37Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ use rustc_ast::InlineAsmOptions;
88
use rustc_codegen_ssa::base::is_call_from_compiler_builtins_to_upstream_monomorphization;
99
use rustc_data_structures::profiling::SelfProfilerRef;
1010
use rustc_index::IndexVec;
11-
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
12-
use rustc_middle::mir::InlineAsmMacro;
1311
use rustc_middle::ty::TypeVisitableExt;
1412
use rustc_middle::ty::adjustment::PointerCoercion;
1513
use rustc_middle::ty::layout::{FnAbiOf, HasTypingEnv};
@@ -18,7 +16,6 @@ use rustc_middle::ty::print::with_no_trimmed_paths;
1816
use crate::constant::ConstantCx;
1917
use crate::debuginfo::{FunctionDebugContext, TypeDebugContext};
2018
use crate::enable_verifier;
21-
use crate::inline_asm::codegen_naked_asm;
2219
use crate::prelude::*;
2320
use crate::pretty_clif::CommentWriter;
2421

@@ -37,7 +34,7 @@ pub(crate) fn codegen_fn<'tcx>(
3734
cached_func: Function,
3835
module: &mut dyn Module,
3936
instance: Instance<'tcx>,
40-
) -> Option<CodegenedFunction> {
37+
) -> CodegenedFunction {
4138
debug_assert!(!instance.args.has_infer());
4239

4340
let symbol_name = tcx.symbol_name(instance).name.to_string();
@@ -54,38 +51,6 @@ pub(crate) fn codegen_fn<'tcx>(
5451
String::from_utf8_lossy(&buf).into_owned()
5552
});
5653

57-
if tcx.codegen_fn_attrs(instance.def_id()).flags.contains(CodegenFnAttrFlags::NAKED) {
58-
assert_eq!(mir.basic_blocks.len(), 1);
59-
assert!(mir.basic_blocks[START_BLOCK].statements.is_empty());
60-
61-
match &mir.basic_blocks[START_BLOCK].terminator().kind {
62-
TerminatorKind::InlineAsm {
63-
asm_macro: InlineAsmMacro::NakedAsm,
64-
template,
65-
operands,
66-
options,
67-
line_spans: _,
68-
targets: _,
69-
unwind: _,
70-
} => {
71-
codegen_naked_asm(
72-
tcx,
73-
cx,
74-
module,
75-
instance,
76-
mir.basic_blocks[START_BLOCK].terminator().source_info.span,
77-
&symbol_name,
78-
template,
79-
operands,
80-
*options,
81-
);
82-
}
83-
_ => unreachable!(),
84-
}
85-
86-
return None;
87-
}
88-
8954
// Declare function
9055
let sig = get_function_sig(tcx, module.target_config().default_call_conv, instance);
9156
let func_id = module.declare_function(&symbol_name, Linkage::Local, &sig).unwrap();
@@ -166,7 +131,7 @@ pub(crate) fn codegen_fn<'tcx>(
166131
// Verify function
167132
verify_func(tcx, &clif_comments, &func);
168133

169-
Some(CodegenedFunction { symbol_name, func_id, func, clif_comments, func_debug_cx })
134+
CodegenedFunction { symbol_name, func_id, func, clif_comments, func_debug_cx }
170135
}
171136

172137
pub(crate) fn compile_fn(

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.