Skip to content

Commit bc46d21

Browse files
committed
Update logic
1 parent f3a6be9 commit bc46d21

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

compiler/rustc_codegen_ssa/src/codegen_attrs.rs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
use rustc_ast::{MetaItemInner, MetaItemKind, ast, attr};
2-
use rustc_attr::{InlineAttr, InstructionSetAttr, OptimizeAttr, list_contains_name};
1+
use rustc_ast::{ast, attr, MetaItemInner, MetaItemKind};
2+
use rustc_attr::{list_contains_name, InlineAttr, InstructionSetAttr, OptimizeAttr};
33
use rustc_data_structures::fx::FxHashMap;
44
use rustc_errors::codes::*;
5-
use rustc_errors::{DiagMessage, SubdiagMessage, struct_span_code_err};
5+
use rustc_errors::{struct_span_code_err, DiagMessage, SubdiagMessage};
66
use rustc_hir as hir;
77
use rustc_hir::def::DefKind;
8-
use rustc_hir::def_id::{DefId, LOCAL_CRATE, LocalDefId};
8+
use rustc_hir::def_id::{DefId, LocalDefId, LOCAL_CRATE};
99
use rustc_hir::weak_lang_items::WEAK_LANG_ITEMS;
10-
use rustc_hir::{LangItem, lang_items};
10+
use rustc_hir::{lang_items, LangItem};
1111
use rustc_middle::middle::codegen_fn_attrs::{
1212
CodegenFnAttrFlags, CodegenFnAttrs, PatchableFunctionEntry,
1313
};
1414
use rustc_middle::mir::mono::Linkage;
1515
use rustc_middle::query::Providers;
1616
use rustc_middle::ty::{self as ty, TyCtxt};
1717
use rustc_session::parse::feature_err;
18-
use rustc_session::{Session, lint};
18+
use rustc_session::{lint, Session};
1919
use rustc_span::symbol::Ident;
20-
use rustc_span::{Span, sym};
21-
use rustc_target::spec::{SanitizerSet, abi};
20+
use rustc_span::{sym, Span};
21+
use rustc_target::spec::{abi, SanitizerSet};
2222

2323
use crate::errors;
2424
use crate::target_features::{check_target_feature_trait_unsafe, from_target_feature_attr};
@@ -376,10 +376,29 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs {
376376
Some(InstructionSetAttr::ArmA32)
377377
} else if segments[1] == sym::t32 {
378378
Some(InstructionSetAttr::ArmT32)
379+
} else if segments[1] != sym::a32 || segments[1] != sym::t32 {
380+
struct_span_code_err!(
381+
tcx.dcx(),
382+
attr.span,
383+
E0779,
384+
"`[instruction_set]` attribute argument should be valid"
385+
)
386+
.emit();
387+
None
379388
} else {
380389
unreachable!()
381390
}
382391
}
392+
[] => {
393+
struct_span_code_err!(
394+
tcx.dcx(),
395+
attr.span,
396+
E0778,
397+
"`[instruction_set]` requires an argument"
398+
)
399+
.emit();
400+
None
401+
}
383402
_ => None,
384403
}
385404
}

0 commit comments

Comments
 (0)