diff options
author | Akira Hatanaka <ahatanak@gmail.com> | 2025-01-28 18:59:05 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-28 18:59:05 -0800 |
commit | 60927405f5612158ae0419798838be45a1637911 (patch) | |
tree | 326ec24209ce092b0638da1590ab1e1cef07f41b | |
parent | d0052ebbe2e2f691ec42cad3c8613ef387abc53f (diff) | |
download | llvm-60927405f5612158ae0419798838be45a1637911.zip llvm-60927405f5612158ae0419798838be45a1637911.tar.gz llvm-60927405f5612158ae0419798838be45a1637911.tar.bz2 |
Don't use CLANG_VERSION_MAJOR to check that the value passed to -fclang-abi-compat= is valid (#123998)
Use LLVM_VERSION_MAJOR instead as the maximum allowed value. This change
is needed to fix regression tests that fail when vendors set
CLANG_VERSION_MAJOR to a value that is lower than LLVM_VERSION_MAJOR
when building the compiler.
For example, clang/test/CodeGenCXX/mangle-concept.cpp fails with the
following error if -DCLANG_VERSION_MAJOR=17 is passed to cmake:
invalid value '19' in '-fclang-abi-compat=19'
-rw-r--r-- | clang/CMakeLists.txt | 1 | ||||
-rw-r--r-- | clang/include/clang/Basic/Version.inc.in | 1 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 2 |
3 files changed, 3 insertions, 1 deletions
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index cacbf2e..24e656e 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -331,6 +331,7 @@ if(NOT DEFINED CLANG_VERSION_SUFFIX) set(CLANG_VERSION_SUFFIX ${LLVM_VERSION_SUFFIX}) endif() set(CLANG_VERSION "${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}.${CLANG_VERSION_PATCHLEVEL}${CLANG_VERSION_SUFFIX}") +set(MAX_CLANG_ABI_COMPAT_VERSION "${LLVM_VERSION_MAJOR}") message(STATUS "Clang version: ${CLANG_VERSION}") # Configure the Version.inc file. diff --git a/clang/include/clang/Basic/Version.inc.in b/clang/include/clang/Basic/Version.inc.in index 370da85..69c79d0 100644 --- a/clang/include/clang/Basic/Version.inc.in +++ b/clang/include/clang/Basic/Version.inc.in @@ -4,3 +4,4 @@ #define CLANG_VERSION_MAJOR_STRING "@CLANG_VERSION_MAJOR@" #define CLANG_VERSION_MINOR @CLANG_VERSION_MINOR@ #define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@ +#define MAX_CLANG_ABI_COMPAT_VERSION @MAX_CLANG_ABI_COMPAT_VERSION@ diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 44dd699..2097a83 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -4413,7 +4413,7 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, // y or y.0 (4 <= y <= current version). if (!VerParts.first.starts_with("0") && !VerParts.first.getAsInteger(10, Major) && 3 <= Major && - Major <= CLANG_VERSION_MAJOR && + Major <= MAX_CLANG_ABI_COMPAT_VERSION && (Major == 3 ? VerParts.second.size() == 1 && !VerParts.second.getAsInteger(10, Minor) |