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},