LLVM/project af3a9a2 — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.h DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Added support for functions to DWARFASTParserFortran plus tests
DeltaFile
+266-0lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+133-3lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+5-0lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.h
+404-33 files

LLVM/project 3743f56 — clang/lib/Format TokenAnalyzer.h ContinuationIndenter.cpp, clang/unittests/Format FormatTestMacroExpansion.cpp

[clang-format] Fix macro expansion crashes and raw string indentation (#233758)

Fix three issues with clang-format's macro expansion
(FormatStyle::Macros):

1. Guard MatchingOpeningBlockLineIndex / MatchingClosingBlockLineIndex
during macro expansion: When a macro expands to a multi-line block (such
as DECL_STRUCT(Name)=struct Name {}),
UnwrappedLineParser::addUnwrappedLine pushes the expanded lines into
CurrentExpandedLines rather than CurrentLines. However, parseBlock() and
parseEnum() still computed OpeningLineIndex from CurrentLines->size() -
1, recording an unrelated or out-of-bounds line index in
MatchingOpeningBlockLineIndex and MatchingClosingBlockLineIndex and
crashing DefinitionBlockSeparator / NamespaceEndCommentsFixer. Only
record block line indices when CurrentExpandedLines is empty and the
closing line is not part of a macro expansion.

2. Annotate and analyze each run immediately in
TokenAnalyzer::finishRun(): FormatToken objects in AllTokens are shared

    [26 lines not shown]
DeltaFile
+113-0clang/unittests/Format/FormatTestMacroExpansion.cpp
+21-15clang/lib/Format/TokenAnalyzer.cpp
+12-6clang/lib/Format/UnwrappedLineParser.cpp
+3-1clang/lib/Format/UnwrappedLineFormatter.cpp
+2-1clang/lib/Format/TokenAnalyzer.h
+2-1clang/lib/Format/ContinuationIndenter.cpp
+153-246 files

LLVM/project e660277 — clang/lib/Format TokenAnnotator.h MacroCallReconstructor.cpp, clang/unittests/Format FormatTestMacroExpansion.cpp

[clang-format] Defer line merging to the unexpanded pass (#233944)

Defer line merging to the unexpanded pass when expanding macros.

When Configured Macro Expansion (Style.Macros) is used, clang-format
runs two formatting passes: Run 0 formats the macro-expanded
UnwrappedLines (and finalizes all non-macro-expanded lines and macro
argument tokens), and Run 1 formats the reconstructed unexpanded
UnwrappedLines.

Previously, LineJoiner ran in both Run 0 and Run 1, and Run 0 finalized
the first token of every top-level UnwrappedLine. This caused several
bugs:
1. If a macro expanded to multiple UnwrappedLines whose first line could
merge with a preceding header in Run 0 (e.g. `void f() {
IF_ERROR_RETURN(x); }` where `IF_ERROR_RETURN(x)` expands to `if (x)\n
return x;` with `AllowShortIfStatementsOnASingleLine: Never` and
`AllowShortFunctionsOnASingleLine: All`, or `FN=class C { int f` in
`void f() { FN(a *b); }; }`), Run 0 merged the first expanded line onto

    [24 lines not shown]
DeltaFile
+56-1clang/unittests/Format/FormatTestMacroExpansion.cpp
+37-11clang/lib/Format/UnwrappedLineFormatter.cpp
+9-11clang/lib/Format/WhitespaceManager.cpp
+7-2clang/lib/Format/UnwrappedLineParser.cpp
+4-3clang/lib/Format/MacroCallReconstructor.cpp
+4-1clang/lib/Format/TokenAnnotator.h
+117-292 files not shown
+122-308 files

LLVM/project 72dbb93 — clang/test/CIR/CodeGenOpenMP target-parallel.c

[CIR][OpenMP] Specify x86 host triple in target-parallel test (#234314)

The host RUN line inherits the compiler default triple even though the
checks describe an x86 host with an AMDGPU offload target. Clang rejects
the incompatible host and device pointer sizes on platforms like ARM32.

Assisted-by: Codex
DeltaFile
+2-1clang/test/CIR/CodeGenOpenMP/target-parallel.c
+2-11 files

LLVM/project 107253e — clang/lib/Format TokenAnnotator.cpp, clang/unittests/Format FormatTest.cpp

[clang-format] Fix UseBreakAfter with casts (#233556)

First check for a new argument, before skipping an inner scope.

Fixes #229473
DeltaFile
+7-0clang/unittests/Format/FormatTest.cpp
+2-4clang/lib/Format/TokenAnnotator.cpp
+9-42 files

LLVM/project a171e0d — clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp, clang/test/CIR/Lowering opaque-pointer-address-spaces.cir unlowered-address-spaces.cir

[CIR] Reject language address spaces in DirectToLLVM pointer conversion (#224239)

Reject unlowered language address spaces in pointer types when bypassing
TargetLowering. Guard pointer-producing lowerings, including generated
patterns, so failed conversions report legalization failures instead of
silently selecting address space zero or constructing invalid LLVM
operations.

Assisted-by: Codex / GPT-6
DeltaFile
+559-0clang/test/CIR/Lowering/unlowered-address-spaces.cir
+153-0clang/test/CIR/Lowering/opaque-pointer-address-spaces.cir
+51-6clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+3-0clang/utils/TableGen/CIRLoweringEmitter.cpp
+766-64 files

FreeBSD/ports 0770137 — dns/bind-tools pkg-plist-devel, dns/bind9-devel Makefile distinfo

dns/bind9-devel: update to 9.21.27

Changes:        https://downloads.isc.org/isc/bind9/9.21.27/doc/arm/html/notes.html#notes-for-bind-9-21-27
Security:       CVE-2026-19630 CVE-2026-94300 CVE-2026-96888 CVE-2026-97313
(cherry picked from commit 07723370c87078c9c1d38f896b7639269520be7b)
DeltaFile
+11-11dns/bind9-devel/files/patch-meson.build
+9-9dns/bind9-devel/files/extrapatch-bind-min-override-ttl
+5-6dns/bind9-devel/pkg-plist
+5-5dns/bind-tools/pkg-plist-devel
+3-3dns/bind9-devel/distinfo
+1-1dns/bind9-devel/Makefile
+34-356 files

LLVM/project d2b0cee — clang/lib/Parse ParseDecl.cpp, clang/lib/Sema SemaType.cpp

[BoundsSafety] Create incomplete counted_by types and wire up the refill

Activate late parsing for the counted_by family (counted_by / sized_by and
their _or_null variants) in type-attribute position, under
-fexperimental-late-parse-attributes, on top of the type-attribute handling,
the validation helper and the refill machinery added in the previous commits.

When such an attribute is seen during type construction and its argument
can't be resolved yet, build the CountAttributedType immediately with
getIncompleteCountAttributedType and record it against the enclosing record;
its count expression is filled in at the closing brace via the refill logic.
Because enclosing types refer to the node by pointer, completing it in place
leaves the type chain untouched.
DeltaFile
+189-20clang/lib/Parse/ParseDecl.cpp
+29-50clang/test/Sema/attr-counted-by-late-parsed-struct-ptrs.c
+14-50clang/test/Sema/attr-counted-by-or-null-late-parsed-struct-ptrs.c
+60-0clang/lib/Sema/SemaType.cpp
+11-42clang/test/Sema/attr-sized-by-or-null-late-parsed-struct-ptrs.c
+10-42clang/test/Sema/attr-sized-by-late-parsed-struct-ptrs.c
+313-20411 files not shown
+462-31617 files

LLVM/project 3d0cb49 — clang/lib/Sema SemaType.cpp SemaDeclAttr.cpp

Remove deprecated declaration-position counted_by attribute handler
DeltaFile
+0-38clang/lib/Sema/SemaDeclAttr.cpp
+3-8clang/lib/Sema/SemaType.cpp
+3-462 files

LLVM/project cff2673 — clang/test/Modules bounds-safety-attributed-type-late-parsed.c, clang/test/PCH bounds-safety-attributed-type-late-parsed.c

[BoundsSafety][test] Add late-parsed counted_by type-attribute coverage

New tests exercising the late-parse fill-in mechanism:
  - Sema/attr-counted-by-weird-type-positions{,-late-parsed}.c: counted_by
    in assorted type positions, nested pointers, and rejection cases.
  - Sema/attr-bounds-safety-function-ptr-param.c: attributes on
    function-pointer-typed members.
  - Modules/ and PCH/ bounds-safety-attributed-type-late-parsed: the
    resolved type round-trips through serialization.

  - Sema/attr-counted-by-late-parsed-regressions.c: guards against the
    double-free on a nested-record decl-spec attribute and the null-count
    escape on a free-function parameter.
DeltaFile
+456-0clang/test/Sema/attr-counted-by-weird-type-positions-late-parsed.c
+454-0clang/test/Sema/attr-counted-by-weird-type-positions.c
+173-0clang/test/Sema/attr-bounds-safety-function-ptr-param.c
+111-0clang/test/Modules/bounds-safety-attributed-type-late-parsed.c
+104-0clang/test/Sema/attr-counted-by-late-parsed-regressions.c
+69-0clang/test/PCH/bounds-safety-attributed-type-late-parsed.c
+1,367-04 files not shown
+1,517-010 files

LLVM/project aad20d9 — clang/lib/Parse ParseDecl.cpp, clang/lib/Sema SemaType.cpp

[BoundsSafety] Address review feedback on late-parsed counted_by types

Fixes for late-parsed counted_by-family type attributes:

- A block-pointer member hands its late attributes to the block-pointer chunk
  instead of asserting, so Sema rejects them like a non-pointer type.
- Late-parse type attributes only in member declarators. Function-pointer
  parameters, type names in `sizeof`, and other abstract declarators nested in a
  member are parsed eagerly. They used to be resolved in struct scope, and a
  paren that turned out to be a parameter list asserted.
- An unnamed struct hands its attributes to the enclosing record only when it's
  declared directly in a record, not when it's in a statement expression.
- In declaration-specifier position, only type attributes are late-parsed.
  Declaration attributes such as guarded_by are parsed eagerly again, so they
  apply to every declarator.
- Reject an attribute on a function return type in the late path too.
- Complete a node whose argument fails to parse with a RecoveryExpr and mark the
  fields invalid, rather than leave a CountAttributedType without a count.
- Report a rejected declaration-specifier attribute once rather than once per

    [7 lines not shown]
DeltaFile
+59-62clang/lib/Sema/SemaType.cpp
+49-30clang/lib/Parse/ParseDecl.cpp
+42-0clang/test/Sema/attr-counted-by-late-parsed-non-member.c
+41-0clang/test/PCH/attr-counted-by-late-parsed-parse-error.c
+36-0clang/test/Sema/attr-counted-by-late-parsed-block-pointer.c
+32-0clang/test/Sema/attr-counted-by-late-parsed-rejected-once.c
+259-927 files not shown
+369-10413 files

LLVM/project 4a5b1a6 — clang/include/clang/Sema Sema.h, clang/lib/Parse ParseDecl.cpp

[BoundsSafety] Don't orphan a shared counted_by node when one declarator nests it

A late-parsed counted_by-family attribute in declaration-specifier position is
shared by every declarator in the declaration, so they share one incomplete
CountAttributedType. When one declarator nests the node, as `*b` does in
`IP __counted_by(n) a, *b;`, it is rejected and the node is marked rejected.
The completion pass then skipped the node for every declarator, so `a` kept a
CountAttributedType without a count and crashed on use in
FieldDecl::findCountedByField.

Make the rejection apply to the declarator only. The parser checks and clears
the mark after each declarator, and doesn't pair a rejected declarator's field
with the attribute. The completion pass skips an attribute with no fields left,
still without parsing its argument.

Assisted-by: Opus 5.5
DeltaFile
+32-0clang/test/Sema/attr-counted-by-late-parsed-regressions.c
+17-6clang/lib/Parse/ParseDecl.cpp
+8-6clang/include/clang/Sema/Sema.h
+57-123 files

LLVM/project efbe602 — clang/include/clang/Basic DiagnosticSemaKinds.td, clang/lib/Sema SemaBoundsSafety.cpp

[BoundsSafety] Reject a second bounds attribute on the same pointer

A pointer with two counted_by-family attributes, as in
`int *__counted_by(n) __sized_by(m) p;`, got one CountAttributedType stacked on
another. Reject the second attribute with
err_counted_by_on_bounds_attributed_type, which names both attributes.

Assisted-by: Opus 5.5
DeltaFile
+58-0clang/test/Sema/attr-counted-by-multiple-on-pointer.c
+13-0clang/lib/Sema/SemaBoundsSafety.cpp
+4-0clang/include/clang/Basic/DiagnosticSemaKinds.td
+75-03 files

LLVM/project 8513c82 — clang/lib/Sema SemaBoundsSafety.cpp

Fix test failures in -fexperimental-bounds-safety
DeltaFile
+2-2clang/lib/Sema/SemaBoundsSafety.cpp
+2-21 files

LLVM/project 90e03ea — clang/lib/Sema SemaDeclAttr.cpp SemaType.cpp, clang/test/AST attr-sized-by-struct-ptrs.c attr-counted-by-struct-ptrs.c

[BoundsSafety] Handle the counted_by family as a type attribute

counted_by / sized_by (and their _or_null variants) were handled as a
declaration-position attribute through handleCountedByAttrField.

Build the type during type construction instead and properly handle as a
type-position attribute. Building the node in type position also allows
the new way of late-parsing for type attributes: creates a type node
in place and fills it in once late parsing is done, which will be
enabled in the follow-up commits.

Assisted-by: Opus 5.5
DeltaFile
+33-116clang/lib/Sema/SemaBoundsSafety.cpp
+108-2clang/lib/Sema/SemaType.cpp
+53-0clang/test/Sema/attr-counted-by-return-type.c
+21-27clang/lib/Sema/SemaDeclAttr.cpp
+0-26clang/test/AST/attr-counted-by-struct-ptrs.c
+0-24clang/test/AST/attr-sized-by-struct-ptrs.c
+215-19511 files not shown
+307-27517 files

LLVM/project 6796684 — clang/include/clang/Parse Parser.h, clang/include/clang/Sema DeclSpec.h

[BoundsSafety][NFC] Add late-parsed type attribute lists to declarators

This is groundwork for late-parsing type attributes in every type
position where an ordinary type attribute can appear. Ordinary type
attributes are kept on the DeclSpec, on each DeclaratorChunk and on the
Declarator. Give late-parsed type attributes the same three homes, with
nothing producing or consuming them yet:

  - Move CachedTokens and LateParsedAttrList earlier in DeclSpec.h so
    that DeclSpec, Declarator and DeclaratorChunk can hold one. Add
    LateParsedAttrList::forTypeAttrs() to create those lists.
  - Give DeclSpec, Declarator and DeclaratorChunk a LateParsedAttrList,
    and let Declarator::AddTypeInfo carry one onto the chunk it appends.
  - Give ParseSpecifierQualifierList and ParseTypeQualifierListOpt an
    optional LateParsedAttrList parameter. The former passes it to
    ParseDeclarationSpecifiers, the latter to ParseGNUAttributes.

No functional change: no caller passes a list yet, so the lists stay
empty. The next commit populates them.
DeltaFile
+83-53clang/include/clang/Sema/DeclSpec.h
+14-9clang/include/clang/Parse/Parser.h
+10-4clang/lib/Parse/ParseDecl.cpp
+107-663 files

LLVM/project fc92154 — clang/include/clang/Parse Parser.h, clang/include/clang/Sema Sema.h DeclSpec.h

[BoundsSafety][NFC] Build an incomplete CountAttributedType for a late-parsed attribute (#224558)

This is part of supporting late parsing of counted_by as a type
attribute, following the direction set in
https://github.com/llvm/llvm-project/pull/223267, which allows a
CountAttributedType's count to be filled in later.

Add Sema::ProcessLateParsedTypeAttr. It validates a late-parsed
counted_by-family attribute in type position and wraps the type in a
CountAttributedType whose count is filled in once the enclosing record
is complete.
    
LateParsedTypeAttribute is owned by the Parser, which Sema cannot depend
on. Sema therefore reads the attribute's kind, location and type slot
through a callback.
    
No functional change: nothing creates late-parsed type attributes yet,
so ProcessLateParsedTypeAttr is never invoked. The next commit wires it
up.
    
Assisted-by: Opus 5.5
DeltaFile
+24-0clang/lib/Sema/SemaType.cpp
+22-0clang/include/clang/Sema/DeclSpec.h
+5-12clang/include/clang/Parse/Parser.h
+8-3clang/include/clang/Sema/Sema.h
+1-1clang/lib/Parse/ParseDecl.cpp
+60-165 files

LLVM/project fe11ede — llvm/include/llvm/CodeGen TargetPassConfig.h, llvm/lib/CodeGen TargetPassConfig.cpp

[LegacyPM] Remove addPostFastRegAllocRewrite hook (#234298)

The NewPM doesn't use this given it's only on x86 and easy to implement
with existing hooks. Match the NewPM for consistency.
DeltaFile
+7-6llvm/lib/Target/X86/X86TargetMachine.cpp
+0-4llvm/include/llvm/CodeGen/TargetPassConfig.h
+0-3llvm/lib/CodeGen/TargetPassConfig.cpp
+7-133 files

FreeBSD/ports 0770136 — dns/bind-tools pkg-plist, dns/bind920 Makefile distinfo

dns/bind920: update to 9.20.30

Changes:        https://downloads.isc.org/isc/bind9/9.20.30/doc/arm/html/notes.html#notes-for-bind-9-20-30
Security:       CVE-2026-19630 CVE-2026-94300 CVE-2026-96888 CVE-2026-97313
(cherry picked from commit 07723360fc1f93e3679adb6b93ea4b5e2adc2a0f)
DeltaFile
+8-8dns/bind920/files/extrapatch-bind-min-override-ttl
+5-6dns/bind920/pkg-plist
+5-5dns/bind-tools/pkg-plist
+3-3dns/bind920/distinfo
+1-1dns/bind920/Makefile
+22-235 files

FreeBSD/ports 0772337 — dns/bind-tools pkg-plist-devel, dns/bind9-devel distinfo Makefile

dns/bind9-devel: update to 9.21.27

Changes:        https://downloads.isc.org/isc/bind9/9.21.27/doc/arm/html/notes.html#notes-for-bind-9-21-27
Security:       CVE-2026-19630 CVE-2026-94300 CVE-2026-96888 CVE-2026-97313
DeltaFile
+11-11dns/bind9-devel/files/patch-meson.build
+9-9dns/bind9-devel/files/extrapatch-bind-min-override-ttl
+5-6dns/bind9-devel/pkg-plist
+5-5dns/bind-tools/pkg-plist-devel
+3-3dns/bind9-devel/distinfo
+3-3dns/bind9-devel/Makefile
+36-376 files

FreeBSD/ports 0772336 — dns/bind-tools pkg-plist, dns/bind920 Makefile distinfo

dns/bind920: update to 9.20.30

Changes:        https://downloads.isc.org/isc/bind9/9.20.30/doc/arm/html/notes.html#notes-for-bind-9-20-30
Security:       CVE-2026-19630 CVE-2026-94300 CVE-2026-96888 CVE-2026-97313
DeltaFile
+8-8dns/bind920/files/extrapatch-bind-min-override-ttl
+5-6dns/bind920/pkg-plist
+5-5dns/bind-tools/pkg-plist
+3-3dns/bind920/distinfo
+2-2dns/bind920/Makefile
+23-245 files

LLVM/project 22b5018 — llvm/include/llvm/Passes MachinePassRegistry.def, llvm/lib/Passes CodeGenPassBuilder.cpp

Remove comments
DeltaFile
+0-5llvm/include/llvm/Passes/MachinePassRegistry.def
+0-3llvm/lib/Passes/CodeGenPassBuilder.cpp
+0-82 files

LLVM/project 1fa828c — lldb/source/Plugins/SymbolFile/DWARF DWARFASTParserFortran.h DWARFASTParserFortran.cpp, lldb/unittests/SymbolFile/DWARF DWARFASTParserFortranTests.cpp

[lldb][Fortran] Added support for functions to DWARFASTParserFortran plus tests
DeltaFile
+266-0lldb/unittests/SymbolFile/DWARF/DWARFASTParserFortranTests.cpp
+133-3lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.cpp
+5-0lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserFortran.h
+404-33 files

Illumos/gate 334eab7 — usr/src/cmd/cmd-inet/usr.lib/in.ndpd Makefile tables.c

18475 in.ndpd could compute timeouts with a monotonic timer
Reviewed by: Trey Aspelund <t.k.aspelund at gmail.com>
Reviewed by: Kyle Simpson <kyle at oxide.computer>
Reviewed by: Andy Fiddaman <illumos at fiddaman.net>
Reviewed by: Toomas Soome <tsoome at me.com>
Approved by: Gordon Ross <gordon.w.ross at gmail.com>
DeltaFile
+4-10usr/src/cmd/cmd-inet/usr.lib/in.ndpd/main.c
+11-3usr/src/cmd/cmd-inet/usr.lib/in.ndpd/config.c
+6-6usr/src/cmd/cmd-inet/usr.lib/in.ndpd/tables.c
+4-7usr/src/cmd/cmd-inet/usr.lib/in.ndpd/Makefile
+25-264 files

LLVM/project cd24eb2 — llvm/test/Transforms/SLPVectorizer/AArch64 address-index-external-use.ll icmp-copyable-constant-lane.ll, llvm/test/Transforms/SLPVectorizer/X86 masked-conditional-loads-chain.ll

[SLP][NFC]Add extra tests for some missing features, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/234307
DeltaFile
+748-0llvm/test/Transforms/SLPVectorizer/X86/masked-conditional-loads-chain.ll
+456-0llvm/test/Transforms/SLPVectorizer/AArch64/loop-accumulator-reductions-before-seeds.ll
+153-0llvm/test/Transforms/SLPVectorizer/AArch64/copyable-lane-external-use.ll
+116-0llvm/test/Transforms/SLPVectorizer/AArch64/icmp-copyable-constant-lane.ll
+72-0llvm/test/Transforms/SLPVectorizer/AArch64/address-index-external-use.ll
+1,545-05 files

LLVM/project 806b039 — flang/lib/Lower/OpenMP OpenMP.cpp, flang/test/Lower/OpenMP target-parallel-sections.f90

[flang][OpenMP] Handle sections in target clause extraction (#232084)

Parallel sections nested in target left beginClauseList null and tripped
an assertion. Add OpenMPSectionsConstruct to the handled constructs.

Fixes #227190

Assisted-by: Copilot
DeltaFile
+25-0flang/test/Lower/OpenMP/target-parallel-sections.f90
+5-4flang/lib/Lower/OpenMP/OpenMP.cpp
+30-42 files

LLVM/project 0907a16 — clang/lib/CodeGen CodeGenFunction.h CGStmtOpenMP.cpp

Remove unused OnlyUnresolved parameter
DeltaFile
+2-16clang/lib/CodeGen/CGStmtOpenMP.cpp
+1-2clang/lib/CodeGen/CodeGenFunction.h
+3-182 files

LLVM/project 98b181d — clang/lib/CodeGen CGOpenMPRuntimeGPU.cpp CGStmtOpenMP.cpp, clang/lib/Frontend CompilerInvocation.cpp

Fix edge case defects and add test coverage

Disallow promotion to no-loop for kernels with non-contant or false
conditional clause that affects teams or thread number.

Add guard for 0 trip count for empty loops on host-compile and accept
oversubscription flags there so it applies, so that no-loop kernels are
correctly sized from the count and no longer result in large grid sizing
for zero extended negative iteration counts.

Add guard to write keep-alive list only on per module finalize, matching
offload entry per-module write, to avoid multiple lists with different
names, of which only the first protects its entries, leaving clang's own
list unprotected.
DeltaFile
+73-17clang/test/OpenMP/target_no_loop.cpp
+28-4clang/lib/CodeGen/CGStmtOpenMP.cpp
+15-6clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
+4-6clang/lib/Frontend/CompilerInvocation.cpp
+1-1llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+121-345 files

LLVM/project 62c7cc9 — clang/lib/CodeGen CodeGenFunction.cpp CGOpenMPRuntimeGPU.cpp, clang/test/OpenMP target_no_loop.c

[clang][OpenMP] Add no-loop SPMD kernel promotion

A target teams distribute parallel for that is guaranteed a thread for
every iteration does not need the loop around its body. Flang already
drops it and runs the region as a no-loop kernel.

Enable the same optimization for Clang through mirroring Flang's MLIR
promotion using OpenMPIRBuilder. The kernel is tagged SPMD_NO_LOOP, so
the runtime sizes the grid to the iteration space, and the body is
emitted without a loop around it. The canonical loop it consumes is
reconstructed in the no-loop branch rather than taken from an
OMPCanonicalLoop node, so the promotion does not require
-fopenmp-enable-irbuilder.

Restrict offload entry creation to module level finalize, preventing
asserts on missing offload entries from nested CodeGenFunction
finalizing before module completion.
DeltaFile
+127-44clang/lib/CodeGen/CGStmtOpenMP.cpp
+91-0offload/test/offloading/target-no-loop.c
+81-0clang/test/OpenMP/target_no_loop.c
+21-3clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
+10-8clang/lib/CodeGen/CodeGenFunction.cpp
+8-0llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+338-554 files not shown
+351-5710 files

LLVM/project 09b0deb — clang/lib/CodeGen CGOpenMPRuntime.h CGStmtOpenMP.cpp, clang/test/OpenMP target_no_loop.c

Share one no-loop eligibility check between exec mode and body

The kernel is tagged SPMD_NO_LOOP by a single check, and the body is
emitted loop-free exactly when the kernel carries that tag. Add tests
for the clauses that block promotion.
DeltaFile
+58-1clang/test/OpenMP/target_no_loop.c
+34-19clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
+11-3clang/lib/CodeGen/CGOpenMPRuntimeGPU.h
+2-11clang/lib/CodeGen/CGStmtOpenMP.cpp
+4-5clang/lib/CodeGen/CGOpenMPRuntime.h
+109-395 files