Thanks to visit codestin.com
Credit goes to github.com

Skip to content

merge main into amd-staging#2784

Open
ronlieb wants to merge 13 commits into
amd-stagingfrom
amd/merge/upstream_merge_20260604000652
Open

merge main into amd-staging#2784
ronlieb wants to merge 13 commits into
amd-stagingfrom
amd/merge/upstream_merge_20260604000652

Conversation

@ronlieb
Copy link
Copy Markdown
Collaborator

@ronlieb ronlieb commented Jun 4, 2026

No description provided.

fmayer and others added 13 commits June 4, 2026 00:14
…et" (llvm#201479)

This reverts llvm#201280

This broke MSan on the buildbots:
https://lab.llvm.org/buildbot/#/builders/169/builds/23291/steps/10/logs/stdio

This is the only change in the batch that touched BitcodeReader
Lifts the SymbolLookupSet class and SymbolLookupFlags enum out of Core.h
and into a new SymbolLookupSet.h header.
…199549)

This patch adds an IgnoreMacros option to the readability-function-size
check.

Fixes llvm#112835
llvm#200964)

… linkage

Host handles are now emmitted with external linkage to clash if two
kernels with the same name are registered. This could have happen right
now and silently corrupt the program, but it can happen more easily once
we allow users to name their kernels.

In the same patch we make global variable handles retain the linkage of
the global variable, forcing clashes for external ones and continue to
support weak use cases.

---------

Co-authored-by: Shilei Tian <[email protected]>
…#201474)

This is no longer needed after PR172502 added support to identify
indirect callees from inlined frames.
Extend the matcher to recognize additional supported boolean contraction
form(and+or). Fixes llvm#198235.
Lower non-constant `user={condition(expr)}` selectors in OpenMP
metadirectives to a runtime `fir.if` / `else` selection cascade.

Dynamic user conditions are handled in two separate phases:

- Static applicability uses only selector traits that are known at
compile time.
- Guarded ranking preserves selector specificity and dynamic-condition
scores for the path where the runtime condition evaluates to true.

Lowering first filters candidates using compile-time selector traits,
then orders the remaining candidates with the normal OpenMP variant
ranking rules. If the selected candidate has a non-constant user
condition, that condition is emitted as a `fir.if` guard. When the
condition evaluates to false, the `else` branch continues selection
among the remaining candidates.

For example:

```fortran
!$omp metadirective &
!$omp & when(user={condition(score(100): high)}: barrier) &
!$omp & when(user={condition(low)}: taskwait) &
!$omp & otherwise(nothing)
```

is selected as:

```text
if (high) barrier
else if (low) taskwait
else nothing
```

Scores attached to dynamic `condition(score(...): expr)` selectors are
preserved for the guarded candidate. As a result, those scores affect
ranking only on the runtime path where the condition is true, instead of
allowing a false runtime condition to influence unconditional selection.

This also fixes the interactions with `extension(match_any)` and
`extension(match_none)`:

- `match_any` can be satisfied by a runtime condition when no static
trait matches.
- If static traits already satisfy `match_any`, the dynamic condition
score is used only when the condition is true.
- `match_none` keeps the dynamic condition inactive for static
applicability while still preserving its score for ranking.

For example, this `match_any` selector is statically applicable through
`vendor(llvm)`, but the score on `flag` is used only when `flag`
evaluates to true:

```fortran
!$omp metadirective &
!$omp & when(implementation={extension(match_any), vendor(llvm)}, &
!$omp &      user={condition(score(100): flag)}: barrier) &
!$omp & when(user={condition(score(10): .true.)}: taskwait) &
!$omp & otherwise(nothing)
```

is selected as:

```text
if (flag) barrier
else taskwait
```

The final fallback is the highest-ranked unguarded candidate, an
explicit `otherwise` / `default` clause, or implicit `nothing`.

This patch is part of the feature work for llvm#188820 and is stacked on top
of [llvm#193664](llvm#193664).

Assisted with Copilot and GPT-5.4.
`Context::collectBaseOffset()` will assert if the passed-in classes are
the same.
…lvm#201492)

Update DylibManager and associated interfaces to return ExecutorAddrs
for remote symbols, rather than ExecutorSymbolDefs. No clients were
using the flags component of ExecutorSymbolDef, and this brings the
SimpleExecutorDylibManager implementation in OrcTargetProcess into
closer alignment with the NativeDylibManager implementation in the new
ORC runtime.
…01263)

This commit removes a call to `removeEmptySubRanges` inside
`SplitEditor::rewriteAssigned` which removes empty subranges that may be
expected at a later stage. The empty subranges are eliminated by a later
call to `removeEmptySubRanges`.

Fixes llvm#199337.

---------

Signed-off-by: Steffen Holst Larsen <[email protected]>
areInnerLoopExitPHIsSupported() returned true as soon as it saw the
reduction LCSSA PHI, skipping the user-check for any later LCSSA PHIs.
If one had a non-PHI user, legality wrongly succeeded and the transform
hit a cast<PHINode> assertion. Use continue so the remaining PHIs are
still validated.

Fixes llvm#200811.
@ronlieb ronlieb requested review from a team, dpalermo and skganesan008 June 4, 2026 05:34
@ronlieb ronlieb requested a review from nicolasvasilache as a code owner June 4, 2026 05:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.