Skip to content

Merge tag 'llvmorg-20.1.8' into emscripten-libs-20 #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 84 commits into from
Jul 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
ebfae55
Bump version to 20.1.5
tstellar Apr 30, 2025
aecbb23
[Clang] Fix the trailing comma regression (#136273)
zyn0217 Apr 18, 2025
be4097b
Fix crash lowering stack guard on OpenBSD/aarch64. (#125416)
3405691582 Mar 31, 2025
a38e1ae
[AArch64][SME2] Don't preserve ZT0 around SME ABI routines (#132722)
MacDue Mar 25, 2025
069ef67
[AArch64][SME] Allow spills of ZT0 around SME ABI routines again (#13…
MacDue Apr 25, 2025
8272e45
[flang] Exempt construct entities from SAVE check for PURE (#131383)
klausler Mar 19, 2025
6ddf2e5
[clang-tidy] Do not pass any file when listing checks in run_clang_ti…
carlosgalvezp Apr 29, 2025
70eed33
[InstCombine] Do not combine shuffle+bitcast if the bitcast is elimin…
rj-jesus Apr 30, 2025
009f3c1
[LLD][COFF] Don't dllimport from static libraries (#134443)
aganea Apr 7, 2025
961ce35
[OpenMP] Add pre sm_70 load hack back in (#138589)
jhuber6 May 5, 2025
2386c37
[BasicAA] Gracefully handle large LocationSize (#138528)
nikic May 6, 2025
ae97a56
[Hexagon] Add missing patterns to select PFALSE and PTRUE (#138712)
iajbar May 6, 2025
2b34040
[clang-repl] Fix destructor for interpreter for the cuda negation cas…
anutosh491 May 5, 2025
be087ab
[libc++] Re-introduce _LIBCPP_DISABLE_AVAILABILITY (#134158)
ldionne May 5, 2025
5429418
[clang] Add support for Debian 14 Forky and Debian 15 Duke (#138460)
tambry May 4, 2025
a7166c3
release/20.x: [clang-format] RemoveParentheses shouldn't remove empty…
owenca May 3, 2025
d34d529
Support z17 processor name and scheduler description
uweigand Apr 11, 2025
4370072
[clang] Forward TPL of NestedNameSpecifier
hahnjo Apr 29, 2025
f811c7d
[rtsan][Apple] Add interceptor for _os_nospin_lock_lock (#131034)
davidtrevelyan Mar 13, 2025
b7b834e
[RTSan][Darwin] Adjust OSSpinLock/_os_nospin_lock interceptor and tes…
thetruestblue Apr 18, 2025
0019b7d
[wasm-ld] Refactor WasmSym from static globals to per-link context (#…
anutosh491 Apr 25, 2025
72ad9be
[Clang][MicrosoftMangle] Implement mangling for ConstantMatrixType (#…
Losy001 Apr 26, 2025
41c36d9
[clang] Fix unused variable warning in MS mangler from constant matri…
rnk Apr 26, 2025
f233430
[AArch64] Fix feature list for FUJITSU-MONAKA processor (#139212)
ytmukai May 9, 2025
2cacf46
[X86][TargetLowering] Avoid deleting temporary nodes in `getNegatedEx…
dtcxzyw May 10, 2025
2d079b9
release/20.x: [clang-format] Fix a crash on formatting missing r_pare…
owenca May 10, 2025
74ed1ac
[sanitizer_common] Fix build on ppc64+musl (#120036)
mojyack Apr 10, 2025
0439d1d
[Clang] Fix handling of reference types in tryEvaluateBuiltinObjectSi…
cor3ntin May 2, 2025
1c03684
[clang][analysis] Fix flaky clang/test/Analysis/live-stmts.cpp test (…
steakhal Feb 17, 2025
a708fb7
[RISCV] Allow `Zicsr`/`Zifencei` to duplicate with `g` (#136842)
wangpc-pp Apr 27, 2025
7b09d7b
[analyzer] Workaround for slowdown spikes (unintended scope increase)…
NagyDonat May 12, 2025
1e4d39e
Bump version to 20.1.6
tstellar May 14, 2025
ff2e8f9
Fix test pfalse-v4i1.ll added in #138712 to require asserts.
dyung May 7, 2025
85e06a7
[LoongArch] Fix fp_to_uint/fp_to_sint conversion errors for lasx (#13…
tangaac May 7, 2025
e3d2c00
[LLD][COFF] Allow -arm64xsameaddress in ARM64EC directives (#139631)
cjacek May 15, 2025
5befd1f
[Clang][AST] Fix HandleLValueBase to deal with references (#140105)
shafik May 15, 2025
a169f5c
Correct position of CFI Instruction for Pointer Authentication"
DanielKristofKiss Apr 29, 2025
070cf62
[Clang] Demote mixed enumeration arithmetic error to a warning (#131811)
cor3ntin Mar 18, 2025
8a36b8e
[clang][analyzer] Handle CXXParenInitListExpr alongside InitListExpr
fangyi-zhou Apr 17, 2025
9b08325
[SDAG] Ensure load is included in output chain of sincos expansion (#…
MacDue May 20, 2025
802f4f7
[clang-format] Handle raw string literals containing JSON code (#140666)
owenca May 21, 2025
15ec590
release/20.x: [clang-format] Fix the indent of StartOfName after Attr…
owenca May 22, 2025
6fcb1c1
[LoongArch] Fix assertion failure for annotate tablejump (#140907)
heiher May 22, 2025
53393e2
[LoongArch] Prevent R0/R1 allocation for rj operand of [G]CSRXCHG (#1…
heiher May 22, 2025
aa804fd
[sanitizer_common] Remove interceptors for deprecated struct termio (…
tstellar Apr 28, 2025
5d99a97
[MachO] Improve bounds check (#141083)
nikic May 26, 2025
0e1ef69
[Driver] Fix _XOPEN_SOURCE definition on Solaris (#137141)
rorth Apr 26, 2025
4b6e5a2
[clang-format] Handle Java text blocks (#141334)
owenca May 25, 2025
47addd4
[libclc] Include isnan implementation for SPIR-V targets
karolherbst May 21, 2025
7cf1453
Bump version to 20.1.7
tstellar May 28, 2025
7759bb5
[clang] Serialization: support hashing null template arguments
mizvekov May 29, 2025
e0586e2
[RelLookupTableConverter] Drop unnamed_addr to avoid generating GOTPC…
dianqk Jun 1, 2025
f653271
[clang-format] Correctly annotate token-pasted function decl names (#…
owenca Jun 2, 2025
e5dd4f1
[clangd] Guard against trivial FunctionProtoTypeLoc when creating inl…
HighCommander4 Jun 9, 2025
22a3e6b
release/20.x: [AArch64] Handle XAR with v1i64 operand types (#141754)
davemgreen May 29, 2025
2481e59
[AArch64][SME] Fix accessing the emergency spill slot with hazard pad…
MacDue Jun 2, 2025
acf86c5
[CVP] Keep `ReachableCaseCount` in sync with range of condition (#142…
dtcxzyw Jun 2, 2025
253e932
[release/20.x] Update release notes for SystemZ changes (#140060)
uweigand Jun 12, 2025
2da24c3
[libcxx] Provide locale conversions to tests through lit substitution…
mstorsjo Feb 28, 2025
b8e10ca
[libc++] Fix check for _LIBCPP_HAS_NO_WIDE_CHARACTERS in features.py …
ldionne Mar 18, 2025
337beb7
[libc++] Add _LIBCPP_NO_UNIQUE_ADDRESS to flat_{,multi}map::value_com…
philnik777 May 7, 2025
6fa0cdf
release/20.x: [clang] Don't evaluate the initializer of constexpr-unk…
efriedma-quic Jun 3, 2025
c4f257c
[llvm-rc] Allow ALT on non-virtkey accelerators (#143374)
mstorsjo Jun 10, 2025
02aec86
[clangd] [Modules] Fix to correctly handle module dependencies (#142828)
fleeting-xx Jun 6, 2025
199e02a
Disable clangd/test/module_dependencies.test on Windows
zmodem Jun 10, 2025
9ba132b
[clan-reply] Backport PTU error recovery to 20.x
anutosh491 Jun 2, 2025
6146a88
[LoongArch] Fix '-mno-lsx' option not disabling LASX feature (#143821)
Ami-zhang Jun 12, 2025
b83658b
Bump version to 20.1.8
tstellar Jul 7, 2025
5ac3ce8
[WebAssembly] Fix inline assembly with vector types (#146574)
alexcrichton Jul 2, 2025
5532d5b
[AArch64] Ensure the LR is preserved if we must call __arm_get_curren…
MacDue Jun 26, 2025
65ce78f
[LoongArch] Pre-commit test for fixing xvshuf instructions. NFC
zhaoqi5 Jun 26, 2025
da18fb9
[LoongArch] Fix xvshuf instructions lowering (#145868)
zhaoqi5 Jun 27, 2025
b21155f
[LoongArch] Precommit test case to show bug in LoongArchISelDagToDag
SixWeining Jun 7, 2025
1daceb2
[LoongArch] Pass OptLevel to LoongArchDAGToDAGISel correctly
SixWeining Jun 7, 2025
9af763f
[gtest] Fix building on OpenBSD/sparc64 (#145225)
brad0 Jun 27, 2025
0de59a2
[X86] Ignore NSW when DstSVT is i32 (#131755)
phoebewang Mar 18, 2025
ce455b3
[objcopy][MachO] Revert special handling of encryptable binaries (#14…
drodriguez Jun 16, 2025
fa792cd
[AsmPrinter] Always emit global equivalents if there is non-global us…
dianqk Jun 25, 2025
0c9f909
[AArch64][SME] Fix restoring callee-saves from FP with hazard padding…
MacDue Jun 18, 2025
6fb913d
[RelLookupTableConverter] Drop unnamed_addr for GVs in entries to avo…
dianqk Jun 27, 2025
25bcf11
[RISCV] Fix assertion failure when using -fstack-clash-protection (#1…
ilovepi Apr 18, 2025
df43f93
[PhaseOrdering] Add test for #139050 (NFC)
nikic Jun 6, 2025
87f0227
[InstCombine] Avoid folding `select(umin(X, Y), X)` with min/max valu…
thevar1able Jun 14, 2025
86111d6
Merge tag 'llvmorg-20.1.8' into emscripten-libs-20
aheejin Jul 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def find_compilation_database(path: str) -> str:


def get_tidy_invocation(
f: str,
f: Optional[str],
clang_tidy_binary: str,
checks: str,
tmpdir: Optional[str],
Expand Down Expand Up @@ -147,7 +147,8 @@ def get_tidy_invocation(
start.append(f"--warnings-as-errors={warnings_as_errors}")
if allow_no_checks:
start.append("--allow-no-checks")
start.append(f)
if f:
start.append(f)
return start


Expand Down Expand Up @@ -490,7 +491,7 @@ async def main() -> None:

try:
invocation = get_tidy_invocation(
"",
None,
clang_tidy_binary,
args.checks,
None,
Expand Down
7 changes: 6 additions & 1 deletion clang-tools-extra/clangd/InlayHints.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/ADT/identity.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormatVariadic.h"
Expand Down Expand Up @@ -368,7 +369,11 @@ static FunctionProtoTypeLoc getPrototypeLoc(Expr *Fn) {
}

if (auto F = Target.getAs<FunctionProtoTypeLoc>()) {
return F;
// In some edge cases the AST can contain a "trivial" FunctionProtoTypeLoc
// which has null parameters. Avoid these as they don't contain useful
// information.
if (llvm::all_of(F.getParams(), llvm::identity<ParmVarDecl *>()))
return F;
}

return {};
Expand Down
18 changes: 10 additions & 8 deletions clang-tools-extra/clangd/ModulesBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,9 +360,9 @@ void ModuleFileCache::remove(StringRef ModuleName) {
/// Collect the directly and indirectly required module names for \param
/// ModuleName in topological order. The \param ModuleName is guaranteed to
/// be the last element in \param ModuleNames.
llvm::SmallVector<StringRef> getAllRequiredModules(ProjectModules &MDB,
llvm::SmallVector<std::string> getAllRequiredModules(ProjectModules &MDB,
StringRef ModuleName) {
llvm::SmallVector<llvm::StringRef> ModuleNames;
llvm::SmallVector<std::string> ModuleNames;
llvm::StringSet<> ModuleNamesSet;

auto VisitDeps = [&](StringRef ModuleName, auto Visitor) -> void {
Expand All @@ -373,7 +373,7 @@ llvm::SmallVector<StringRef> getAllRequiredModules(ProjectModules &MDB,
if (ModuleNamesSet.insert(RequiredModuleName).second)
Visitor(RequiredModuleName, Visitor);

ModuleNames.push_back(ModuleName);
ModuleNames.push_back(ModuleName.str());
};
VisitDeps(ModuleName, VisitDeps);

Expand Down Expand Up @@ -418,28 +418,30 @@ llvm::Error ModulesBuilder::ModulesBuilderImpl::getOrBuildModuleFile(
// Get Required modules in topological order.
auto ReqModuleNames = getAllRequiredModules(MDB, ModuleName);
for (llvm::StringRef ReqModuleName : ReqModuleNames) {
if (BuiltModuleFiles.isModuleUnitBuilt(ModuleName))
if (BuiltModuleFiles.isModuleUnitBuilt(ReqModuleName))
continue;

if (auto Cached = Cache.getModule(ReqModuleName)) {
if (IsModuleFileUpToDate(Cached->getModuleFilePath(), BuiltModuleFiles,
TFS.view(std::nullopt))) {
log("Reusing module {0} from {1}", ModuleName,
log("Reusing module {0} from {1}", ReqModuleName,
Cached->getModuleFilePath());
BuiltModuleFiles.addModuleFile(std::move(Cached));
continue;
}
Cache.remove(ReqModuleName);
}

std::string ReqFileName =
MDB.getSourceForModuleName(ReqModuleName);
llvm::Expected<ModuleFile> MF = buildModuleFile(
ModuleName, ModuleUnitFileName, getCDB(), TFS, BuiltModuleFiles);
ReqModuleName, ReqFileName, getCDB(), TFS, BuiltModuleFiles);
if (llvm::Error Err = MF.takeError())
return Err;

log("Built module {0} to {1}", ModuleName, MF->getModuleFilePath());
log("Built module {0} to {1}", ReqModuleName, MF->getModuleFilePath());
auto BuiltModuleFile = std::make_shared<const ModuleFile>(std::move(*MF));
Cache.add(ModuleName, BuiltModuleFile);
Cache.add(ReqModuleName, BuiltModuleFile);
BuiltModuleFiles.addModuleFile(std::move(BuiltModuleFile));
}

Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clangd/ProjectModules.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class ProjectModules {
llvm::unique_function<void(tooling::CompileCommand &, PathRef) const>;

virtual std::vector<std::string> getRequiredModules(PathRef File) = 0;
virtual PathRef
virtual std::string
getSourceForModuleName(llvm::StringRef ModuleName,
PathRef RequiredSrcFile = PathRef()) = 0;

Expand Down
6 changes: 3 additions & 3 deletions clang-tools-extra/clangd/ScanningProjectModules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class ModuleDependencyScanner {
///
/// TODO: We should handle the case that there are multiple source files
/// declaring the same module.
PathRef getSourceForModuleName(llvm::StringRef ModuleName) const;
std::string getSourceForModuleName(llvm::StringRef ModuleName) const;

/// Return the direct required modules. Indirect required modules are not
/// included.
Expand Down Expand Up @@ -140,7 +140,7 @@ void ModuleDependencyScanner::globalScan(
GlobalScanned = true;
}

PathRef ModuleDependencyScanner::getSourceForModuleName(
std::string ModuleDependencyScanner::getSourceForModuleName(
llvm::StringRef ModuleName) const {
assert(
GlobalScanned &&
Expand Down Expand Up @@ -189,7 +189,7 @@ class ScanningAllProjectModules : public ProjectModules {

/// RequiredSourceFile is not used intentionally. See the comments of
/// ModuleDependencyScanner for detail.
PathRef
std::string
getSourceForModuleName(llvm::StringRef ModuleName,
PathRef RequiredSourceFile = PathRef()) override {
Scanner.globalScan(Mangler);
Expand Down
95 changes: 95 additions & 0 deletions clang-tools-extra/clangd/test/module_dependencies.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# A smoke test to check that a simple dependency chain for modules can work.
#
# FIXME: The test fails on Windows; see comments on https://github.com/llvm/llvm-project/pull/142828
# UNSUPPORTED: system-windows
#
# RUN: rm -fr %t
# RUN: mkdir -p %t
# RUN: split-file %s %t
#
# RUN: sed -e "s|DIR|%/t|g" %t/compile_commands.json.tmpl > %t/compile_commands.json.tmp
# RUN: sed -e "s|CLANG_CC|%clang|g" %t/compile_commands.json.tmp > %t/compile_commands.json
# RUN: sed -e "s|DIR|%/t|g" %t/definition.jsonrpc.tmpl > %t/definition.jsonrpc.tmp
#
# On Windows, we need the URI in didOpen to look like "uri":"file:///C:/..."
# (with the extra slash in the front), so we add it here.
# RUN: sed -E -e 's|"file://([A-Z]):/|"file:///\1:/|g' %/t/definition.jsonrpc.tmp > %/t/definition.jsonrpc
#
# RUN: clangd -experimental-modules-support -lit-test < %t/definition.jsonrpc \
# RUN: | FileCheck -strict-whitespace %t/definition.jsonrpc

#--- A-frag.cppm
export module A:frag;
export void printA() {}

#--- A.cppm
export module A;
export import :frag;

#--- Use.cpp
import A;
void foo() {
print
}

#--- compile_commands.json.tmpl
[
{
"directory": "DIR",
"command": "CLANG_CC -fprebuilt-module-path=DIR -std=c++20 -o DIR/main.cpp.o -c DIR/Use.cpp",
"file": "DIR/Use.cpp"
},
{
"directory": "DIR",
"command": "CLANG_CC -std=c++20 DIR/A.cppm --precompile -o DIR/A.pcm",
"file": "DIR/A.cppm"
},
{
"directory": "DIR",
"command": "CLANG_CC -std=c++20 DIR/A-frag.cppm --precompile -o DIR/A-frag.pcm",
"file": "DIR/A-frag.cppm"
}
]

#--- definition.jsonrpc.tmpl
{
"jsonrpc": "2.0",
"id": 0,
"method": "initialize",
"params": {
"processId": 123,
"rootPath": "clangd",
"capabilities": {
"textDocument": {
"completion": {
"completionItem": {
"snippetSupport": true
}
}
}
},
"trace": "off"
}
}
---
{
"jsonrpc": "2.0",
"method": "textDocument/didOpen",
"params": {
"textDocument": {
"uri": "file://DIR/Use.cpp",
"languageId": "cpp",
"version": 1,
"text": "import A;\nvoid foo() {\n print\n}\n"
}
}
}

# CHECK: "message"{{.*}}printA{{.*}}(fix available)

---
{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{"textDocument":{"uri":"file://DIR/Use.cpp"},"context":{"triggerKind":1},"position":{"line":2,"character":6}}}
---
{"jsonrpc":"2.0","id":2,"method":"shutdown"}
---
{"jsonrpc":"2.0","method":"exit"}
5 changes: 5 additions & 0 deletions clang-tools-extra/clangd/unittests/InlayHintTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -997,11 +997,16 @@ TEST(ParameterHints, FunctionPointer) {
f3_t f3;
using f4_t = void(__stdcall *)(int param);
f4_t f4;
__attribute__((noreturn)) f4_t f5;
void bar() {
f1($f1[[42]]);
f2($f2[[42]]);
f3($f3[[42]]);
f4($f4[[42]]);
// This one runs into an edge case in clang's type model
// and we can't extract the parameter name. But at least
// we shouldn't crash.
f5(42);
}
)cpp",
ExpectedHint{"param: ", "f1"}, ExpectedHint{"param: ", "f2"},
Expand Down
3 changes: 3 additions & 0 deletions clang-tools-extra/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,9 @@ Improvements to clang-tidy
- Fixed bug in :program:`clang-tidy` by which `HeaderFilterRegex` did not take
effect when passed via the `.clang-tidy` file.

- Fixed bug in :program:`run_clang_tidy.py` where the program would not
correctly display the checks enabled by the top-level `.clang-tidy` file.

New checks
^^^^^^^^^^

Expand Down
11 changes: 11 additions & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,9 @@ C++2c Feature Support

- Implemented `P3176R1 The Oxford variadic comma <https://wg21.link/P3176R1>`_

- The error produced when doing arithmetic operations on enums of different types
can be disabled with ``-Wno-enum-enum-conversion``. (#GH92340)

C++23 Feature Support
^^^^^^^^^^^^^^^^^^^^^
- Removed the restriction to literal types in constexpr functions in C++23 mode.
Expand Down Expand Up @@ -909,6 +912,8 @@ Bug Fixes in This Version
being deleted has a potentially throwing destructor (#GH118660).
- Clang now outputs correct values when #embed data contains bytes with negative
signed char values (#GH102798).
- Fix crash due to unknown references and pointer implementation and handling of
base classes. (GH139452)

Bug Fixes to Compiler Builtins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -1113,6 +1118,7 @@ Miscellaneous Clang Crashes Fixed

- Fixed a crash when an unscoped enumeration declared by an opaque-enum-declaration within a class template
with a dependent underlying type is subject to integral promotion. (#GH117960)
- Fix code completion crash involving PCH serialzied templates. (#GH139019)

OpenACC Specific Changes
------------------------
Expand Down Expand Up @@ -1267,6 +1273,8 @@ RISC-V Support
- The option ``-mcmodel=large`` for the large code model is supported.
- Bump RVV intrinsic to version 1.0, the spec: https://github.com/riscv-non-isa/rvv-intrinsic-doc/releases/tag/v1.0.0-rc4

- `Zicsr` / `Zifencei` are allowed to be duplicated in the presence of `g` in `-march`.

CUDA/HIP Language Changes
^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed a bug about overriding a constexpr pure-virtual member function with a non-constexpr virtual member function which causes compilation failure when including standard C++ header `format`.
Expand Down Expand Up @@ -1465,6 +1473,9 @@ Crash and bug fixes
- The ``unix.BlockInCriticalSection`` now recognizes the ``lock()`` member function
as expected, even if it's inherited from a base class. Fixes (#GH104241).

- Fixed a crash when C++20 parenthesized initializer lists are used. This issue
was causing a crash in clang-tidy. (#GH136041)

Improvements
^^^^^^^^^^^^

Expand Down
6 changes: 5 additions & 1 deletion clang/include/clang/Basic/DiagnosticSemaKinds.td
Original file line number Diff line number Diff line change
Expand Up @@ -7567,9 +7567,13 @@ def warn_arith_conv_mixed_enum_types_cxx20 : Warning<
"%sub{select_arith_conv_kind}0 "
"different enumeration types%diff{ ($ and $)|}1,2 is deprecated">,
InGroup<DeprecatedEnumEnumConversion>;
def err_conv_mixed_enum_types_cxx26 : Error<

def err_conv_mixed_enum_types: Error <
"invalid %sub{select_arith_conv_kind}0 "
"different enumeration types%diff{ ($ and $)|}1,2">;
def zzzz_warn_conv_mixed_enum_types_cxx26 : Warning <
err_conv_mixed_enum_types.Summary>,
InGroup<EnumEnumConversion>, DefaultError;

def warn_arith_conv_mixed_anon_enum_types : Warning<
warn_arith_conv_mixed_enum_types.Summary>,
Expand Down
4 changes: 3 additions & 1 deletion clang/include/clang/Driver/Distro.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class Distro {
DebianBullseye,
DebianBookworm,
DebianTrixie,
DebianForky,
DebianDuke,
Exherbo,
RHEL5,
RHEL6,
Expand Down Expand Up @@ -128,7 +130,7 @@ class Distro {
bool IsOpenSUSE() const { return DistroVal == OpenSUSE; }

bool IsDebian() const {
return DistroVal >= DebianLenny && DistroVal <= DebianTrixie;
return DistroVal >= DebianLenny && DistroVal <= DebianDuke;
}

bool IsUbuntu() const {
Expand Down
3 changes: 3 additions & 0 deletions clang/include/clang/Interpreter/Interpreter.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@ class Interpreter {
/// Compiler instance performing the incremental compilation.
std::unique_ptr<CompilerInstance> CI;

/// An optional compiler instance for CUDA offloading
std::unique_ptr<CompilerInstance> DeviceCI;

protected:
// Derived classes can use an extended interface of the Interpreter.
Interpreter(std::unique_ptr<CompilerInstance> Instance, llvm::Error &Err,
Expand Down
13 changes: 13 additions & 0 deletions clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,19 @@ ANALYZER_OPTION(
"flex\" won't be analyzed.",
true)

ANALYZER_OPTION(
bool, InlineFunctionsWithAmbiguousLoops, "inline-functions-with-ambiguous-loops",
"If disabled (the default), the analyzer puts functions on a \"do not "
"inline this\" list if it finds an execution path within that function "
"that may potentially perform 'analyzer-max-loop' (= 4 by default) "
"iterations in a loop. (Note that functions that _definitely_ reach the "
"loop limit on some execution path are currently marked as \"do not "
"inline\" even if this option is enabled.) Enabling this option "
"eliminates this (somewhat arbitrary) restriction from the analysis "
"scope, which increases the analysis runtime (on average by ~10%, but "
"a few translation units may see much larger slowdowns).",
false)

//===----------------------------------------------------------------------===//
// Unsigned analyzer options.
//===----------------------------------------------------------------------===//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,6 @@ class FunctionSummariesTy {
I->second.MayInline = 0;
}

void markReachedMaxBlockCount(const Decl *D) {
markShouldNotInline(D);
}

std::optional<bool> mayInline(const Decl *D) {
MapTy::const_iterator I = Map.find(D);
if (I != Map.end() && I->second.InlineChecked)
Expand Down
Loading