[llvm] [CMake] Declare all parts of *GenRegisterInfo.inc as outputs. (PR #168405)
Ivan Kosarev via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 18 03:46:15 PST 2025
https://github.com/kosarev updated https://github.com/llvm/llvm-project/pull/168405
>From 3c3dbaa6fdd55246da46cdf1502dede1a1d2df46 Mon Sep 17 00:00:00 2001
From: Ivan Kosarev <ivan.kosarev at amd.com>
Date: Mon, 17 Nov 2025 15:55:56 +0000
Subject: [PATCH] [CMake] Declare all parts of *GenRegisterInfo.inc as outputs.
This tells the build system to check and regenerate the
*GenRegisterInfo*.inc files, should any of them be missing for
whatever reason.
A follow-up from
<https://github.com/llvm/llvm-project/pull/167700>.
---
llvm/cmake/modules/TableGen.cmake | 12 +++++++++++-
llvm/utils/TableGen/RegisterInfoEmitter.cpp | 2 ++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake
index 9a2e73a1e3718..84c03cd6432ed 100644
--- a/llvm/cmake/modules/TableGen.cmake
+++ b/llvm/cmake/modules/TableGen.cmake
@@ -66,6 +66,16 @@ function(tablegen project ofn)
list(APPEND LLVM_TABLEGEN_FLAGS "-omit-comments")
endif()
+ set(EXTRA_OUTPUTS)
+ if("-gen-register-info" IN_LIST ARGN)
+ cmake_path(GET ofn STEM OUTPUT_BASENAME)
+ list(APPEND EXTRA_OUTPUTS
+ ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_BASENAME}Enums.inc
+ ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_BASENAME}Header.inc
+ ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_BASENAME}MCDesc.inc
+ ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_BASENAME}TargetDesc.inc)
+ endif()
+
# MSVC can't support long string literals ("long" > 65534 bytes)[1], so if there's
# a possibility of generated tables being consumed by MSVC, generate arrays of
# char literals, instead. If we're cross-compiling, then conservatively assume
@@ -126,7 +136,7 @@ function(tablegen project ofn)
set(LLVM_TABLEGEN_JOB_POOL "")
endif()
- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn} ${EXTRA_OUTPUTS}
COMMAND ${tablegen_exe} ${ARG_UNPARSED_ARGUMENTS}
${tblgen_includes}
${LLVM_TABLEGEN_FLAGS}
diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
index ef7b13e8940f8..3486a7a7fb08c 100644
--- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp
+++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
@@ -1878,6 +1878,8 @@ TableGenOutputFiles RegisterInfoEmitter::run(StringRef FilenamePrefix) {
if (RegisterInfoDebug)
debugDump(errs());
+ // The suffixes should be in sync with the tablegen function in
+ // llvm/cmake/modules/TableGen.cmake.
return {Main,
{{"Enums.inc", Enums},
{"MCDesc.inc", MCDesc},
More information about the llvm-commits
mailing list