Skip to content

Commit 3e731f7

Browse files
committed
Port #[rustc_offload_kernel] to attr parser
1 parent 03b8b68 commit 3e731f7

6 files changed

Lines changed: 19 additions & 4 deletions

File tree

compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,3 +335,12 @@ impl<S: Stage> NoArgsAttributeParser<S> for RustcNounwindParser {
335335
]);
336336
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcNounwind;
337337
}
338+
339+
pub(crate) struct RustcOffloadKernelParser;
340+
341+
impl<S: Stage> NoArgsAttributeParser<S> for RustcOffloadKernelParser {
342+
const PATH: &[Symbol] = &[sym::rustc_offload_kernel];
343+
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Error;
344+
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Fn)]);
345+
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcOffloadKernel;
346+
}

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ use crate::attributes::rustc_internal::{
7979
RustcLintQueryInstabilityParser, RustcLintUntrackedQueryInformationParser, RustcMainParser,
8080
RustcMustImplementOneOfParser, RustcNeverReturnsNullPointerParser,
8181
RustcNoImplicitAutorefsParser, RustcNounwindParser, RustcObjectLifetimeDefaultParser,
82-
RustcScalableVectorParser, RustcSimdMonomorphizeLaneLimitParser,
82+
RustcOffloadKernelParser, RustcScalableVectorParser, RustcSimdMonomorphizeLaneLimitParser,
8383
};
8484
use crate::attributes::semantics::MayDangleParser;
8585
use crate::attributes::stability::{
@@ -297,6 +297,7 @@ attribute_parsers!(
297297
Single<WithoutArgs<RustcNeverReturnsNullPointerParser>>,
298298
Single<WithoutArgs<RustcNoImplicitAutorefsParser>>,
299299
Single<WithoutArgs<RustcNounwindParser>>,
300+
Single<WithoutArgs<RustcOffloadKernelParser>>,
300301
Single<WithoutArgs<RustcPassIndirectlyInNonRusticAbisParser>>,
301302
Single<WithoutArgs<RustcReallocatorParser>>,
302303
Single<WithoutArgs<RustcShouldNotBeCalledOnConstItems>>,

compiler/rustc_codegen_ssa/src/codegen_attrs.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,9 @@ fn process_builtin_attrs(
350350
AttributeKind::RustcNounwind => {
351351
codegen_fn_attrs.flags |= CodegenFnAttrFlags::NEVER_UNWIND
352352
}
353+
AttributeKind::RustcOffloadKernel => {
354+
codegen_fn_attrs.flags |= CodegenFnAttrFlags::OFFLOAD_KERNEL
355+
}
353356
_ => {}
354357
}
355358
}
@@ -363,9 +366,6 @@ fn process_builtin_attrs(
363366
codegen_fn_attrs.patchable_function_entry =
364367
parse_patchable_function_entry(tcx, attr);
365368
}
366-
sym::rustc_offload_kernel => {
367-
codegen_fn_attrs.flags |= CodegenFnAttrFlags::OFFLOAD_KERNEL
368-
}
369369
_ => {}
370370
}
371371
}

compiler/rustc_hir/src/attrs/data_structures.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,9 @@ pub enum AttributeKind {
987987
/// Represents `#[rustc_object_lifetime_default]`.
988988
RustcObjectLifetimeDefault,
989989

990+
/// Represents `#[rustc_offload_kernel]`
991+
RustcOffloadKernel,
992+
990993
/// Represents `#[rustc_pass_indirectly_in_non_rustic_abis]`
991994
RustcPassIndirectlyInNonRusticAbis(Span),
992995

compiler/rustc_hir/src/attrs/encode_cross_crate.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ impl AttributeKind {
124124
RustcNoImplicitAutorefs => Yes,
125125
RustcNounwind => No,
126126
RustcObjectLifetimeDefault => No,
127+
RustcOffloadKernel => Yes,
127128
RustcPassIndirectlyInNonRusticAbis(..) => No,
128129
RustcReallocator => No,
129130
RustcScalableVector { .. } => Yes,

compiler/rustc_passes/src/check_attr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
323323
| AttributeKind::RustcDeallocator
324324
| AttributeKind::RustcReallocator
325325
| AttributeKind::RustcNounwind
326+
| AttributeKind::RustcOffloadKernel
326327
) => { /* do nothing */ }
327328
Attribute::Unparsed(attr_item) => {
328329
style = Some(attr_item.style);

0 commit comments

Comments
 (0)