[AsmParser] Automatically declare and lex attribute keywords (NFC)

Rather than listing these by hand, include all enum attribute
keywords from Attributes.inc. This reduces the number of places
one has to update whenever an enum attribute is added.

Differential Revision: https://reviews.llvm.org/D124465
This commit is contained in:
Nikita Popov 2022-04-26 18:50:44 +02:00
parent 9de7b93bc0
commit 86c770346c
2 changed files with 9 additions and 163 deletions

View File

@ -112,7 +112,6 @@ enum Kind {
kw_exact,
kw_inbounds,
kw_inrange,
kw_align,
kw_addrspace,
kw_section,
kw_partition,
@ -121,7 +120,6 @@ enum Kind {
kw_module,
kw_asm,
kw_sideeffect,
kw_alignstack,
kw_inteldialect,
kw_gc,
kw_prefix,
@ -177,86 +175,12 @@ enum Kind {
// Attributes:
kw_attributes,
kw_allocalign,
kw_allocsize,
kw_alwaysinline,
kw_argmemonly,
kw_sanitize_address,
kw_sanitize_hwaddress,
kw_sanitize_memtag,
kw_builtin,
kw_byval,
kw_inalloca,
kw_cold,
kw_convergent,
kw_dereferenceable,
kw_dereferenceable_or_null,
kw_disable_sanitizer_instrumentation,
kw_elementtype,
kw_inaccessiblememonly,
kw_inaccessiblemem_or_argmemonly,
kw_inlinehint,
kw_inreg,
kw_jumptable,
kw_minsize,
kw_allocptr,
kw_naked,
kw_nest,
kw_noalias,
kw_noundef,
kw_nobuiltin,
kw_nocallback,
kw_nocapture,
kw_noduplicate,
kw_nofree,
kw_noimplicitfloat,
kw_noinline,
kw_norecurse,
kw_nonlazybind,
kw_nomerge,
kw_nonnull,
kw_noprofile,
kw_noredzone,
kw_noreturn,
kw_nosync,
kw_nocf_check,
kw_nounwind,
kw_nosanitize_bounds,
kw_nosanitize_coverage,
kw_null_pointer_is_valid,
kw_optforfuzzing,
kw_optnone,
kw_optsize,
kw_preallocated,
kw_readnone,
kw_readonly,
kw_returned,
kw_returns_twice,
kw_signext,
kw_speculatable,
kw_ssp,
kw_sspreq,
kw_sspstrong,
kw_safestack,
kw_shadowcallstack,
kw_sret,
kw_sanitize_thread,
kw_sanitize_memory,
kw_speculative_load_hardening,
kw_strictfp,
kw_swifterror,
kw_swiftself,
kw_swiftasync,
kw_uwtable,
kw_vscale_range,
kw_willreturn,
kw_writeonly,
kw_zeroext,
kw_immarg,
kw_byref,
kw_mustprogress,
kw_sync,
kw_async,
#define GET_ATTR_NAMES
#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
kw_##DISPLAY_NAME,
#include "llvm/IR/Attributes.inc"
kw_type,
kw_opaque,
@ -420,7 +344,6 @@ enum Kind {
kw_param,
kw_hotness,
kw_unknown,
kw_hot,
kw_critical,
kw_relbf,
kw_variable,

View File

@ -567,7 +567,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(exact);
KEYWORD(inbounds);
KEYWORD(inrange);
KEYWORD(align);
KEYWORD(addrspace);
KEYWORD(section);
KEYWORD(partition);
@ -576,7 +575,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(module);
KEYWORD(asm);
KEYWORD(sideeffect);
KEYWORD(alignstack);
KEYWORD(inteldialect);
KEYWORD(gc);
KEYWORD(prefix);
@ -632,88 +630,14 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(c);
KEYWORD(attributes);
KEYWORD(alwaysinline);
KEYWORD(allocalign);
KEYWORD(allocsize);
KEYWORD(argmemonly);
KEYWORD(builtin);
KEYWORD(byval);
KEYWORD(inalloca);
KEYWORD(cold);
KEYWORD(convergent);
KEYWORD(dereferenceable);
KEYWORD(dereferenceable_or_null);
KEYWORD(disable_sanitizer_instrumentation);
KEYWORD(elementtype);
KEYWORD(inaccessiblememonly);
KEYWORD(inaccessiblemem_or_argmemonly);
KEYWORD(inlinehint);
KEYWORD(inreg);
KEYWORD(jumptable);
KEYWORD(minsize);
KEYWORD(allocptr);
KEYWORD(naked);
KEYWORD(nest);
KEYWORD(noalias);
KEYWORD(nobuiltin);
KEYWORD(nocallback);
KEYWORD(nocapture);
KEYWORD(noduplicate);
KEYWORD(nofree);
KEYWORD(noimplicitfloat);
KEYWORD(noinline);
KEYWORD(norecurse);
KEYWORD(nonlazybind);
KEYWORD(nomerge);
KEYWORD(nonnull);
KEYWORD(noprofile);
KEYWORD(noredzone);
KEYWORD(noreturn);
KEYWORD(nosync);
KEYWORD(nocf_check);
KEYWORD(noundef);
KEYWORD(nounwind);
KEYWORD(nosanitize_bounds);
KEYWORD(nosanitize_coverage);
KEYWORD(null_pointer_is_valid);
KEYWORD(optforfuzzing);
KEYWORD(optnone);
KEYWORD(optsize);
KEYWORD(preallocated);
KEYWORD(readnone);
KEYWORD(readonly);
KEYWORD(returned);
KEYWORD(returns_twice);
KEYWORD(signext);
KEYWORD(speculatable);
KEYWORD(sret);
KEYWORD(ssp);
KEYWORD(sspreq);
KEYWORD(sspstrong);
KEYWORD(strictfp);
KEYWORD(safestack);
KEYWORD(shadowcallstack);
KEYWORD(sanitize_address);
KEYWORD(sanitize_hwaddress);
KEYWORD(sanitize_memtag);
KEYWORD(sanitize_thread);
KEYWORD(sanitize_memory);
KEYWORD(speculative_load_hardening);
KEYWORD(swifterror);
KEYWORD(swiftself);
KEYWORD(swiftasync);
KEYWORD(uwtable);
KEYWORD(vscale_range);
KEYWORD(willreturn);
KEYWORD(writeonly);
KEYWORD(zeroext);
KEYWORD(immarg);
KEYWORD(byref);
KEYWORD(mustprogress);
KEYWORD(sync);
KEYWORD(async);
#define GET_ATTR_NAMES
#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
KEYWORD(DISPLAY_NAME);
#include "llvm/IR/Attributes.inc"
KEYWORD(type);
KEYWORD(opaque);
@ -786,7 +710,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(param);
KEYWORD(hotness);
KEYWORD(unknown);
KEYWORD(hot);
KEYWORD(critical);
KEYWORD(relbf);
KEYWORD(variable);