Skip to content

Commit cdff12b

Browse files
committed
Port #![compiler_builtins] to the attribute parser.
1 parent fffc4fc commit cdff12b

7 files changed

Lines changed: 20 additions & 6 deletions

File tree

compiler/rustc_attr_parsing/src/attributes/link_attrs.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,3 +665,12 @@ impl<S: Stage> NoArgsAttributeParser<S> for NeedsAllocatorParser {
665665
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
666666
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::NeedsAllocator;
667667
}
668+
669+
pub(crate) struct CompilerBuiltinsParser;
670+
671+
impl<S: Stage> NoArgsAttributeParser<S> for CompilerBuiltinsParser {
672+
const PATH: &[Symbol] = &[sym::compiler_builtins];
673+
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
674+
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Crate)]);
675+
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::CompilerBuiltins;
676+
}

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ use crate::attributes::dummy::DummyParser;
4040
use crate::attributes::inline::{InlineParser, RustcForceInlineParser};
4141
use crate::attributes::instruction_set::InstructionSetParser;
4242
use crate::attributes::link_attrs::{
43-
ExportStableParser, FfiConstParser, FfiPureParser, LinkNameParser, LinkOrdinalParser,
44-
LinkParser, LinkSectionParser, LinkageParser, NeedsAllocatorParser, StdInternalSymbolParser,
43+
CompilerBuiltinsParser, ExportStableParser, FfiConstParser, FfiPureParser, LinkNameParser,
44+
LinkOrdinalParser, LinkParser, LinkSectionParser, LinkageParser, NeedsAllocatorParser,
45+
StdInternalSymbolParser,
4546
};
4647
use crate::attributes::lint_helpers::{
4748
AsPtrParser, AutomaticallyDerivedParser, PassByValueParser, PubTransparentParser,
@@ -250,6 +251,7 @@ attribute_parsers!(
250251
Single<WithoutArgs<AutomaticallyDerivedParser>>,
251252
Single<WithoutArgs<CoinductiveParser>>,
252253
Single<WithoutArgs<ColdParser>>,
254+
Single<WithoutArgs<CompilerBuiltinsParser>>,
253255
Single<WithoutArgs<ConstContinueParser>>,
254256
Single<WithoutArgs<ConstStabilityIndirectParser>>,
255257
Single<WithoutArgs<CoroutineParser>>,

compiler/rustc_hir/src/attrs/data_structures.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,9 @@ pub enum AttributeKind {
687687
/// Represents `#[collapse_debuginfo]`.
688688
CollapseDebugInfo(CollapseMacroDebuginfo),
689689

690+
/// Represents `#[compiler_builtins]`.
691+
CompilerBuiltins,
692+
690693
/// Represents `#[rustc_confusables]`.
691694
Confusables {
692695
symbols: ThinVec<Symbol>,

compiler/rustc_hir/src/attrs/encode_cross_crate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ impl AttributeKind {
3232
Coinductive(..) => No,
3333
Cold(..) => No,
3434
CollapseDebugInfo(..) => Yes,
35+
CompilerBuiltins => No,
3536
Confusables { .. } => Yes,
3637
ConstContinue(..) => No,
3738
ConstStability { .. } => Yes,

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
741741
externally_implementable_items,
742742
proc_macro_data,
743743
debugger_visualizers,
744-
compiler_builtins: ast::attr::contains_name(attrs, sym::compiler_builtins),
744+
compiler_builtins: find_attr!(attrs, AttributeKind::CompilerBuiltins),
745745
needs_allocator: find_attr!(attrs, AttributeKind::NeedsAllocator),
746746
needs_panic_runtime: ast::attr::contains_name(attrs, sym::needs_panic_runtime),
747747
no_builtins: ast::attr::contains_name(attrs, sym::no_builtins),

compiler/rustc_middle/src/ty/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3566,7 +3566,7 @@ pub fn provide(providers: &mut Providers) {
35663566
providers.is_panic_runtime =
35673567
|tcx, LocalCrate| contains_name(tcx.hir_krate_attrs(), sym::panic_runtime);
35683568
providers.is_compiler_builtins =
3569-
|tcx, LocalCrate| contains_name(tcx.hir_krate_attrs(), sym::compiler_builtins);
3569+
|tcx, LocalCrate| find_attr!(tcx.hir_krate_attrs(), AttributeKind::CompilerBuiltins);
35703570
providers.has_panic_handler = |tcx, LocalCrate| {
35713571
// We want to check if the panic handler was defined in this crate
35723572
tcx.lang_items().panic_impl().is_some_and(|did| did.is_local())

compiler/rustc_passes/src/check_attr.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
323323
| AttributeKind::RustcReallocator
324324
| AttributeKind::RustcNounwind
325325
| AttributeKind::RustcOffloadKernel
326+
| AttributeKind::CompilerBuiltins
326327
) => { /* do nothing */ }
327328
Attribute::Unparsed(attr_item) => {
328329
style = Some(attr_item.style);
@@ -397,10 +398,8 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
397398
| sym::rustc_no_implicit_bounds
398399
| sym::test_runner
399400
| sym::reexport_test_harness_main
400-
| sym::no_main
401401
| sym::no_builtins
402402
| sym::crate_type
403-
| sym::compiler_builtins
404403
| sym::profiler_runtime
405404
| sym::needs_panic_runtime
406405
| sym::panic_runtime

0 commit comments

Comments
 (0)