Skip to content

Commit c187993

Browse files
committed
Fixed parsing of attributes, fix test
1 parent a06cd16 commit c187993

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

compiler/rustc_codegen_ssa/src/codegen_attrs.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,23 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs {
460460
let mut prefix = None;
461461
let mut entry = None;
462462
for item in l {
463+
let Some(metaitem) = item.meta_item() else {
464+
continue;
465+
};
466+
467+
let [single_segment] = &metaitem.path.segments[..] else {
468+
continue;
469+
};
470+
471+
let attrib_to_write = match single_segment.ident.name {
472+
sym::prefix_nops => &mut prefix,
473+
sym::entry_nops => &mut entry,
474+
x => {
475+
tcx.dcx().span_err(metaitem.span, "Unexpected parameter.");
476+
continue;
477+
}
478+
};
479+
463480
if let Some(metaitem) =
464481
item.meta_item().map(|e| e.name_value_literal()).flatten()
465482
{
@@ -479,14 +496,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs {
479496
continue;
480497
};
481498

482-
match metaitem.symbol {
483-
sym::prefix => prefix = Some(val),
484-
sym::entry => entry = Some(val),
485-
_ => {
486-
tcx.dcx().span_err(metaitem.span, "Unexpected parameter.");
487-
continue;
488-
}
489-
}
499+
*attrib_to_write = Some(val);
490500
}
491501
}
492502
if let (None, None) = (prefix, entry) {

compiler/rustc_span/src/symbol.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ symbols! {
754754
enable,
755755
encode,
756756
end,
757-
entry,
757+
entry_nops,
758758
enumerate_method,
759759
env,
760760
env_CFG_RELEASE: env!("CFG_RELEASE"),
@@ -1399,7 +1399,7 @@ symbols! {
13991399
prefetch_read_instruction,
14001400
prefetch_write_data,
14011401
prefetch_write_instruction,
1402-
prefix,
1402+
prefix_nops,
14031403
preg,
14041404
prelude,
14051405
prelude_import,

tests/codegen/patchable-function-entry.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pub fn foo() {}
99

1010
// The attribute should override the compile flags
1111
#[no_mangle]
12-
#[patchable_function_entry(prefix_nops = 1, entry_nops = 2))]
12+
#[patchable_function_entry(prefix_nops = 1, entry_nops = 2)]
1313
pub fn bar() {}
1414

1515
// If we override an attribute to 0 or unset, the attribute should go away

0 commit comments

Comments
 (0)