blob: b777fdc6eb82e438f1d1eda9e5adb11381236bbf [file] [log] [blame]
From 5bc6e2e2092ed3a76dba140a119a2febaca4788d 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] 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/lib/AsmParser/LLLexer.cpp | 77 ++-------------------------------
llvm/lib/AsmParser/LLToken.h | 78 +++-------------------------------
2 files changed, 9 insertions(+), 146 deletions(-)
diff --git a/llvm/lib/AsmParser/LLLexer.cpp b/llvm/lib/AsmParser/LLLexer.cpp
index f1e2c0b39664..1ea53243e246 100644
--- a/llvm/lib/AsmParser/LLLexer.cpp
+++ b/llvm/lib/AsmParser/LLLexer.cpp
@@ -568,7 +568,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(exact);
KEYWORD(inbounds);
KEYWORD(inrange);
- KEYWORD(align);
KEYWORD(addrspace);
KEYWORD(section);
KEYWORD(partition);
@@ -577,7 +576,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(module);
KEYWORD(asm);
KEYWORD(sideeffect);
- KEYWORD(alignstack);
KEYWORD(inteldialect);
KEYWORD(gc);
KEYWORD(prefix);
@@ -633,76 +631,10 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(attributes);
- KEYWORD(alwaysinline);
- KEYWORD(allocsize);
- KEYWORD(argmemonly);
- KEYWORD(builtin);
- KEYWORD(byval);
- KEYWORD(inalloca);
- KEYWORD(cold);
- KEYWORD(convergent);
- KEYWORD(dereferenceable);
- KEYWORD(dereferenceable_or_null);
- 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(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(uwtable);
- KEYWORD(willreturn);
- KEYWORD(writeonly);
- KEYWORD(zeroext);
- KEYWORD(immarg);
- KEYWORD(byref);
- KEYWORD(mustprogress);
+#define GET_ATTR_NAMES
+#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
+ KEYWORD(DISPLAY_NAME);
+#include "llvm/IR/Attributes.inc"
KEYWORD(type);
KEYWORD(opaque);
@@ -771,7 +703,6 @@ lltok::Kind LLLexer::LexIdentifier() {
KEYWORD(param);
KEYWORD(hotness);
KEYWORD(unknown);
- KEYWORD(hot);
KEYWORD(critical);
KEYWORD(relbf);
KEYWORD(variable);
diff --git a/llvm/lib/AsmParser/LLToken.h b/llvm/lib/AsmParser/LLToken.h
index 0b09dc84eeb6..73781e9facfb 100644
--- a/llvm/lib/AsmParser/LLToken.h
+++ b/llvm/lib/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,
@@ -176,76 +174,11 @@ enum Kind {
// Attributes:
kw_attributes,
- 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_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_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_uwtable,
- kw_willreturn,
- kw_writeonly,
- kw_zeroext,
- kw_immarg,
- kw_byref,
- kw_mustprogress,
+
+#define GET_ATTR_NAMES
+#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
+ kw_##DISPLAY_NAME,
+#include "llvm/IR/Attributes.inc"
kw_type,
kw_opaque,
@@ -404,7 +337,6 @@ enum Kind {
kw_param,
kw_hotness,
kw_unknown,
- kw_hot,
kw_critical,
kw_relbf,
kw_variable,
--
2.31.0