Skip to content

Conversation

@z1-cciauto
Copy link
Collaborator

No description provided.

romanova-ekaterina and others added 29 commits November 17, 2025 04:24
This patch implements DTLTO cache. DTLTO cache is implemented the same
way as ThinLTO cache. In fact the same class Cache is used for both of
them.

 Because parameters for codegen are different for DTLTO and ThinLTO
 (DTLTO codegen is done by invoking clang and its codegen parameters are
 not fully synchronized with codegen parameters used by LTO backend).
 The object files generated by DTLTO and ThinLTO might be different and
 shouldn't be mixed. If ThinLTO and DTLTO share the same cache
 directory, the cache file won't interfere with each other.

 I added a couple of test files in cross-project-test/dtlto directory,
 but if more tests are required for initial implementation, I could add
 them.
…llvm#167822)

This check is introduced in
llvm@b284005,
but the documentation seems missing from `checkers.rst`.
Test using CTTZ to determine the lowest set bit, clear it and return the
index

Shows failure to use RMW pattern on the load-btr-store due to additional
(but non-interference) uses of the load.
…c` (llvm#166255)

Now the files location is used for macro expansions. This provides more
accurate location when reporting compilation errors.

Move from `getDecomposedExpansionLoc(Loc)` to
`getDecomposedLoc(getFileLoc(Loc))` when computing Presumed location.
I've left Sonar by the end of October. For my upcoming contributions,
I'll simply use my personal (this) account.
I'll remain a Clang Static Analyser maintainer, but I'll likely spend
less time on that part as in my new job this falls out of my key
responsibilities.
From now on, I'm part of the Apple org, but for accessibility, I'll keep
using my personal email address for open-source contributions and for
the build bots.
Changes: The previous patch had to be reverted to a mismatching-OpType
assert in cse. The reduced-test has now been added corresponding to a
RVV pointer-induction, and the pointer-induction case has been updated
to use createOverflowingBinaryOp.

While at it, record VPIRFlags in VPWidenInductionRecipe.
…ons (llvm#168078)

Instead of storing a variant with specific types, store parser::Block as
the body. Add two access functions to make the traversal of the nest
simpler.

This will allow storing loop-nest sequences in the future.
Only the fortran source files in flang/test/Lower/OpenACC have been
modified. The other files in flang/test will be cleaned up in subsequent
commits
Per Intel Architecture Instruction Set Extensions Programming Reference
rev. 60 (https://cdrdv2.intel.com/v1/dl/getContent/671368), table 1-2,
NVL supports APX and AVX10.2
This patch is a minor NFC-intended refactoring to the way emitting
redundant parentheses is prevented.
The current implementation pushes and later pops a fake low precedence
into the precedence stack when emitting function calls. The new
implementation adds a boolean argument to `emitOperand()` that explicity
guarantees that the operand is being emitted between some kind of
brackets, exempting the method from enforcing correct evaluation order
w.r.t precedence and associativity up the expression tree.
So setting the environment variable works with the new internal shell.
This does not fix all the XRay tests because some of them are using
subshells and need to be rewritten to not use subshells.
This does a couple of things:
- code that is only useful for `shrink_to_fit` is moved into that
function
- `shrink_to_fit` is simplified a bit
- `__recommend` is renamed to better reflect what the function actually
does
- `__allocate_long_buffer` asserts that the passed capacity doesn't fit
into the SSO
So that they will actually function with the internal shell.
Currently only __builtin_elementwise_sqrt emits contrained fp intrinsic
and propagates fp options.
This commit adds this support for the rest of elementwise builtins.
Recent commits (7fe0691, 53ddeb4) marked several x86
intrinsics as constexpr in headers without providing the necessary
constant evaluation support in the compiler backend. This caused
compilation failures when attempting to use these intrinsics in constant
expressions.

Resolves llvm#166814 
Resolves llvm#161203
)

Supports the fixed form syntax which has spaces in between the
identifier
…undef, undef) (llvm#165539)

This PR adds a new combine to the `post-legalizer-combiner` pass. The
new combine checks for vectors being unmerged and subsequently padded
with `G_IMPLICIT_DEF` values by building a new vector. If such a case is
found, the vector being unmerged is instead just concatenated with a
`G_IMPLICIT_DEF` that is as wide as the vector being unmerged.

This removes unnecessary `mov` instructions in a few places.
…lvm#168390)

This patch adds verification to the `SymbolOpInterface` to enforce the
design constraint that symbol operations must not produce SSA results,
as documented in [Symbols and
SymbolTables](https://mlir.llvm.org/docs/SymbolsAndSymbolTables/#defining-or-declaring-a-symbol).

This is a follow-up of llvm#168376
While I am at it, this patch converts one of the loops to use
llvm::is_contained.

Identified with modernize-loop-convert.
Idx is already of type unsigned.

Identified with readability-redundant-casting.
This patch consolidates the grow() logic in DenseMapBase::grow.

With this patch, DenseMapBase::grow() creates a temporary grown
instance and then lets DenseMap/SmallDenseMap attempt to move the
instance back to *this.  If it doesn't work, we move again.

The "attempt to move" always succeeds for DenseMap.  For
SmallDenseMap, it succeeds only in the large mode.

This is part of the effort outlined in llvm#168255.
This patch removes DenseMap::init and SmallDenseMap::init by inlining
them into their call sites and simplifying them.

init() is defined as:

  void init(unsigned InitNumEntries) {
auto InitBuckets =
BaseT::getMinBucketToReserveForEntries(InitNumEntries);
    this->initWithExactBucketCount(InitBuckets);
  }

- Constuctors: Now that we have constructors that allocate the exact
  number of buckets (as opposed to the number of key/value pairs),
  init() does too much.  Once we convert the number of key/value pairs
  to the number of buckets, we can call the constructors that take the
  exact number of buckets.

- init(0) in the move assignment operators simplifies down to:

    initWithExactBucketCount(0)

- shrink_and_clear() computes the number of buckets to have after the
  clear operation.  As such, we should call initWithExactBucketCount,
  not init.  Otherwise, we would end up adding "load factor padding"
  on top of NewNumBuckets:

    NextPowerOf2(NewNumBuckets * 4 / 3 + 1)

All in all, init() doesn't bring any value in the current setup.

This patch is part of the effort outlined in llvm#168255.
@z1-cciauto z1-cciauto requested a review from krzysz00 as a code owner November 17, 2025 16:03
@z1-cciauto z1-cciauto requested a review from kuhar as a code owner November 17, 2025 16:03
@z1-cciauto z1-cciauto requested a review from a team November 17, 2025 16:04
@z1-cciauto
Copy link
Collaborator Author

@ronlieb ronlieb merged commit 7d6a25a into amd-staging Nov 17, 2025
15 checks passed
@ronlieb ronlieb deleted the upstream_merge_202511171103 branch November 17, 2025 19:04
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.