blob: 4390d8d660349f378ce04a0f761067ef0a248cd4 [file] [log] [blame]
From 8422ea93dea286faddab9191a423c240367d4813 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov@redhat.com>
Date: Tue, 26 Apr 2022 18:50:44 +0200
Subject: [PATCH 1/2] [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
---
llvm/include/llvm/AsmParser/LLToken.h | 85 ++------------------------
llvm/lib/AsmParser/LLLexer.cpp | 86 ++-------------------------
2 files changed, 10 insertions(+), 161 deletions(-)
diff --git a/llvm/include/llvm/AsmParser/LLToken.h b/llvm/include/llvm/AsmParser/LLToken.h
index c4ccd358f938..d39049fc4c5e 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,85 +175,13 @@ 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_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,
@@ -419,7 +345,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 2a091a9c94f8..f9c6d555e9d1 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,87 +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(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);
@@ -785,7 +710,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(param);
KEYWORD(hotness);
KEYWORD(unknown);
- KEYWORD(hot);
KEYWORD(critical);
KEYWORD(relbf);
KEYWORD(variable);
--
2.31.0