[llvm] 86c7703 - [AsmParser] Automatically declare and lex attribute keywords (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 27 00:27:34 PDT 2022


Author: Nikita Popov
Date: 2022-04-27T09:27:26+02:00
New Revision: 86c770346c26ce4c9abf5a5b7ab4b5bbfdcf9d78

URL: https://github.com/llvm/llvm-project/commit/86c770346c26ce4c9abf5a5b7ab4b5bbfdcf9d78
DIFF: https://github.com/llvm/llvm-project/commit/86c770346c26ce4c9abf5a5b7ab4b5bbfdcf9d78.diff

LOG: [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

Added: 
    

Modified: 
    llvm/include/llvm/AsmParser/LLToken.h
    llvm/lib/AsmParser/LLLexer.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/AsmParser/LLToken.h b/llvm/include/llvm/AsmParser/LLToken.h
index 5a1cf34321147..715401f126be8 100644
--- a/llvm/include/llvm/AsmParser/LLToken.h
+++ b/llvm/include/llvm/AsmParser/LLToken.h
@@ -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,

diff  --git a/llvm/lib/AsmParser/LLLexer.cpp b/llvm/lib/AsmParser/LLLexer.cpp
index f86504f16f296..f9c6d555e9d1a 100644
--- a/llvm/lib/AsmParser/LLLexer.cpp
+++ b/llvm/lib/AsmParser/LLLexer.cpp
@@ -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);


        


More information about the llvm-commits mailing list