Further codegen_attrs cleanups
This commit is contained in:
parent
e4ab642e8c
commit
1d70bd4970
1 changed files with 62 additions and 63 deletions
|
@ -331,24 +331,33 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: DefId) -> CodegenFnAttrs {
|
||||||
no_sanitize_span = Some(attr.span);
|
no_sanitize_span = Some(attr.span);
|
||||||
if let Some(list) = attr.meta_item_list() {
|
if let Some(list) = attr.meta_item_list() {
|
||||||
for item in list.iter() {
|
for item in list.iter() {
|
||||||
if item.has_name(sym::address) {
|
match item.ident().map(|ident| ident.name) {
|
||||||
|
Some(sym::address) => {
|
||||||
codegen_fn_attrs.no_sanitize |=
|
codegen_fn_attrs.no_sanitize |=
|
||||||
SanitizerSet::ADDRESS | SanitizerSet::KERNELADDRESS;
|
SanitizerSet::ADDRESS | SanitizerSet::KERNELADDRESS;
|
||||||
} else if item.has_name(sym::cfi) {
|
}
|
||||||
|
Some(sym::cfi) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::CFI;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::CFI;
|
||||||
} else if item.has_name(sym::kcfi) {
|
}
|
||||||
|
Some(sym::kcfi) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::KCFI;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::KCFI;
|
||||||
} else if item.has_name(sym::memory) {
|
}
|
||||||
|
Some(sym::memory) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::MEMORY;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::MEMORY;
|
||||||
} else if item.has_name(sym::memtag) {
|
}
|
||||||
|
Some(sym::memtag) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::MEMTAG;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::MEMTAG;
|
||||||
} else if item.has_name(sym::shadow_call_stack) {
|
}
|
||||||
|
Some(sym::shadow_call_stack) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::SHADOWCALLSTACK;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::SHADOWCALLSTACK;
|
||||||
} else if item.has_name(sym::thread) {
|
}
|
||||||
|
Some(sym::thread) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::THREAD;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::THREAD;
|
||||||
} else if item.has_name(sym::hwaddress) {
|
}
|
||||||
|
Some(sym::hwaddress) => {
|
||||||
codegen_fn_attrs.no_sanitize |= SanitizerSet::HWADDRESS;
|
codegen_fn_attrs.no_sanitize |= SanitizerSet::HWADDRESS;
|
||||||
} else {
|
}
|
||||||
|
_ => {
|
||||||
tcx.sess
|
tcx.sess
|
||||||
.struct_span_err(item.span(), "invalid argument for `no_sanitize`")
|
.struct_span_err(item.span(), "invalid argument for `no_sanitize`")
|
||||||
.note("expected one of: `address`, `cfi`, `hwaddress`, `kcfi`, `memory`, `memtag`, `shadow-call-stack`, or `thread`")
|
.note("expected one of: `address`, `cfi`, `hwaddress`, `kcfi`, `memory`, `memtag`, `shadow-call-stack`, or `thread`")
|
||||||
|
@ -357,6 +366,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: DefId) -> CodegenFnAttrs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
sym::instruction_set => {
|
sym::instruction_set => {
|
||||||
codegen_fn_attrs.instruction_set =
|
codegen_fn_attrs.instruction_set =
|
||||||
attr.meta_item_list().and_then(|l| match &l[..] {
|
attr.meta_item_list().and_then(|l| match &l[..] {
|
||||||
|
@ -417,15 +427,11 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: DefId) -> CodegenFnAttrs {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
sym::repr => {
|
sym::repr => {
|
||||||
codegen_fn_attrs.alignment = match attr.meta_item_list() {
|
codegen_fn_attrs.alignment = if let Some(items) = attr.meta_item_list()
|
||||||
Some(items) => match items.as_slice() {
|
&& let [item] = items.as_slice()
|
||||||
[item] => match item.name_value_literal() {
|
&& let Some((sym::align, literal)) = item.name_value_literal()
|
||||||
Some((sym::align, literal)) => {
|
{
|
||||||
let alignment = rustc_attr::parse_alignment(&literal.kind);
|
rustc_attr::parse_alignment(&literal.kind).map_err(|msg| {
|
||||||
|
|
||||||
match alignment {
|
|
||||||
Ok(align) => Some(align),
|
|
||||||
Err(msg) => {
|
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
tcx.sess.diagnostic(),
|
tcx.sess.diagnostic(),
|
||||||
attr.span,
|
attr.span,
|
||||||
|
@ -434,17 +440,10 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: DefId) -> CodegenFnAttrs {
|
||||||
msg
|
msg
|
||||||
)
|
)
|
||||||
.emit();
|
.emit();
|
||||||
|
})
|
||||||
|
.ok()
|
||||||
|
} else {
|
||||||
None
|
None
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => None,
|
|
||||||
},
|
|
||||||
[] => None,
|
|
||||||
_ => None,
|
|
||||||
},
|
|
||||||
None => None,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue