Skip to content
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

[lldb] Tolerate multiple compile units with the same DWO ID #100577

Merged
merged 1 commit into from
Aug 12, 2024

Conversation

labath
Copy link
Collaborator

@labath labath commented Jul 25, 2024

I ran into this when LTO completely emptied two compile units, so they ended up with the same hash (see #100375). Although, ideally, the compiler would try to ensure we don't end up with a hash collision even in this case, guaranteeing their absence is practically impossible. This patch ensures this situation does not bring down lldb.

I ran into this when LTO completely emptied two compile units, so they
ended up with the same hash (see llvm#100375). Although, ideally, the
compiler would try to ensure we don't end up with a hash collision even
in this case, guaranteeing their absence is practically impossible. This
patch ensures this situation does not bring down lldb.
@llvmbot
Copy link
Collaborator

llvmbot commented Jul 25, 2024

@llvm/pr-subscribers-lldb

Author: Pavel Labath (labath)

Changes

I ran into this when LTO completely emptied two compile units, so they ended up with the same hash (see #100375). Although, ideally, the compiler would try to ensure we don't end up with a hash collision even in this case, guaranteeing their absence is practically impossible. This patch ensures this situation does not bring down lldb.


Full diff: https://github.com/llvm/llvm-project/pull/100577.diff

3 Files Affected:

  • (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp (+13-13)
  • (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h (+1-1)
  • (added) lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s (+142)
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
index 66a762bf9b685..0a52159d055bb 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
@@ -97,12 +97,14 @@ void DWARFUnit::ExtractUnitDIEIfNeeded() {
         *m_dwo_id, m_first_die.GetOffset()));
     return; // Can't fetch the compile unit from the dwo file.
   }
-  // If the skeleton compile unit gets its unit DIE parsed first, then this
-  // will fill in the DWO file's back pointer to this skeleton compile unit.
-  // If the DWO files get parsed on their own first the skeleton back link
-  // can be done manually in DWARFUnit::GetSkeletonCompileUnit() which will
-  // do a reverse lookup and cache the result.
-  dwo_cu->SetSkeletonUnit(this);
+
+  // Link the DWO unit to this object, if it hasn't been linked already (this
+  // can happen when we have an index, and the DWO unit is parsed first).
+  if (!dwo_cu->LinkToSkeletonUnit(*this)) {
+    SetDwoError(Status::createWithFormat(
+        "multiple compile units with Dwo ID {0:x16}", *m_dwo_id));
+    return;
+  }
 
   DWARFBaseDIE dwo_cu_die = dwo_cu->GetUnitDIEOnly();
   if (!dwo_cu_die.IsValid()) {
@@ -718,13 +720,11 @@ DWARFCompileUnit *DWARFUnit::GetSkeletonUnit() {
   return llvm::dyn_cast_or_null<DWARFCompileUnit>(m_skeleton_unit);
 }
 
-void DWARFUnit::SetSkeletonUnit(DWARFUnit *skeleton_unit) {
-  // If someone is re-setting the skeleton compile unit backlink, make sure
-  // it is setting it to a valid value when it wasn't valid, or if the
-  // value in m_skeleton_unit was valid, it should be the same value.
-  assert(skeleton_unit);
-  assert(m_skeleton_unit == nullptr || m_skeleton_unit == skeleton_unit);
-  m_skeleton_unit = skeleton_unit;
+bool DWARFUnit::LinkToSkeletonUnit(DWARFUnit &skeleton_unit) {
+  if (m_skeleton_unit && m_skeleton_unit != &skeleton_unit)
+    return false;
+  m_skeleton_unit = &skeleton_unit;
+  return true;
 }
 
 bool DWARFUnit::Supports_DW_AT_APPLE_objc_complete_type() {
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
index 85c37971ced8e..209104fe3a054 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
@@ -170,7 +170,7 @@ class DWARFUnit : public UserID {
   /// both cases correctly and avoids crashes.
   DWARFCompileUnit *GetSkeletonUnit();
 
-  void SetSkeletonUnit(DWARFUnit *skeleton_unit);
+  bool LinkToSkeletonUnit(DWARFUnit &skeleton_unit);
 
   bool Supports_DW_AT_APPLE_objc_complete_type();
 
diff --git a/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s
new file mode 100644
index 0000000000000..d626b4602ad58
--- /dev/null
+++ b/lldb/test/Shell/SymbolFile/DWARF/x86/dwp-hash-collision.s
@@ -0,0 +1,142 @@
+## Test that lldb handles (mainly, that it doesn't crash) the situation where
+## two skeleton compile units have the same DWO ID (and try to claim the same
+## split unit from the DWP file. This can sometimes happen when the compile unit
+## is nearly empty (e.g. because LTO has optimized all of it away).
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s --defsym MAIN=0 > %t
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t.dwp
+# RUN: %lldb %t -o "image lookup -t my_enum_type" \
+# RUN:   -o "image dump separate-debug-info" -o exit | FileCheck %s
+
+## Check that we're able to access the type within the split unit (no matter
+## which skeleton unit it ends up associated with). Completely ignoring the unit
+## might also be reasonable.
+# CHECK: image lookup -t my_enum_type
+# CHECK: 1 match found
+# CHECK:      name = "my_enum_type", byte-size = 4, compiler_type = "enum my_enum_type {
+# CHECK-NEXT: }"
+#
+## Check that we get some indication of the error.
+# CHECK: image dump separate-debug-info
+# CHECK:      Dwo ID             Err Dwo Path
+# CHECK: 0xdeadbeefbaadf00d E   multiple compile units with Dwo ID 0xdeadbeefbaadf00d
+
+.set DWO_ID, 0xdeadbeefbaadf00d
+
+## The main file.
+.ifdef MAIN
+        .section        .debug_abbrev,"",@progbits
+        .byte   1                       # Abbreviation Code
+        .byte   74                      # DW_TAG_compile_unit
+        .byte   0                       # DW_CHILDREN_no
+        .byte   0x76                    # DW_AT_dwo_name
+        .byte   8                       # DW_FORM_string
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+
+        .section        .debug_info,"",@progbits
+.irpc I,01
+.Lcu_begin\I:
+        .long   .Ldebug_info_end\I-.Ldebug_info_start\I # Length of Unit
+.Ldebug_info_start\I:
+        .short  5                       # DWARF version number
+        .byte   4                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .quad   DWO_ID                  # DWO id
+        .byte   1                       # Abbrev [1] DW_TAG_compile_unit
+        .ascii  "foo"
+        .byte   '0' + \I
+        .asciz  ".dwo\0"                # DW_AT_dwo_name
+.Ldebug_info_end\I:
+.endr
+
+.else
+## DWP file starts here.
+
+        .section        .debug_abbrev.dwo,"e",@progbits
+.LAbbrevBegin:
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   8                       # DW_FORM_string
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   4                       # DW_TAG_enumeration_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   8                       # DW_FORM_string
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   4                       # Abbreviation Code
+        .byte   36                      # DW_TAG_base_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   8                       # DW_FORM_string
+        .byte   62                      # DW_AT_encoding
+        .byte   11                      # DW_FORM_data1
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+.LAbbrevEnd:
+        .section        .debug_info.dwo,"e",@progbits
+.LCUBegin:
+.Lcu_begin1:
+        .long   .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
+.Ldebug_info_start1:
+        .short  5                       # DWARF version number
+        .byte   5                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   0                       # Offset Into Abbrev. Section
+        .quad   DWO_ID                  # DWO id
+        .byte   1                       # Abbrev [1] DW_TAG_compile_unit
+        .asciz  "Hand-written DWARF"    # DW_AT_producer
+        .short  12                      # DW_AT_language
+        .byte   2                       # Abbrev [2] DW_TAG_enumeration_type
+        .asciz  "my_enum_type"          # DW_AT_name
+        .long   .Lint-.Lcu_begin1       # DW_AT_type
+        .byte   4                       # DW_AT_byte_size
+.Lint:
+        .byte   4                       # Abbrev [4] DW_TAG_base_type
+        .asciz  "int"                   # DW_AT_name
+        .byte   5                       # DW_AT_encoding
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end1:
+.LCUEnd:
+        .section .debug_cu_index, "", @progbits
+## Header:
+        .short 5                        # Version
+        .short 0                        # Padding
+        .long 2                         # Section count
+        .long 1                         # Unit count
+        .long 2                         # Slot count
+## Hash Table of Signatures:
+        .quad 0
+        .quad DWO_ID
+## Parallel Table of Indexes:
+        .long 0
+        .long 1
+## Table of Section Offsets:
+## Row 0:
+        .long 1                         # DW_SECT_INFO
+        .long 3                         # DW_SECT_ABBREV
+## Row 1:
+        .long 0                         # Offset in .debug_info.dwo
+        .long 0                         # Offset in .debug_abbrev.dwo
+## Table of Section Sizes:
+        .long .LCUEnd-.LCUBegin         # Size in .debug_info.dwo
+        .long .LAbbrevEnd-.LAbbrevBegin # Size in .debug_abbrev.dwo
+.endif

assert(skeleton_unit);
assert(m_skeleton_unit == nullptr || m_skeleton_unit == skeleton_unit);
m_skeleton_unit = skeleton_unit;
bool DWARFUnit::LinkToSkeletonUnit(DWARFUnit &skeleton_unit) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No real reason to pass in a reference here since we want the pointer. The call of this function is calling with dwo_cu->LinkToSkeletonUnit(*this). Can we change DWARFUnit &skeleton_unit back to DWARFUnit *skeleton_unit?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A reference implies (and documents) non-nullness of the argument. This removes the need for the assert(skeleton_unit); inside the function and makes it clear to the caller that it must pass a valid object. I don't strongly about it, but I think that's worth an extra * at the call site.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense.

@@ -170,7 +170,7 @@ class DWARFUnit : public UserID {
/// both cases correctly and avoids crashes.
DWARFCompileUnit *GetSkeletonUnit();

void SetSkeletonUnit(DWARFUnit *skeleton_unit);
bool LinkToSkeletonUnit(DWARFUnit &skeleton_unit);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason this was renamed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It just seemed to me like Set does not capture very well the new semantics of the function (a typical setter function just sets the corresponding field and does not second-guess the callers intentions). A nice side benefit is that we can be sure to catch all callers of the api to make sure they're not silently ignoring the result.

I can revert it if you feel strongly about it.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am fine with the change, makes sense.

Copy link
Collaborator

@clayborg clayborg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All changes look good as is, just one inline question about maybe not setting the error if we detect the .dwo files are both empty (if it is possible to do).

Comment on lines +104 to +105
SetDwoError(Status::createWithFormat(
"multiple compile units with Dwo ID {0:x16}", *m_dwo_id));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we detect these empty .dwo files and not warn if they contain no data? Detection would probably need to be done in LinkToSkeletonUnit(...) and it can return true if it detects two .dwo files being linked that are both empty? Not sure if this will help stop errors from being displayed in cases where it doesn't matter?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there's an easy way to do that. The problem is that the compile units aren't really empty (llvm already skips empty units). They could have arbitrarily many type definitions (typically enums, as those can't be homed) inside them, so we'd have to check if that's all they contain.

I've also thought about looking at the DW_AT_ranges attribute, but that doesn't cover variables, so we would misclassify compile units that only define variables.

The upshot of all this is that since the units don't contain any code, it's pretty hard (maybe impossible?) to actually end up "inside" them. Therefore, I'm not sure if the user would ever see this kind of error, and all that they'll do is slightly increase the error statistics (but then again, maybe we want this to show up in the statistics?)

What do you think?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any thoughts on what I wrote above, Greg?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay. Lets start with this and see how things go and if we ever see this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. With #100375, I think the only way this can show up is with old compiler versions. New versions should no longer generate identical hashes even in these cases (of course, it's still possible to create a hash collision deliberately, but accidental ones should not be happening).

Comment on lines +104 to +105
SetDwoError(Status::createWithFormat(
"multiple compile units with Dwo ID {0:x16}", *m_dwo_id));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay. Lets start with this and see how things go and if we ever see this.

@labath labath merged commit 32a62eb into llvm:main Aug 12, 2024
9 checks passed
@labath labath deleted the duplicate-dwo branch August 12, 2024 09:29
@DavidSpickett
Copy link
Collaborator

DavidSpickett commented Aug 12, 2024

The new test appears to be flaky on Windows:

# .---command stderr------------
# | C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\Shell\SymbolFile\DWARF\x86\dwp-hash-collision.s:22:10: error: CHECK: expected string not found in input
# | # CHECK: 0xdeadbeefbaadf00d E multiple compile units with Dwo ID 0xdeadbeefbaadf00d
# |          ^
# | <stdin>:14:20: note: scanning from here
# | Dwo ID Err Dwo Path
# |                    ^
# | 
# | Input file: <stdin>
# | Check file: C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\Shell\SymbolFile\DWARF\x86\dwp-hash-collision.s
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           .
# |           .
# |           .
# |           9: }" 
# |          10:  
# |          11: (lldb) image dump separate-debug-info 
# |          12: Symbol file: C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\tools\lldb\test\Shell\SymbolFile\DWARF\x86\Output\dwp-hash-collision.s.tmp 
# |          13: Type: "dwo" 
# |          14: Dwo ID Err Dwo Path 
# | check:22                        X error: no match found
# |          15: ------------------ --- ----------------------------------------- 
# | check:22     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          16: 0xdeadbeefbaadf00d C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\tools\lldb\test\Shell\SymbolFile\DWARF\x86\Output\dwp-hash-collision.s.tmp.dwp(foo0.dwo) 
# | check:22     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          17: 0xdeadbeefbaadf00d C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\tools\lldb\test\Shell\SymbolFile\DWARF\x86\Output\dwp-hash-collision.s.tmp.dwp(foo1.dwo) 
# | check:22     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          18: (lldb) exit 
# | check:22     ~~~~~~~~~~~~
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

https://lab.llvm.org/buildbot/#/builders/141/builds/1497

It passed when it was first added https://lab.llvm.org/buildbot/#/builders/141/builds/1493.

I'm going to disable it (7027cc6) there and look into it tomorrow.

@labath
Copy link
Collaborator Author

labath commented Aug 12, 2024

This appears to be the same issue that David reported. I'm going to revert this while I investigate. I doubt it's a compiler thing as the test does not actually compile anything. It's more likely that something in the code is flaky (and I think I have an idea what could that be).

labath added a commit that referenced this pull request Aug 12, 2024
…100577)"

The test appears to be flaky. Revert it while I investigate.

This reverts commits 32a62eb and
7027cc6.
labath added a commit to labath/llvm-project that referenced this pull request Aug 14, 2024
…lvm#100577)"

The only change vs. the first version of the patch is that I've made
DWARFUnit linking thread-safe/unit. This was necessary because, during the
indexing step, two skeleton units could attempt to associate themselves
with the split unit.

The original commit message was:

I ran into this when LTO completely emptied two compile units, so they
ended up with the same hash (see llvm#100375). Although, ideally, the
compiler would try to ensure we don't end up with a hash collision even
in this case, guaranteeing their absence is practically impossible. This
patch ensures this situation does not bring down lldb.
bwendling pushed a commit to bwendling/llvm-project that referenced this pull request Aug 15, 2024
)

I ran into this when LTO completely emptied two compile units, so they
ended up with the same hash (see llvm#100375). Although, ideally, the
compiler would try to ensure we don't end up with a hash collision even
in this case, guaranteeing their absence is practically impossible. This
patch ensures this situation does not bring down lldb.
bwendling pushed a commit to bwendling/llvm-project that referenced this pull request Aug 15, 2024
…lvm#100577)"

The test appears to be flaky. Revert it while I investigate.

This reverts commits 32a62eb and
7027cc6.
labath added a commit that referenced this pull request Aug 15, 2024
…100577)" (#104041)

The only change vs. the first version of the patch is that I've made
DWARFUnit linking thread-safe/unit. This was necessary because, during
the
indexing step, two skeleton units could attempt to associate themselves
with the split unit.

The original commit message was:

I ran into this when LTO completely emptied two compile units, so they
ended up with the same hash (see #100375). Although, ideally, the
compiler would try to ensure we don't end up with a hash collision even
in this case, guaranteeing their absence is practically impossible. This
patch ensures this situation does not bring down lldb.
BaLiKfromUA added a commit to BaLiKfromUA/clang-p2996 that referenced this pull request Aug 20, 2024
* [IRBuilder] Generate nuw GEPs for struct member accesses (#99538)

Generate nuw GEPs for struct member accesses, as inbounds + non-negative
implies nuw.

Regression tests are updated using update scripts where possible, and by
find + replace where not.

* Revert "[mlir][ArmSME] Pattern to swap shape_cast(tranpose) with transpose(shape_cast) (#100731)" (#102457)

This reverts commit 88accd9aaa20c6a30661c48cc2ca6dbbdf991ec0.

This change can be dropped in favor of just #102017.

* [NFC] Use references to avoid copying (#99863)

Modifying `auto` to `auto&` to avoid unnecessary copying

* [clang] Implement CWG2627 Bit-fields and narrowing conversions (#78112)

https://cplusplus.github.io/CWG/issues/2627.html

It is no longer a narrowing conversion when converting a bit-field to a
type smaller than the field's declared type if the bit-field has a width
small enough to fit in the target type. This includes integral
promotions (`long long i : 8` promoted to `int` is no longer narrowing,
allowing `c.i <=> c.i`) and list-initialization (`int n{ c.i };`)

Also applies back to C++11 as this is a defect report.

* [mlir][vector] Disable `vector.matrix_multiply` for scalable vectors (#102573)

Disables `vector.matrix_multiply` for scalable vectors. As per the docs:

>  This is the counterpart of llvm.matrix.multiply in MLIR

I'm not aware of any use of matrix-multiply intrinsics in the context of
scalable vectors, hence disabling.

* [mlir][vector] Add tests for scalable vectors in one-shot-bufferize.mlir (#102361)

* [flang][OpenMP] Handle multiple ranges in `num_teams` clause (#102535)

Commit cee594cf36 added support to clang for multiple expressions in
`num_teams` clause. Add follow-up changes to flang.

* [InstCombine] Remove unnecessary RUN line from test (NFC)

As all the necessary information is encoded using attributes
nowadays, this test doesn't actually depend on the triple
anymore.

* [RISCV] Add Syntacore SCR5 RV32/64 processors definition (#102285)

Syntacore SCR5 is an entry-level Linux-capable 32/64-bit RISC-V
processor core.
Overview: https://syntacore.com/products/scr5

Scheduling model will be added in a subsequent PR.

Co-authored-by: Dmitrii Petrov <dmitrii.petrov@syntacore.com>
Co-authored-by: Anton Afanasyev <anton.afanasyev@syntacore.com>

* Revert "Enable logf128 constant folding for hosts with 128bit floats (#96287)"

This reverts commit ccb2b011e577e861254f61df9c59494e9e122b38.

Causes buildbot failures, e.g. on ppc64le builders.

* LSV/test/AArch64: add missing lit.local.cfg; fix build (#102607)

Follow up on 199d6f2 (LSV: document hang reported in #37865) to fix the
build when omitting the AArch64 target. Add the missing lit.local.cfg.

* [MemoryBuiltins] Handle allocator attributes on call-site

We should handle allocator attributes not only on function
declarations, but also on the call-site. That way we can e.g.
also optimize cases where the allocator function is a virtual
function call.

This was already supported in some of the MemoryBuiltins helpers,
but not all of them. This adds support for allocsize, alloc-family
and allockind("free").

* [AArch64] Add invalid 1 x vscale costs for reductions and reduction-operations. (#102105)

The code-generator is currently not able to handle scalable vectors of
<vscale x 1 x eltty>. The usual "fix" for this until it is supported is
to mark the costs of loads/stores with an invalid cost, preventing the
vectorizer from vectorizing at those factors. But on rare occasions
loops do not contain load/stores, only reductions.

So whilst this is still unsupported return an invalid cost to avoid
selecting vscale x 1 VFs. The cost of a reduction is not currently used
by the vectorizer so this adds the cost to the add/mul/and/or/xor or
min/max that should feed the reduction. It includes reduction costs
too, for completeness. This change will be removed when code-generation
for these types is sufficiently reliable.

Fixes #99760

* Unnamed bitfields are not nonstatic data members.

* [MemoryBuiltins] Simplify getCalledFunction() helper (NFC)

If nobuiltin is set, directly return nullptr instead of using a
separate out parameter and having all callers check this.

* AMDGPU/NewPM: Port SIFixSGPRCopies to new pass manager (#102614)

This allows moving some tests relying on -stop-after=amdgpu-isel
to move to checking -stop-after=finalize-isel instead, which
will more reliably pass the verifier.

* [llvm-readobj][COFF] Dump hybrid objects for ARM64X files. (#102245)

* Fix a unit test input file (#102567)

I forgot to update the version info in the SDKSettings file when I
updated it to the real version relevant to the test.

* [MLIR][GPU-LLVM] Convert `gpu.func` to `llvm.func` (#101664)

Add support in `-convert-gpu-to-llvm-spv` to convert `gpu.func` to
`llvm.func` operations.

- `spir_kernel`/`spir_func` calling conventions used for
kernels/functions.
- `workgroup` attributions encoded as additional `llvm.ptr<3>`
arguments.
- No attribute used to annotate kernels
- `reqd_work_group_size` attribute using to encode
`gpu.known_block_size`.
- `llvm.mlir.workgroup_attrib_size` used to encode workgroup attribution
sizes. This will be attached to the pointer argument workgroup
attributions lower to.

**Note**: A notable missing feature that will be addressed in a
follow-up PR is a `-use-bare-ptr-memref-call-conv` option to replace
MemRef arguments with bare pointers to the MemRef element types instead
of the current MemRef descriptor approach.

---------

Signed-off-by: Victor Perez <victor.perez@codeplay.com>

* [mlir][spirv] Support `memref` in `convert-to-spirv` pass (#102534)

This PR adds conversion patterns for MemRef to the `convert-to-spirv`
pass, introduced in #95942. Conversions from MemRef memory space to
SPIR-V storage class were also included, and would run before the final
dialect conversion phase.

**Future Plans**
- Add tests for ops other than `memref.load` and `memref.store`

---------

Co-authored-by: Jakub Kuderski <kubakuderski@gmail.com>

* [libc][math][c23] Add totalorderl function. (#102564)

* [AMDGPU][AsmParser][NFCI] All NamedIntOperands to be of the i32 type. (#102616)

There's no need for them to have different types.

Part of <https://github.com/llvm/llvm-project/issues/62629>.

* [ARM] Regenerate big-endian-vmov.ll. NFC

* [Clang][OMPX] Add the code generation for multi-dim `num_teams` (#101407)

This patch adds the code generation support for multi-dim `num_teams`
clause when it is used with `target teams ompx_bare` construct.

* [SelectionDAG] Use unaligned store/load to move AVX registers onto stack for `insertelement` (#82130)

Prior to this patch, SelectionDAG generated aligned move onto stacks for
AVX registers when the function was marked as a no-realign-stack
function. This lead to misalignment between the stack and the
instruction generated. This patch fixes the issue. There was a similar
issue reported for `extractelement` which was fixed in
a6614ec5b7c1dbfc4b847884c5de780cf75e8e9c

Co-authored-by: Manish Kausik H <hmamishkausik@gmail.com>

* [bazel] Port for d45de8003a269066c9a9af871119a7c36eeb5aa3

* [Clang] Simplify specifying passes via -Xoffload-linker (#102483)

Make it possible to do things like the following, regardless of whether
the offload target is nvptx or amdgpu:

```
$ clang -O1 -g -fopenmp --offload-arch=native test.c                       \
    -Xoffload-linker -mllvm=-pass-remarks=inline                           \
    -Xoffload-linker -mllvm=-force-remove-attribute=g.internalized:noinline\
    -Xoffload-linker --lto-newpm-passes='forceattrs,default<O1>'           \
    -Xoffload-linker --lto-debug-pass-manager                              \
    -foffload-lto
```

To accomplish that:

- In clang-linker-wrapper, do not forward options via `-Wl` if they
might have literal commas. Use `-Xlinker` instead.
- In clang-nvlink-wrapper, accept `--lto-debug-pass-manager` and
`--lto-newpm-passes`.
- In clang-nvlink-wrapper, drop `-passes` because it's inconsistent with
the interface of `lld`, which is used instead of clang-nvlink-wrapper
when the target is amdgpu. Without this patch, `-passes` is passed to
`nvlink`, producing an error anyway.

---------

Co-authored-by: Joseph Huber <huberjn@outlook.com>

* [bazel] Add missing dep for the SPIRVToLLVM target

* [gn] Give two scripts argparse.RawDescriptionHelpFormatter

Without this, the doc string is put in a single line. These
scripts have multi-line docstrings, so this makes their --help
output look much nicer.

Otherwise, no behavior change.

* [X86] Convert truncsat clamping patterns to use SDPatternMatch. NFC.

Inspired by #99418 (which hopefully we can replace this code with at some point)

* [Clang] Fix Handling of Init Capture with Parameter Packs in LambdaScopeForCallOperatorInstantiationRAII (#100766)

This PR addresses issues related to the handling of `init capture` with
parameter packs in Clang's
`LambdaScopeForCallOperatorInstantiationRAII`.

Previously, `addInstantiatedCapturesToScope` would add `init capture`
containing packs to the scope using the type of the `init capture` to
determine the expanded pack size. However, this approach resulted in a
pack size of 0 because `getType()->containsUnexpandedParameterPack()`
returns `false`. After extensive testing, it appears that the correct
pack size can only be inferred from `getInit`.

But `getInit` may reference parameters and `init capture` from an outer
lambda, as shown in the following example:

```cpp
auto L = [](auto... z) {
    return [... w = z](auto... y) {
        // ...
    };
};
```

To address this, `addInstantiatedCapturesToScope` in
`LambdaScopeForCallOperatorInstantiationRAII` should be called last.
Additionally, `addInstantiatedCapturesToScope` has been modified to only
add `init capture` to the scope. The previous implementation incorrectly
called `MakeInstantiatedLocalArgPack` for other non-init captures
containing packs, resulting in a pack size of 0.

### Impact

This patch affects scenarios where
`LambdaScopeForCallOperatorInstantiationRAII` is passed with
`ShouldAddDeclsFromParentScope = false`, preventing the correct addition
of the current lambda's `init capture` to the scope. There are two main
scenarios for `ShouldAddDeclsFromParentScope = false`:

1. **Constraints**: Sometimes constraints are instantiated in place
rather than delayed. In this case,
`LambdaScopeForCallOperatorInstantiationRAII` does not need to add `init
capture` to the scope.
2. **`noexcept` Expressions**: The expressions inside `noexcept` have
already been transformed, and the packs referenced within have been
expanded. Only `RebuildLambdaInfo` needs to add the expanded captures to
the scope, without requiring `addInstantiatedCapturesToScope` from
`LambdaScopeForCallOperatorInstantiationRAII`.

### Considerations

An alternative approach could involve adding a data structure within the
lambda to record the expanded size of the `init capture` pack. However,
this would increase the lambda's size and require extensive
modifications.

This PR is a prerequisite for implmenting
https://github.com/llvm/llvm-project/issues/61426

* [mlir] Verifier: steal bit to track seen instead of set. (#102626)

Tracking a set containing every block and operation visited can become
very expensive and is unnecessary.

Co-authored-by: Will Dietz <w@wdtz.org>

* [Arm][AArch64][Clang] Respect function's branch protection attributes. (#101978)

Default attributes assigned to all functions according to the command
line parameters. Some functions might have their own attributes and we
need to set or remove attributes accordingly.
Tests are updated to test this scenarios too.

* [AMDGPU][AsmParser][NFC] Remove a misleading comment. (#102604)

The work of ParseRegularReg() should remain to be parsing the register
as it was specified, and not to try translate it to anything else.

It's up to operand predicates to decide on what is and is not an
acceptable register for an operand, including considering its expected
register class, and for the rest of the AsmParser infrastructure to
handle it respectively from there on.

* [MLIR][DLTI][Transform] Introduce transform.dlti.query (#101561)

This transform op makes it possible to query attributes associated to IR
by means of the DLTI dialect.

The op takes both a `key` and a target `op` to perform the query at.
Facility functions automatically find the closest ancestor op which
defines the appropriate DLTI interface or has an attribute implementing
a DLTI interface. By default the lookup uses the data layout interfaces
of DLTI. If the optional `device` parameter is provided, the lookup
happens with respect to the interfaces for TargetSystemSpec and
TargetDeviceSpec.

This op uses new free-standing functions in the `dlti` namespace to not
only look up specifications via the `DataLayoutSpecOpInterface` and on
`ModuleOp`s but also on any ancestor op that has an appropriate DLTI
attribute.

* [llvm] Construct SmallVector<SDValue> with ArrayRef (NFC) (#102578)

* [flang][cuda] Force default allocator in device code (#102238)

* [IR] Add method to GlobalVariable to change type of initializer. (#102553)

With opaque pointers, nothing directly uses the value type, so we can
mutate it if we want. This avoid doing a complicated RAUW dance.

* OpenMPOpt: Remove dead include

* [mlir][bazel] add bazel rule for DLTITransformOps

* [mlir][vector][test] Split tests from vector-transfer-flatten.mlir (#102584)

Move tests that exercise DropUnitDimFromElementwiseOps and
DropUnitDimsFromTransposeOp to a dedicated file.

While these patterns are collected under populateFlattenVectorTransferPatterns
(and are tested via -test-vector-transfer-flatten-patterns), they can actually
be tested without the xfer Ops, and hence the split.

Note, this is mostly just moving tests from one file to another. The only real
change is the removal of the following check-lines:

```mlir
//   CHECK-128B-NOT:   memref.collapse_shape
```

These were added specifically to check the "flattening" logic (which introduces
`memref.collapse_shape`). However, these tests were never meant to test that
logic (in fact, that's the reason I am moving them to a different file) and
hence are being removed as copy&paste errors.

I also removed the following TODO:

```mlir
/// TODO: Potential duplication with tests from:
///   * "vector-dropleadunitdim-transforms.mlir"
///   * "vector-transfer-drop-unit-dims-patterns.mlir"
```
I've checked what patterns are triggered in those test files and neither
DropUnitDimFromElementwiseOps nor DropUnitDimsFromTransposeOp does.

* [X86] pr57673.ll - generate MIR test checks

* Revert "[MLIR][DLTI][Transform] Introduce transform.dlti.query (#101561)"

This reverts commit 8f21ff9bd89fb7c8bbfdc4426b65dcd9ababf3ce.

Crashed CI builds

* [msan] Support vst{2,3,4}_lane instructions (#101215)

This generalizes MSan's Arm NEON vst support, to include the
lane-specific variants.

This also updates the test from
https://github.com/llvm/llvm-project/pull/100645.

* [mlir][bazel] revert bazel rule change for DLTITransformOps

* [libc][math][c23] Add fadd{l,f128} C23 math functions (#102531)

Co-authored-by: OverMighty <its.overmighty@gmail.com>

* [AMDGPU] Move `AMDGPUAttributorPass` to full LTO post link stage (#102086)

Currently `AMDGPUAttributorPass` is registered in default optimizer
pipeline.
This will allow the pass to run in default pipeline as well as at
thinLTO post
link stage. However, it will not run in full LTO post link stage. This
patch
moves it to full LTO.

* [asan] Switch allocator to dynamic base address (#98511)

This ports a fix from memprof (https://github.com/llvm/llvm-project/pull/98510), which has a shadow mapping that is similar to ASan (8 bytes of shadow memory per 64 bytes of app memory). This patch changes the allocator to dynamically choose a base address, as suggested by Vitaly for memprof. This simplifies ASan's #ifdef's and avoids potential conflict in the event that ASan were to switch to a dynamic shadow offset in the future [1].

[1] Since shadow memory is mapped before the allocator is mapped:
- dynamic shadow and fixed allocator (old memprof): could fail if
"unlucky" (e.g., https://lab.llvm.org/buildbot/#/builders/66/builds/1361/steps/17/logs/stdio)
- dynamic shadow and dynamic allocator (HWASan; current memprof): always works
- fixed shadow and fixed allocator (current ASan): always works, if
constants are carefully chosen
- fixed shadow and dynamic allocator (ASan with this patch): always works

* [Clang] Add env var for nvptx-arch/amdgpu-arch timeout (#102521)

When working on very busy systems, check-offload frequently fails many
tests with this diagnostic:

```
clang: error: cannot determine amdgcn architecture: /tmp/llvm/build/bin/amdgpu-arch: Child timed out: ; consider passing it via '-march'
```

This patch accepts the environment variable
`CLANG_TOOLCHAIN_PROGRAM_TIMEOUT` to set the timeout. It also increases
the timeout from 10 to 60 seconds.

* [MIPS] Fix missing ANDI optimization (#97689)

1. Add MipsPat to optimize (andi (srl (truncate i64 $1), x), y) to (andi
(truncate (dsrl i64 $1, x)), y).
2. Add MipsPat to optimize (ext (truncate i64 $1), x, y) to (truncate
(dext i64 $1, x, y)).

The assembly result is the same as gcc.

Fixes https://github.com/llvm/llvm-project/issues/42826

* [scudo] Separated committed and decommitted entries. (#101409)

Initially, the LRU list stored all mapped entries with no distinction
between the committed (non-madvise()'d) entries and decommitted
(madvise()'d) entries. Now these two types of entries re separated into
two lists, allowing future cache logic to branch depending on whether or
not entries are committed or decommitted. Furthermore, the retrieval
algorithm will prioritize committed entries over decommitted entries.
Specifically, committed entries that satisfy the MaxUnusedCachePages
requirement are retrieved before optimal-fit, decommitted entries.

This commit addresses the compiler errors raised
[here](https://github.com/llvm/llvm-project/pull/100818#issuecomment-2261043261).

* Suppress spurious warnings due to R_RISCV_SET_ULEB128

llvm-objdump -S issues unnecessary warnings for RISC-V relocatable files
containing .debug_loclists or .debug_rnglists sections with ULEB128
relocations. This occurred because `DWARFObjInMemory` verifies support for all
relocation types, triggering warnings for unsupported ones.

```
% llvm-objdump -S a.o
...
0000000000000000 <foo>:
warning: failed to compute relocation: R_RISCV_SUB_ULEB128, Invalid data was encountered while parsing the file
warning: failed to compute relocation: R_RISCV_SET_ULEB128, Invalid data was encountered while parsing the file
...
```

This change fixes #101544 by declaring support for the two ULEB128
relocation types, silencing the spurious warnings.

---

In DWARF v5 builds, DW_LLE_offset_pair/DW_RLE_offset_pair might be
generated in .debug_loclists/.debug_rnglists with ULEB128 relocations.
They are only read by llvm-dwarfdump to dump section content and verbose
DW_AT_location/DW_AT_ranges output for relocatable files.

The DebugInfoDWARF user (e.g. DWARFDebugRnglists.cpp) calls
`Data.getULEB128` without checking the ULEB128 relocations, as the
unrelocated value holds meaning (refer to the assembler
implementation https://reviews.llvm.org/D157657). This differs from
`.quad .Lfoo`, which requires relocation reading (e.g.
https://reviews.llvm.org/D74404).

Pull Request: https://github.com/llvm/llvm-project/pull/101607

* [GlobalIsel] Combine G_ADD and G_SUB with constants (#97771)

* [libc][newhdrgen]sorted function names in yaml (#102544)

* [NVPTX] support switch statement with brx.idx (reland) (#102550)

Add custom lowering for `BR_JT` DAG nodes to the `brx.idx` PTX
instruction ([PTX ISA 9.7.13.4. Control Flow Instructions: brx.idx]
(https://docs.nvidia.com/cuda/parallel-thread-execution/#control-flow-instructions-brx-idx)).
Depending on the heuristics in DAG selection, `switch` statements may
now be lowered using `brx.idx`.

Note: this fixes the previous issue in #102400 by adding the isBarrier
attribute to BRX_END

* [RISCV] Move PseudoVSET(I)VLI expansion to use PseudoInstExpansion. (#102496)

Instead of expanding in RISCVExpandPseudoInsts, expand during
MachineInstr to MCInst lowering.

We weren't doing anything in expansion other than copying operands.

* [RISCV] Remove riscv-experimental-rv64-legal-i32. (#102509)

This has received no development work in a while and is slowly bit
rotting as new extensions are added.

At the moment, I don't think this is viable without adding a new
invariant that 32 bit values are always in sign extended form like
Mips64 does. We are very dependent on computeKnownBits and
ComputeNumSignBits in SelectionDAG to remove sign extends created for
ABI reasons. If we can't propagate sign bit information through 64-bit
values in SelectionDAG, we can't effectively clean up those extends.

* [clang] Wire -fptrauth-returns to "ptrauth-returns" fn attribute. (#102416)

We already ended up with -fptrauth-returns, the feature macro, the lang
opt, and the actual backend lowering.

The only part left is threading it all through PointerAuthOptions, to
drive the addition of the "ptrauth-returns" attribute to generated
functions.
While there, do minor cleanup on ptrauth-function-attributes.c.

This also adds ptrauth_key_return_address to ptrauth.h.

* Return available function types for BindingDecls. (#102196)

Only return nullptr when we don't have an available QualType.

* [RISCV][GISel] Add missing tests for G_CTLZ/CTTZ instruction selection. NFC

* Revert "[AMDGPU] Move `AMDGPUAttributorPass` to full LTO post link stage (#102086)"

This reverts commit 2fe61a5acf272d6826352ef72f47196b01003fc5.

* [LLVM][rtsan] rtsan transform to preserve CFGAnalyses (#102651)

Follow on to #101232, as suggested in the comments, narrow the scope of
the preserved analyses.

* [clang] Implement -fptrauth-auth-traps. (#102417)

This provides -fptrauth-auth-traps, which at the frontend level only
controls the addition of the "ptrauth-auth-traps" function attribute.

The attribute in turn controls various aspects of backend codegen, by
providing the guarantee that every "auth" operation generated will trap
on failure.

This can either be delegated to the hardware (if AArch64 FPAC is known
to be available), in which case this attribute doesn't change codegen.
Otherwise, if FPAC isn't available, this asks the backend to emit
additional instructions to check and trap on auth failure.

* [libc] Use cpp::numeric_limits in preference to C23 <limits.h> macros (#102665)

This updates some code to consistently use cpp::numeric_limits,
the src/__support polyfill for std::numeric_limits, rather than
the C <limits.h> macros.  This is in keeping with the general
C++-oriented style in libc code, and also sidesteps issues about
the new C23 *_WIDTH macros that the compiler-provided header does
not define outside C23 mode.

Bug: https://issues.fuchsia.dev/358196552

* [lldb] Move definition of SBSaveCoreOptions dtor out of header (#102539)

This class is technically not usable in its current state. When you use
it in a simple C++ project, your compiler will complain about an
incomplete definition of SaveCoreOptions. Normally this isn't a problem,
other classes in the SBAPI do this. The difference is that
SBSaveCoreOptions has a default destructor in the header, so the
compiler will attempt to generate the code for the destructor with an
incomplete definition of the impl type.

All methods for every class, including constructors and destructors,
must have a separate implementation not in a header.

* [mlir][ODS] Consistent `cppType` / `cppClassName` usage (#102657)

Make sure that the usage of `cppType` and `cppClassName` of type and
attribute definitions/constraints is consistent in TableGen.

- `cppClassName`: The C++ class name of the type or attribute.
- `cppType`: The fully qualified C++ class name: C++ namespace and C++
class name.

Basically, we should always use the fully qualified C++ class name for
parameter types, return types or template arguments.

Also some minor cleanups.

Fixes #57279.

* [LTO] enable `ObjCARCContractPass` only on optimized build  (#101114)

\#92331 tried to make `ObjCARCContractPass` by default, but it caused a
regression on O0 builds and was reverted.
This patch trys to bring that back by:

1. reverts the
[revert](https://github.com/llvm/llvm-project/commit/1579e9ca9ce17364963861517fecf13b00fe4d8a).
2. `createObjCARCContractPass` only on optimized builds.

Tests are updated to refelect the changes. Specifically, all `O0` tests
should not include `ObjCARCContractPass`

Signed-off-by: Peter Rong <PeterRong@meta.com>

* [mlir][ODS] Verify type constraints in Types and Attributes (#102326)

When a type/attribute is defined in TableGen, a type constraint can be
used for parameters, but the type constraint verification was missing.

Example:
```
def TestTypeVerification : Test_Type<"TestTypeVerification"> {
  let parameters = (ins AnyTypeOf<[I16, I32]>:$param);
  // ...
}
```

No verification code was generated to ensure that `$param` is I16 or
I32.

When type constraints a present, a new method will generated for types
and attributes: `verifyInvariantsImpl`. (The naming is similar to op
verifiers.) The user-provided verifier is called `verify` (no change).
There is now a new entry point to type/attribute verification:
`verifyInvariants`. This function calls both `verifyInvariantsImpl` and
`verify`. If neither of those two verifications are present, the
`verifyInvariants` function is not generated.

When a type/attribute is not defined in TableGen, but a verifier is
needed, users can implement the `verifyInvariants` function. (This
function was previously called `verify`.)

Note for LLVM integration: If you have an attribute/type that is not
defined in TableGen (i.e., just C++), you have to rename the
verification function from `verify` to `verifyInvariants`. (Most
attributes/types have no verification, in which case there is nothing to
do.)

Depends on #102657.

* [libc] Fix use of cpp::numeric_limits<...>::digits (#102674)

The previous change replaced INT_WIDTH with
cpp::numberic_limits<int>::digits, but these don't have the same
value.  While INT_WIDTH == UINT_WIDTH, not so for ::digits, so
use cpp::numberic_limits<unsigned int>::digits et al instead for
the intended effects.

Bug: https://issues.fuchsia.dev/358196552

* [SandboxIR] Implement the InsertElementInst class (#102404)

Heavily based on work by @vporpo.

* [flang][cuda] Convert cuf.alloc for box to fir.alloca in device context (#102662)

In device context managed memory is not available so it makes no sense
to allocate the descriptor using it. Fall back to fir.alloca as it is
handled well in device code.
cuf.free is just dropped.

* [libc] Clean up remaining use of *_WIDTH macros in printf (#102679)

The previous change missed the second spot doing the same thing.

Bug: https://issues.fuchsia.dev/358196552

* [flang][cuda] Fix lib dependency

* [mlir][bazel] add missing td dependency in mlir-tblgen test

* [mlir] Add support for parsing nested PassPipelineOptions (#101118)

- Added a default parsing implementation to `PassOptions` to allow
`Option`/`ListOption` to wrap PassOption objects. This is helpful when
creating meta-pipelines (pass pipelines composed of pass pipelines).
- Updated `ListOption` printing to enable round-tripping the output of
`dump-pass-pipeline` back into `mlir-opt` for more complex structures.

* [NVPTX][NFC] Update tests to use bfloat type (#101493)

Intrinsics are defined with a bfloat type as of commit
250f2bb2c6a9c288faeb821585e9394697c561d8, not i16 and i32 storage types.
As such declarations are no longer needed once the correct types are
used.

* [mlir][bazel] remove extra blanks in mlir-tblgen test

* [SandboxIR] Clean up tracking code with the help of emplaceIfTracking() (#102406)

This patch introduces Tracker::emplaceIfTracking(), a wrapper of Tracker::track() that will conditionally create the change object if tracking is enabled.
This patch also removes the `Parent` member field of `IRChangeBase`.

* [CodeGen][NFCI] Don't re-implement parts of ASTContext::getIntWidth (#101765)

ASTContext::getIntWidth returns 1 if isBooleanType(), and falls back on
getTypeSize in the default case, which itself just returns the Width
from getTypeInfo's returned struct, so can be used in all cases here,
not just for _BitInt types.

* [UnitTests] Convert a test to use opaque pointers (#102668)

* [compiler-rt][NFC] Replace environment variable with %t (#102197)

Certain tests within the compiler-rt subproject encountered "command not
found" errors when using lit's internal shell, particularly when trying
to use the `DIR` environment variable. When checking with the command
`LIT_USE_INTERNAL_SHELL=1 ninja check-compiler-rt`, I encountered the
following error:
```
********************
Testing: 
FAIL: SanitizerCommon-ubsan-i386-Linux :: sanitizer_coverage_trace_pc_guard-init.cpp (146 of 9570)
******************** TEST 'SanitizerCommon-ubsan-i386-Linux :: sanitizer_coverage_trace_pc_guard-init.cpp' FAILED ********************
Exit Code: 127

Command Output (stdout):
--
# RUN: at line 5
DIR=/usr/local/google/home/harinidonthula/llvm-project/build/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_trace_pc_guard-init.cpp.tmp_workdir
# executed command: DIR=/usr/local/google/home/harinidonthula/llvm-project/build/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_trace_pc_guard-init.cpp.tmp_workdir
# .---command stderr------------
# | 'DIR=/usr/local/google/home/harinidonthula/llvm-project/build/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/ubsan-i386-Linux/Output/sanitizer_coverage_trace_pc_guard-init.cpp.tmp_workdir': command not found
# `-----------------------------
# error: command failed with exit status: 127
```
In this patch, I resolved these issues by removing the use of the `DIR`
environment variable. Instead, the tests now directly utilize
`%t_workdir` for managing temporary directories. Additionally, I
simplified the tests by embedding the clang command arguments directly
into the test scripts, which avoids complications with environment
variable expansion under lit's internal shell.

This fix ensures that the tests run smoothly with lit's internal shell
and prevents the "command not found" errors, improving the reliability
of the test suite when executed in this environment.

fixes: #102395
[link to
RFC](https://discourse.llvm.org/t/rfc-enabling-the-lit-internal-shell-by-default/80179)

* [TargetLowering] Handle vector types in expandFixedPointMul (#102635)

In TargetLowering::expandFixedPointMul when expanding fixed point
multiplication, and when using a widened MUL as strategy for the
lowering, there was a bug resulting in assertion failures like this:
   Assertion `VT.isVector() == N1.getValueType().isVector() &&
   "SIGN_EXTEND result type type should be vector iff the operand "
   "type is vector!"' failed.

Problem was that we did not consider that VT could be a vector type
when setting up the WideVT. This patch should fix that bug.

* [libc] Fix CFP long double and add tests (#102660)

The previous patch removing the fenv requirement for str to float had an
error that got missed due to a lack of tests. This patch fixes the issue
and adds tests, as well as updating the existing tests.

* [libc]  Moved range_reduction_double ifdef statement (#102659)

Sin/cos/tan fuzzers were having issues with ONE_TWENTY_EIGHT_OVER_PI, so
the LIBC_TARGET_CPU_HAS_FMA ifdef statement got moved from the
sin/cos/tan .cpp files to the range_reduction_double_common.cpp file.

* [SandboxIR][NFC] Use Tracker.emplaceIfTracking()

This patch replaces some of the remaining uses of Tracker::track() to
Tracker::emplaceIfTracking().

* [nsan] Make #include more conventional

* [ThinLTO]Clean up 'import-assume-unique-local' flag. (#102424)

While manual compiles can specify full file paths and build automation
tools use full, unique paths in practice, it's not clear whether it's a
general good practice to enforce full paths (fail a build if relative
paths are used).

`NumDefs == 1` condition [1] should hold true for many internal-linkage
vtables as long as full paths are indeed used to salvage the marginal
performance when local-linkage vtables are imported due to indirect
reference.
https://github.com/llvm/llvm-project/pull/100448#discussion_r1692068402
has more details.

[1]
https://github.com/llvm/llvm-project/pull/100448/files#diff-e7cb370fee46f0f773f2b5429dfab36b75126d3909ae98ee87ff3d0e3f75c6e9R215

* [SandboxIR][NFC] SingleLLVMInstructionImpl class (#102687)

This patch introduces the SingleLLVMInstructionImpl class which
implements a couple of functions shared across all Instructions that map
to a single LLVM Instructions. This avoids code replication.

* [AMDGPU][Attributor] Add a pass parameter `closed-world` for AMDGPUAttributor pass (#101760)

* FIX: Remove unused private data member `HasWholeProgramVisibility` in `AMDGPU.h`

* AMDGPU/NewPM: Port SIAnnotateControlFlow to new pass manager (#102653)

Does not yet add it to the pass pipeline. Somehow it causes
2 tests to assert in SelectionDAG, in functions without any
control flow.

* AMDGPU/NewPM: Port AMDGPUAnnotateUniformValues to new pass manager (#102654)

* AMDGPU/NewPM: Port SILowerI1Copies to new pass manager (#102663)

* [nsan] GetShadowAddrFor: Use (const) void * to decrease the number of casts

* [msan] Use namespace qualifier. NFC

nsan will port msan_allocator.cpp and msan_thread.cpp. Clean up the two
files first.

* [llvm] Construct SmallVector with ArrayRef (NFC) (#102712)

Without this patch, the constructor arguments come from
SmallVectorImpl, not ArrayRef.  This patch switches them to ArrayRef
so that we can construct SmallVector with a single argument.

Note that LLVM Programmer’s Manual prefers ArrayRef to SmallVectorImpl
for flexibility.

* [AArch64] Construct SmallVector<SDValue> with ArrayRef (NFC) (#102713)

* [mlir] Use llvm::is_contained (NFC) (#102714)

* AMDGPU/NewPM: Initialize class member

After #102654

* [TargetLowering] Use APInt::isSubsetOf to simplify an expression. NFC

* [clang] Use llvm::is_contained (NFC) (#102720)

* [llvm-objdump,test] Fix source-interleave.ll when /proc/self/cwd is unavailable

e.g. on Mach-O

* [clang][Interp] Start implementing unions and changing the active member (#102723)

* [libc++] re-enable clang-tidy in the CI and fix any issues (#102658)

It looks like we've accidentally disabled clang-tidy in the CI. This
re-enables it and fixes the issues accumulated while it was disabled.

* [clang][Interp] Improve "in call to" call argument printing (#102735)

Always go through toAPValue() first and pretty-print that. In the
future, I think we could get rid of the individual toDiagnosticString()
implementations. This way we also get the correct printing for floats.

* [clang][Interp] Do not call dtors of union members (#102739)

* [clang][Interp] Handle nested unions (#102743)

* [Polly] Use separate DT/LI/SE for outlined subfn. NFC. (#102460)

DominatorTree, LoopInfo, and ScalarEvolution are function-level analyses
that expect to be called only on instructions and basic blocks of the
function they were original created for. When Polly outlined a parallel
loop body into a separate function, it reused the same analyses seemed
to work until new checks to be added in #101198.

This patch creates new analyses for the subfunctions. GenDT, GenLI, and
GenSE now refer to the analyses of the current region of code. Outside
of an outlined function, they refer to the same analysis as used for the
SCoP, but are substituted within an outlined function.

Additionally to the cross-function queries of DT/LI/SE, we must not
create SCEVs that refer to a mix of expressions for old and generated
values. Currently, SCEVs themselves do not "remember" which
ScalarEvolution analysis they were created for, but mixing them is just
as unexpected as using DT/LI across function boundaries. Hence
`SCEVLoopAddRecRewriter` was combined into `ScopExpander`.
`SCEVLoopAddRecRewriter` only replaced induction variables but left
SCEVUnknowns to reference the old function. `SCEVParameterRewriter`
would have done so but its job was effectively superseded by
`ScopExpander`, and now also `SCEVLoopAddRecRewriter`. Some issues
persist put marked with a FIXME in the code. Changing them would
possibly cause this patch to be not NFC anymore.

* [libc] Fix `scablnf16` using `float16` instead of `_Float16`

* [LLD][NFC] Don't use x64 import library for x86 target in safeseh-md tests. (#102736)

Use llvm-lib to generate input library instead of a binary blob.

* [LLD][NFC] Make InputFile::getMachineType const. (#102737)

* [mlir][vector] Use `DenseI64ArrayAttr` in vector.multi_reduction (#102637)

This prevents some unnecessary conversions to/from int64_t and
IntegerAttr.

* [clang][Interp] Only zero-init first union member (#102744)

Zero-initializing all of them accidentally left the last member active.
Only initialize the first one.

* [Clang][Sema][OpenMP] Allow `thread_limit` to accept multiple expressions (#102715)

* [clang][Interp] Ignore unnamed bitfields when zeroing records (#102749)

Including unions, where this is more important.

* [clang][Interp] Fix activating via indirect field initializers (#102753)

Pointer::activate() propagates up anyway, so that is handled. But we
need to call activate() in any case since the parent might not be a
union, but the activate() is still needed. Always call it and hope that
the InUnion flag takes care of the potential performance problems.

* [NFC] Fix TableGen include guards to match paths (#102746)

- Fix include guards for headers under utils/TableGen to match their
paths.

* [GISel] Handle more opcodes in constant_fold_binop (#102640)

Update the list of opcodes handled by the constant_fold_binop combine to
match the ones that are folded in CSEMIRBuilder::buildInstr.

* [Support] Assert that DomTree nodes share parent (#101198)

A dominance query of a block that is in a different function is
ill-defined, so assert that getNode() is only called for blocks that are
in the same function.

There are two cases, where this behavior did occur. LoopFuse didn't
explicitly do this, but didn't invalidate the SCEV block dispositions,
leaving dangling pointers to free'ed basic blocks behind, causing
use-after-free. We do, however, want to be able to dereference basic
blocks inside the dominator tree, so that we can refer to them by a
number stored inside the basic block.

* [Serialization] Fix a warning

This patch fixes:

  clang/lib/Serialization/ASTReader.cpp:11484:13: error: unused
  variable '_' [-Werror,-Wunused-variable]

* [Serialization] Use traditional for loops (NFC) (#102761)

The use of _ requires either:

- (void)_ and curly braces, or
- [[maybe_unused]].

For simple repetitions like these, we can use traditional for loops
for readable warning-free code.

* [clang][Interp] Handle union copy/move ctors (#102762)

They don't have a body and we need to implement them ourselves. Use the
Memcpy op to do that.

* [sanitizer,test] Restore -fno-sized-deallocation coverage

-fsized-deallocation was recently made the default for C++17 onwards
(#90373). While here, remove unneeded -faligned-allocation.

* [dfsan] Use namespace qualifier and internalize accidentally exported functions. NFC

* [Utils] Add new merge-release-pr.py script. (#101630)

This script helps the release managers merge backport PR's.

It does the following things:

* Validate the PR, checks approval, target branch and many other things.
* Rebases the PR
* Checkout the PR locally
* Pushes the PR to the release branch
* Deletes the local branch

I have found the script very helpful to merge the PR's.

* [DFAJumpThreading] Rewrite the way paths are enumerated (#96127)

I tried to add a limit to number of blocks visited in the paths()
function but even with a very high limit the transformation coverage was
being reduced.

After looking at the code it seemed that the function was trying to
create paths of the form
`SwitchBB...DeterminatorBB...SwitchPredecessor`. This is inefficient
because a lot of nodes in those paths (nodes before DeterminatorBB)
would be irrelevant to the optimization. We only care about paths of the
form `DeterminatorBB_Pred DeterminatorBB...SwitchBB`. This weeds out a
lot of visited nodes.

In this patch I have added a hard limit to the number of nodes visited
and changed the algorithm for path calculation. Primarily I am
traversing the use-def chain for the PHI nodes that define the state. If
we have a hole in the use-def chain (no immediate predecessors) then I
call the paths() function.

I also had to the change the select instruction unfolding code to insert
redundant one input PHIs to allow the use of the use-def chain in
calculating the paths.

The test suite coverage with this patch (including a limit on nodes
visited) is as follows:

    Geomean diff:
      dfa-jump-threading.NumTransforms: +13.4%
      dfa-jump-threading.NumCloned: +34.1%
      dfa-jump-threading.NumPaths: -80.7%

Compile time effect vs baseline (pass enabled by default) is mostly
positive:
https://llvm-compile-time-tracker.com/compare.php?from=ad8705fda25f64dcfeb6264ac4d6bac36bee91ab&to=5a3af6ce7e852f0736f706b4a8663efad5bce6ea&stat=instructions:u

Change-Id: I0fba9e0f8aa079706f633089a8ccd4ecf57547ed

* [dfsan] Use namespace qualifier. NFC

* [Clang][CodeGen] Fix bad codegen when building Clang with latest MSVC (#102681)

Before this PR, when using the latest MSVC `Microsoft (R) C/C++
Optimizing Compiler Version 19.40.33813 for x64` one of the Clang unit
test used to fail: `CodeGenObjC/gnustep2-direct-method.m`, see full
failure log:
[here](https://github.com/llvm/llvm-project/pull/100517#issuecomment-2266269490).

This PR temporarily shuffles around the code to make the MSVC inliner/
optimizer happy and avoid the bug.

MSVC bug report:
https://developercommunity.visualstudio.com/t/Bad-code-generation-when-building-LLVM-w/10719589?port=1025&fsid=e572244a-cde7-4d75-a73d-9b8cd94204dd

* [clang-format] Add BreakBinaryOperations configuration (#95013)

By default, clang-format packs binary operations, but it may be
desirable to have compound operations be on individual lines instead of
being packed.

This PR adds the option `BreakBinaryOperations` to break up large
compound binary operations to be on one line each.

This applies to all logical and arithmetic/bitwise binary operations

Maybe partially addresses #79487 ?
Closes #58014 
Closes #57280

* [clang-format] Fix a serious bug in `git clang-format -f` (#102629)

With the --force (or -f) option, git-clang-format wipes out input files
excluded by a .clang-format-ignore file if they have unstaged changes.

This patch adds a hidden clang-format option --list-ignored that lists
such excluded files for git-clang-format to filter out.

Fixes #102459.

* [llvm-exegesis][unittests] Also disable SubprocessMemoryTest on SPARC (#102755)

Three `llvm-exegesis` tests
```
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/DefinitionFillsCompletely
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/MultipleDefinitions
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/OneDefinition
```
`FAIL` on Linux/sparc64 like
```
llvm/unittests/tools/llvm-exegesis/X86/SubprocessMemoryTest.cpp:68: Failure
Expected equality of these values:
  SharedMemoryMapping[I]
    Which is: '\0'
  ExpectedValue[I]
    Which is: '\xAA' (170)
```
It seems like this test only works on little-endian hosts: three
sub-tests are already disabled on powerpc and s390x (both big-endian),
and the fourth is additionally guarded against big-endian hosts (making
the other guards unnecessary).

However, since it's not been analyzed if this is really an endianess
issue, this patch disables the whole test on powerpc and s390x as before
adding sparc to the mix.

Tested on `sparc64-unknown-linux-gnu` and `x86_64-pc-linux-gnu`.

* [Analysis] Use llvm::set_is_subset (NFC) (#102766)

* [LegalizeTypes] Use APInt::getLowBitsSet instead of getAllOnes+zext. NFC

* Revert "[Support] Assert that DomTree nodes share parent" (#102780)

Reverts llvm/llvm-project#101198

Breaks multiple bots:
https://lab.llvm.org/buildbot/#/builders/72/builds/2103
https://lab.llvm.org/buildbot/#/builders/164/builds/1909
https://lab.llvm.org/buildbot/#/builders/66/builds/2706

* Revert "[clang][Interp] Improve "in call to" call argument printing" (#102785)

Reverts llvm/llvm-project#102735

Breaks https://lab.llvm.org/buildbot/#/builders/52/builds/1496

* [RISCV] Add IR tests for bf16 vmerge and vmv.v.v. NFC (#102775)

* [InstCombine] Use llvm::set_is_subset (NFC) (#102778)

* [profgen][NFC] Pass parameter as const_ref

Pass `ProbeNode` parameter of `trackInlineesOptimizedAway` as const
reference.

Reviewers: wlei-llvm, WenleiHe

Reviewed By: WenleiHe

Pull Request: https://github.com/llvm/llvm-project/pull/102787

* [MC][profgen][NFC] Expand auto for MCDecodedPseudoProbe

Expand autos in select places in preparation to #102789.

Reviewers: dcci, maksfb, WenleiHe, rafaelauler, ayermolo, wlei-llvm

Reviewed By: WenleiHe, wlei-llvm

Pull Request: https://github.com/llvm/llvm-project/pull/102788

* [Target] Construct SmallVector<MachineMemOperand *> with ArrayRef (NFC) (#102779)

* [clang][Interp] Properly adjust instance pointer in virtual calls (#102800)

`getDeclPtr()` will not just return what we want, but in this case a
pointer to the `vu` local variable.

* [clang][Interp][NFC] Add a failing test case (#102801)

* [Docs] Update meetup contact mail address (#99321)

Arnaud is no longer active.

* [NFC][libclang/python] Fix code highlighting in release notes (#102807)

This corrects a release note introduced in #98745

* [VPlan] Move VPWidenLoadRecipe::execute to VPlanRecipes.cpp (NFC).

Move VPWidenLoadRecipe::execute to VPlanRecipes.cpp in line with
other ::execute implementations that don't depend on anything
defined in LoopVectorization.cpp

* AMDGPU: Try to add some more amdgpu-perf-hint tests (#102644)

This test has hardly any test coverage, and no IR tests. Add a few
more tests involving calls, and add some IR checks. This pass needs
a lot of work to improve the test coverage, and to actually use
the cost model instead of making up its own accounting scheme.

* NewPM/AMDGPU: Port AMDGPUPerfHintAnalysis to new pass manager (#102645)

This was much more difficult than I anticipated. The pass is
not in a good state, with poor test coverage. The legacy PM
does seem to be relying on maintaining the map state between
different SCCs, which seems bad. The pass is going out of its
way to avoid putting the attributes it introduces onto non-callee
functions. If it just added them, we could use them directly
instead of relying on the map, I would think.

The NewPM path uses a ModulePass; I'm not sure if we should be
using CGSCC here but there seems to be some missing infrastructure
to support backend defined ones.

* [CI][libclang] Add PR autolabeling for libclang (#102809)

This automatically adds the `clang:as-a-library` label on PRs for the C
and Python bindings and the libclang library

---------

Co-authored-by: Vlad Serebrennikov <serebrennikov.vladislav@gmail.com>

* [clang-tidy] Fix modernize-use-std-format lit test signature (#102759)

My fix for my original fix of issue #92896 in
666d224248707f373577b5b049b5b0229100006c modified the function signature
for fmt::sprintf to more accurately match the real implementation in
libfmt but failed to do the same for absl::StrFormat. The latter fix
applied equally well to absl::StrFormat so it's important that its test
verifies that the bug is fixed too.

* [LV] Collect profitable VFs in ::getBestVF. (NFCI)

Move collectig profitable VFs to ::getBestVF, in preparation for
retiring selectVectorizationFactor.

* [LV] Adjust test for #48188 to use AVX level closer to report.

Update AVX level for https://github.com/llvm/llvm-project/issues/48188
to be closer to the one used in the preproducer.

* [LV] Regenerate check lines in preparation for #99808.

Regenerate check lines for test to avoid unrelated changes in
https://github.com/llvm/llvm-project/pull/99808.

* [llvm] Construct SmallVector with ArrayRef (NFC) (#102799)

* [RFC][GlobalISel] InstructionSelect: Allow arbitrary instruction erasure (#97670)

See https://discourse.llvm.org/t/rfc-globalisel-instructionselect-allow-arbitrary-instruction-erasure

* [gn build] Port d2336fd75cc9

* [GlobalISel] Combiner: Install Observer into MachineFunction

The Combiner doesn't install the Observer into the MachineFunction.
This probably went unnoticed, because MachineFunction::getObserver() is
currently only used in constrainOperandRegClass(), but this might cause
issues down the line.

Pull Request: https://github.com/llvm/llvm-project/pull/102156

* [clang][Interp] Propagate InUnion flag to base classes (#102804)

* [GlobalISel] Don't remove from unfinalized GISelWorkList

Remove a hack from GISelWorkList caused by the Combiner removing
instructions from an unfinalized GISelWorkList during the DCE phase.
This is in preparation for larger changes to the WorkListMaintainer.

Pull Request: https://github.com/llvm/llvm-project/pull/102158

* [LLD][COFF] Validate import library machine type. (#102738)

* [LegalizeTypes][RISCV] Use SExtOrZExtPromotedOperands to promote operands for USUBSAT. (#102781)

It doesn't matter which extend we use to promote the operands. Use
whatever is the most efficient.

The custom handler for RISC-V was using SIGN_EXTEND when the Zbb
extension is enabled so we no longer need that.

* [nsan] Add NsanThread and clear static TLS shadow

On thread creation, asan/hwasan/msan/tsan unpoison the thread stack and
static TLS blocks in case the blocks reuse previously freed memory that
is possibly poisoned. glibc nptl/allocatestack.c allocates thread stack
using a hidden, non-interceptable function.

nsan is similar: the shadow types for the thread stack and static TLS
blocks should be set to unknown, otherwise if the static TLS blocks
reuse previous shadow memory, and `*p += x` instead of `*p = x` is used
for the first assignment, the mismatching user and shadow memory could
lead to false positives.

NsanThread is also needed by the next patch to use the sanitizer
allocator.

Pull Request: https://github.com/llvm/llvm-project/pull/102718

* Bump CI container clang version to 18.1.8 (#102803)

This patch bumps the CI container LLVM version to 18.1.8. This should've
been bumped a while ago, but I just noticed that it was out of date.
This also allows us to drop a patch that we manually had to add as it is
by default included in v18.

* [mlir][affine] Fix crash in mlir::affine::getForInductionVarOwner() (#102625)

This change fixes a crash when getOwner()->getParent() is a nullptr

* [LV] Support generating masks for switch terminators. (#99808)

Update createEdgeMask to created masks where the terminator in Src is a
switch. We need to handle 2 separate cases:

1. Dst is not the default desintation. Dst is reached if any of the
cases with destination == Dst are taken. Join the conditions for each
case where destination == Dst using a logical OR.
2. Dst is the default destination. Dst is reached if none of the cases
with destination != Dst are taken. Join the conditions for each case
where the destination is != Dst using a logical OR and negate it.

Edge masks are created for every destination of cases and/or 
default when requesting a mask where the source is a switch.

Fixes https://github.com/llvm/llvm-project/issues/48188.

PR: https://github.com/llvm/llvm-project/pull/99808

* Make msan_allocator.cpp more conventional. NFC

nsan will port msan_allocator.cpp.

* [msan] Remove unneeded nullness CHECK

The pointer will immediate be dereferenced.

* [lldb] Construct SmallVector with ArrayRef (NFC) (#102793)

* [LV] Handle SwitchInst in ::isPredicatedInst.

After f0df4fbd0c7b, isPredicatedInst needs to handle SwitchInst as well.
Handle it the same as BranchInst.

This fixes a crash in the newly added test and improves the results for
one of the existing tests in predicate-switch.ll

Should fix https://lab.llvm.org/buildbot/#/builders/113/builds/2099.

* [CMake] Followup to #102396 and restore old DynamicLibrary symbols behavior (#102671)

Followup to #102138 and #102396, restore more old behavior to fix
ppc64-aix bot.

* [NFC] Eliminate top-level "using namespace" from some headers. (#102751)

- Eliminate top-level "using namespace" from some headers.

* libc: Remove `extern "C"` from main declarations (#102825)

This is invalid in C++, and clang recently started warning on it as of
#101853

* Revert "libc: Remove `extern "C"` from main declarations" (#102827)

Reverts llvm/llvm-project#102825

* [rtsan] Make sure rtsan gets initialized on mac (#100188)

Intermittently on my mac I was getting the same nullptr crash in dlsym.

We need to make sure rtsan gets initialized on mac between when the
binary starts running, and the first intercepted function is called.
Until that point we should use the DlsymAllocator.

* [lldb] Silence warning

This fixes:
```
[6831/7617] Building CXX object
tools\lldb\source\Target\CMakeFiles\lldbTarget.dir\ThreadPlanSingleThreadTimeout.cpp.obj
C:\src\git\llvm-project\lldb\source\Target\ThreadPlanSingleThreadTimeout.cpp(66)
: warning C4715:
'lldb_private::ThreadPlanSingleThreadTimeout::StateToString': not all
control paths return a value
```

* [openmp][runtime] Silence warnings

This fixes several of those when building with MSVC on Windows:
```
[3625/7617] Building CXX object
projects\openmp\runtime\src\CMakeFiles\omp.dir\kmp_affinity.cpp.obj
C:\src\git\llvm-project\openmp\runtime\src\kmp_affinity.cpp(2637):
warning C4062: enumerator 'KMP_HW_UNKNOWN' in switch of enum 'kmp_hw_t'
is not handled
C:\src\git\llvm-project\openmp\runtime\src\kmp.h(628): note: see
declaration of 'kmp_hw_t'
```

* [compiler-rt] Silence warnings

This fixes a few of these warnings, when building with Clang ToT on
Windows:
```
[622/7618] Building CXX object
projects\compiler-rt\lib\sanitizer_common\CMakeFiles\RTSanitizerCommonSymbolizer.x86_64.dir\sanitizer_symbolizer_win.cpp.obj
C:\src\git\llvm-project\compiler-rt\lib\sanitizer_common\sanitizer_symbolizer_win.cpp(74,3):
warning: cast from 'FARPROC' (aka 'long long (*)()') to
'decltype(::StackWalk64) *' (aka 'int (*)(unsigned long, void *, void *,
_tagSTACKFRAME64 *, void *, int (*)(void *, unsigned long long, void *,
unsigned long, unsigned long *), void *(*)(void *, unsigned long long),
unsigned long long (*)(void *, unsigned long long), unsigned long long
(*)(void *, void *, _tagADDRESS64 *))') converts to incompatible
function type [-Wcast-function-type-mismatch]
```

This is similar to https://github.com/llvm/llvm-project/pull/97905

* [lldb] Silence warning

This fixes the following warning, when building with Clang ToT on
Windows:
```
[6668/7618] Building CXX object
tools\lldb\source\Plugins\Process\Windows\Common\CMakeFiles\lldbPluginProcessWindowsCommon.dir\TargetThreadWindows.cpp.obj
C:\src\git\llvm-project\lldb\source\Plugins\Process\Windows\Common\TargetThreadWindows.cpp(182,22):
warning: cast from 'FARPROC' (aka 'long long (*)()') to
'GetThreadDescriptionFunctionPtr' (aka 'long (*)(void *, wchar_t **)')
converts to incompatible function type [-Wcast-function-type-mismatch]
```

This is similar to: https://github.com/llvm/llvm-project/pull/97905

* [lldb] Fix dangling expression

This fixes the following:
```
[6603/7618] Building CXX object
tools\lldb\source\Plugins\ObjectFile\PECOFF\CMakeFiles\lldbPluginObjectFilePECOFF.dir\WindowsMiniDump.cpp.obj
C:\src\git\llvm-project\lldb\source\Plugins\ObjectFile\PECOFF\WindowsMiniDump.cpp(29,25):
warning: object backing the pointer will be destroyed at the end of the
full-expression [-Wdangling-gsl]
   29 |   const auto &outfile = core_options.GetOutputFile().value();
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
	 1 warning generated.
```

* [builtins] Rename sysauxv to getauxval to reflect the function called. NFCI (#102796)

* [mlir] Fix build after ec50f5828f25 (#101021)

This commit fixes what appears to be invalid C++ -- a lambda capturing a
variable before it is declared. The code compiles with GCC and Clang but
not MSVC.

* [LoopVectorize][X86][AMDLibm] Add Missing AMD LibM trig vector intrinsics (#101125)

Adding the following linked to their docs:
-
[amd_vrs16_acosf](https://github.com/amd/aocl-libm-ose/blob/9c0b67293ba01e509a6308247d82a8f1adfbbc67/scripts/libalm.def#L221)
-
[amd_vrd2_cosh](https://github.com/amd/aocl-libm-ose/blob/9c0b67293ba01e509a6308247d82a8f1adfbbc67/scripts/libalm.def#L124)
-
[amd_vrs16_tanhf](https://github.com/amd/aocl-libm-ose/blob/9c0b67293ba01e509a6308247d82a8f1adfbbc67/scripts/libalm.def#L224)

* [NFC] [C++20] [Modules] Adjust the implementation of wasDeclEmitted to make it more clear

The preivous implementation of wasDeclEmitted may be confusing that
why we need to filter the declaration not from modules. Now adjust the
implementations to avoid the problems.

* Revert "[CMake] Followup to #102396 and restore old DynamicLibrary symbols behavior (#102671)"

This reverts commit 32973b08d8cb02c213d96df453ff323470304645. This fix
doesn't fix the build failure as expected and making few other
configuration broken too.

* [Sanitizer] Make sanitizer passes idempotent (#99439)

This PR changes the sanitizer passes to be idempotent. 
When any sanitizer pass is run after it has already been run before,
double instrumentation is seen in the resulting IR. This happens because
there is no check in the pass, to verify if IR has been instrumented
before.

This PR checks if "nosanitize_*" module flag is already present and if
true, return early without running the pass again.

* [mlir][IR] Auto-generate element type verification for VectorType (#102449)

#102326 enables verification of type parameters that are type
constraints. The element type verification for `VectorType` (and maybe
other builtin types in the future) can now be auto-generated.

Also remove redundant error checking in the vector type parser: element
type and dimensions are already checked by the verifier (which is called
from `getChecked`).

Depends on #102326.

* [clang][Interp][NFC] Cleanup CheckActive()

Assert that the given pointer is in a union if it's not active and use a
range-based for loop to find the active field.

* [mlir][linalg] fix linalg.batch_reduce_matmul auto cast (#102585)

Fix the auto-cast of `linalg.batch_reduce_matmul` from `cast_to_T(A *
cast_to_T(B)) + C` to `cast_to_T(A) * cast_to_T(B) + C`

* [clang][Interp][NFC] Move ctor compilation to compileConstructor

In preparation for having a similar function for destructors.

* Revert "[NFC] [C++20] [Modules] Adjust the implementation of wasDeclEmitted to make it more clear"

This reverts commit 4399f2a5ef38df381c2b65052621131890194d59.
This fails with Modules/aarch64-sme-keywords.cppm

* Reapply "[AMDGPU] Always lower s/udiv64 by constant to MUL" (#101942)

Reland #100723, fixing the ARM issue at the cost of a small loss of optimization in `test/CodeGen/AMDGPU/fshr.ll`

Solves #100383

* [clang] Avoid triggering vtable instantiation for C++23 constexpr dtor (#102605)

In C++23 anything can be constexpr, including a dtor of a class whose
members and bases don't have constexpr dtors. Avoid early triggering of
vtable instantiation int this case.

Fixes https://github.com/llvm/llvm-project/issues/102293

* [CMake] Don't pass -DBUILD_EXAMPLES to the build (#102838)

The only use in `opt.cpp` was removed in
d291f1fd094538af705541045c0d9c3ceb85e71d.

* [DataLayout] Move `operator=` to cpp file (NFC) (#102849)

`DataLayout` isn't exactly cheap to copy (448 bytes on a 64-bit host).
Move `operator=` to cpp file to improve compilation time. Also move
`operator==` closer to `operator=` and add a couple of FIXMEs.

* [GlobalISel] Fix implementation of CheckNumOperandsLE/GE

The condition was backwards - it was rejecting when the condition was met.

Fixes #102719

* [VPlan] Mark VPVectorPointer as only using the first part of the ptr.

VPVectorPointerRecipe only uses the first part of the pointer operand,
so mark it accordingly.

Follow-up suggested as part of
https://github.com/llvm/llvm-project/pull/99808.

* [mlir][Transforms] Add missing check in tosa::transpose::verify() (#102099)

The tosa::transpose::verify() should make sure
that the permutation numbers are within the size of 
the input array. Otherwise it will cause a cryptic array
out of bound assertion later.Fix #99513.

* [AMDGPU] add missing checks in processBaseWithConstOffset (#102310)

fixes https://github.com/llvm/llvm-project/issues/102231 by inserting
missing checks.

* [InstCombine] Don't change fn signature for calls to declarations (#102596)

transformConstExprCastCall() implements a number of highly dubious
transforms attempting to make a call function type line up with the
function type of the called function. Historically, the main value this
had was to avoid function type mismatches due to pointer type
differences, which is no longer relevant with opaque pointers.

This patch is a step towards reducing the scope of the transform, by
applying it only to definitions, not declarations. For declarations, the
declared signature might not match the actual function signature, e.g.
`void @fn()` is sometimes used as a placeholder for functions with
unknown signature. The implementation already bailed out in some cases
for declarations, but I think it would be safer to disable the transform
entirely.

For the test cases, I've updated some of them to use definitions
instead, so that the test coverage is preserved.

* [llvm][llvm-readobj] Add NT_ARM_FPMR corefile note type (#102594)

This contains the fpmr register which was added in Armv9.5-a. This
register mainly contains controls for fp8 formats.

It was added to the Linux Kernel in

https://github.com/torvalds/linux/commit/4035c22ef7d43a6c00d6a6584c60e902b95b46af.

* [analyzer][NFC] Trivial refactoring of region invalidation (#102456)

This commit removes `invalidateRegionsImpl()`, moving its body to
`invalidateRegions(ValueList Values, ...)`, because it was a completely
useless layer of indirection.

Moreover I'm fixing some strange indentation within this function body
and renaming two variables to the proper `UpperCamelCase` format.

* [VPlan] Replace hard-coded value number in test with pattern.

Make test more robust w.r.t. future changes.

* [NFC][Clang] clang-format a function declaration

* [dwarf2yaml] Correctly emit type and split unit headers (#102471)

(DWARFv5) split units have an extra `dwo_id` field in the header. Type
units have `type_signature` and `type_offset`.

* [LV] Only OR unique edges when creating block-in masks.

This removes redundant ORs of matching masks.

Follow-up to f0df4fbd0c7b to reduce the number of redundant ORs for
masks.

* [KnownBits] Add KnownBits::add and KnownBits::sub helper wrappers. (#99468)

* [clang][analyzer] Remove array bounds check from PointerSubChecker (#102580)

At pointer subtraction only pointers are allowed that point into an
array (or one after the end), this fact was checker by the checker. This
check is now removed because it is a special case of array indexing
error that is handled by different checkers (like ArrayBoundsV2).

* [lldb] Tolerate multiple compile units with the same DWO ID (#100577)

I ran into this when LTO completely emptied two compile units, so they
ended up with the same hash (see #100375). Although, ideally, the
compiler would try to ensure we don't end up with a hash col…
kutemeikito added a commit to kutemeikito/llvm-project that referenced this pull request Aug 23, 2024
* 'main' of https://github.com/llvm/llvm-project: (1385 commits)
  [llvm][NVPTX] Fix quadratic runtime in ProxyRegErasure (#105730)
  [ScalarizeMaskedMemIntr] Don't use a scalar mask on GPUs (#104842)
  [clang][NFC] order C++ standards in reverse in release notes (#104866)
  Revert "[clang] Merge lifetimebound and GSL code paths for lifetime analysis (#104906)" (#105752)
  [SandboxIR] Implement CatchReturnInst (#105605)
  [RISCV][TTI] Use legalized element types when costing casts (#105723)
  [LTO] Use a helper function to add a definition (NFC) (#105721)
  [Vectorize] Fix a warning
  Revert "[clang][rtsan] Introduce realtime sanitizer codegen and drive… (#105744)
  [NFC][ADT] Add reverse iterators and `value_type` to StringRef (#105579)
  [mlir][SCF]-Fix loop coalescing with iteration arguements (#105488)
  [compiler-rt][test] Change tests to remove the use of `unset` command in lit internal shell  (#104880)
  [Clang] [Parser] Improve diagnostic for `friend concept` (#105121)
  [clang][rtsan] Introduce realtime sanitizer codegen and driver (#102622)
  [libunwind] Stop installing the mach-o module map (#105616)
  [VPlan] Fix typo in cb4efe1d.
  [VPlan] Don't trigger VF assertion if VPlan has extra simplifications.
  [LLD][COFF] Generate X64 thunks for ARM64EC entry points and patchable functions. (#105499)
  [VPlan] Factor out precomputing costs from LVP::cost (NFC).
  AMDGPU: Remove global/flat atomic fadd intrinics (#97051)
  [LTO] Introduce helper functions to add GUIDs to ImportList (NFC) (#105555)
  Revert "[MCA][X86] Add missing 512-bit vpscatterqd/vscatterqps schedu… (#105716)
  [libc] Fix locale structs with old headergen
  [libc] Add `ctype.h` locale variants (#102711)
  [NFC] [MLIR] [OpenMP] Fixing typo of clause. (#105712)
  [AMDGPU] Correctly insert s_nops for dst forwarding hazard (#100276)
  Fix dap stacktrace perf issue (#104874)
  [HLSL][SPIRV]Add SPIRV generation for HLSL dot (#104656)
  [libc] Fix leftover thread local
  [NFC] [Docs] add missing space
  [libc] Initial support for 'locale.h' in the LLVM libc (#102689)
  Revert " [libc] Add `ctype.h` locale variants (#102711)"
  [libc] Add `ctype.h` locale variants (#102711)
  [libc++] Fix transform_error.mandates.verify.cpp test on msvc (#104635)
  [VPlan] Move EVL memory recipes to VPlanRecipes.cpp (NFC)
  [Xtensa,test] Fix div.ll after #99981
  [MCA][X86] Add missing 512-bit vpscatterqd/vscatterqps schedule data
  [MCA][X86] Add scatter instruction test coverage for #105675
  [IR] Simplify comparisons with std::optional (NFC) (#105624)
  Recommit "[FunctionAttrs] deduce attr `cold` on functions if all CG paths call a `cold` function"
  [lldb] Change the two remaining SInt64 settings in Target to uint (#105460)
  [libc++] Adjust armv7 XFAIL target triple for the setfill_wchar_max test. (#105586)
  [clang][bytecode] Fix 'if consteval' in non-constant contexts (#104707)
  [NFC] [SCCP] remove unused functions (#105603)
  [WebAssembly] Change half-precision feature name to fp16. (#105434)
  [C23] Remove WG14 N2517 from the status page
  [bindings][ocaml] Add missing AtomicRMW operations (#105673)
  [MCA][X86] Add scatter instruction test coverage for #105675
  [Driver] Add -Wa, options -mmapsyms={default,implicit}
  [CodeGen] Construct SmallVector with iterator ranges (NFC) (#105622)
  [lldb] Fix typos in ScriptedInterface.h
  [AMDGPU][GlobalISel] Disable fixed-point iteration in all Combiners (#105517)
  [AArch64,ELF] Allow implicit $d/$x at section beginning
  [AArch64] Fix a warning
  [Vectorize] Fix warnings
  Reland "[asan] Remove debug tracing from `report_globals` (#104404)" (#105601)
  [X86] Add BSR/BSF tests to check for implicit zero extension
  [AArch64] Lower aarch64_neon_saddlv via SADDLV nodes. (#103307)
  [lldb][test] Add a unit-test for importRecordLayoutFromOrigin
  [ARM] Fix missing ELF FPU attributes for fp-armv8-fullfp16-d16  (#105677)
  [lldb] Pick the correct architecutre when target and core file disagree (#105576)
  [Verifier] Make lrint and lround intrinsic cases concise. NFC (#105676)
  [SLP]Improve/fix subvectors in gather/buildvector nodes handling
  [DwarfEhPrepare] Assign dummy debug location for more inserted _Unwind_Resume calls (#105513)
  [RISCV][GISel] Implement canLowerReturn. (#105465)
  [AMDGPU] Generate checks for vector indexing. NFC. (#105668)
  [NFC] Replace bool <= bool comparison (#102948)
  [SLP]Do not count extractelement costs in unreachable/landing pad blocks.
  [SimplifyCFG] Fold switch over ucmp/scmp to icmp and br (#105636)
  [libc++] Post-LLVM19-release docs cleanup (#99667)
  [AArch64] optimise SVE cmp intrinsics with no active lanes (#104779)
  [RISCV] Introduce local peephole to reduce VLs based on demanded VL (#104689)
  [DAG][RISCV] Use vp_reduce_* when widening illegal types for reductions (#105455)
  [libc++][docs] Major update to the documentation
  [InstCombine] Handle logical op for and/or of icmp 0/-1
  [InstCombine] Add more test variants with poison elements (NFC)
  [LLVM][CodeGen][SVE] Increase vector.insert test coverage.
  [PowerPC] Fix mask for __st[d/w/h/b]cx builtins (#104453)
  [Analysis] Teach ScalarEvolution::getRangeRef about more dereferenceable objects (#104778)
  [mlir][LLVM] Add support for constant struct with multiple fields (#102752)
  [mlir][OpenMP][NFC] clean up optional reduction region parsing (#105644)
  [InstCombine] Add more tests for foldLogOpOfMaskedICmps transform (NFC)
  [clang][bytecode] Allow adding offsets to function pointers (#105641)
  [Clang][Sema] Rebuild template parameters for out-of-line template definitions and partial specializations (#104030)
  [InstCombine] Fold `scmp(x -nsw y, 0)` to `scmp(x, y)` (#105583)
  [flang][OpenMP] use reduction alloc region (#102525)
  [mlir][OpenMP] Convert reduction alloc region to LLVMIR (#102524)
  [mlir][OpenMP] Add optional alloc region to reduction decl (#102522)
  [libc++] Add link to the Github conformance table from the documentation
  [libc++] Fix the documentation build
  [NFC][SetTheory] Refactor to use const pointers and range loops (#105544)
  [NFC][VPlan] Correct two typos in comments.
  [clang][bytecode] Fix void unary * operators (#105640)
  Revert "[lldb] Extend frame recognizers to hide frames from backtraces (#104523)"
  Revert "[lldb-dap] Mark hidden frames as "subtle" (#105457)"
  Revert "[lldb][swig] Use the correct variable in the return statement"
  [DebugInfo][NFC] Constify debug DbgVariableRecord::{isDbgValue,isDbgDeclare}  (#105570)
  [cmake] Include GNUInstallDirs before using variables defined by it. (#83807)
  [AMDGPU] GFX12 VMEM loads can write VGPR results out of order (#105549)
  [AMDGPU] Add GFX12 test coverage for vmcnt flushing in loop headers (#105548)
  [AArch64][GlobalISel] Libcall i128 srem/urem and scalarize more vector types.
  [AArch64] Add GISel srem/urem tests of various sizes. NFC
  LSV: forbid load-cycles when vectorizing; fix bug (#104815)
  [X86] Allow speculative BSR/BSF instructions on targets with CMOV (#102885)
  [lit] Fix substitutions containing backslashes (#103042)
  [Dexter] Sanitize user details from git repo URL in dexter --version (#105533)
  [SimplifyCFG] Add tests for switch over cmp intrinsic (NFC)
  [libc++] Refactor the std::unique_lock tests (#102151)
  Fix logf128 tests to allow negative NaNs from (#104929)
  [MemCpyOpt] Avoid infinite loops in `MemCpyOptPass::processMemCpyMemCpyDependence` (#103218)
  [mlir][dataflow] Propagate errors from `visitOperation` (#105448)
  Enable logf128 constant folding for hosts with 128bit long double (#104929)
  [mlir][llvmir][debug] Correctly generate location for phi nodes. (#105534)
  [Sparc] Add flags to enable errata workaround pass for GR712RC and UT700 (#104742)
  [lldb][AIX] Updating XCOFF,PPC entry in LLDB ArchSpec (#105523)
  [mlir][cuda] NFC: Remove accidentally committed 'asd' file. (#105491)
  [clang] Merge lifetimebound and GSL code paths for lifetime analysis (#104906)
  [Xtensa] Implement lowering Mul/Div/Shift operations. (#99981)
  [clang][bytecode] Don't discard all void-typed expressions (#105625)
  Build SanitizerCommon if ctx_profile enabled (#105495)
  [InstCombine] Fold icmp over select of cmp more aggressively (#105536)
  [SPIR-V] Rework usage of virtual registers' types and classes (#104104)
  [ELF] Move target to Ctx. NFC
  [Transforms] Refactor CreateControlFlowHub (#103013)
  [asan][Darwin] Simplify test (#105599)
  [Transforms] Construct SmallVector with iterator ranges (NFC) (#105607)
  [Flang][Runtime] Fix type used to store result of typeInfo::Value::Ge… (#105589)
  [PGO][OpenMP] Instrumentation for GPU devices (Revision of #76587) (#102691)
  [clang][NFC] remove resolved issue from StandardCPlusPlusModules.rst (#105610)
  AMDGPU: Handle folding frame indexes into s_add_i32 (#101694)
  [RISCV][GISel] Correct registers classes in vector anyext.mir test. NFC
  [ELF] Move script into Ctx. NFC
  [ELF] LinkerScript: initialize dot. NFC
  [RISCV][GISel] Correct registers classes in vector sext/zext.mir tests. NFC
  [ELF] Remove unneeded script->. NFC
  [ELF] Move mainPart to Ctx. NFC
  [Symbolizer, DebugInfo] Clean up LLVMSymbolizer API: const string& -> StringRef (#104541)
  [flang][NFC] Move OpenMP related passes into a separate directory (#104732)
  [RISCV] Add CSRs and an instruction for Smctr and Ssctr extensions. (#105148)
  [SandboxIR] Implement FuncletPadInst, CatchPadInst and CleanupInst (#105294)
  [lldb-dap] Skip the lldb-dap output test on windows, it seems all the lldb-dap tests are disabled on windows. (#105604)
  [libc] Fix accidentally using system file on GPU
  [llvm][nsan] Skip function declarations (#105598)
  Handle #dbg_values in SROA. (#94070)
  Revert "Speculative fix for asan/TestCases/Darwin/cstring_section.c"
  [BPF] introduce __attribute__((bpf_fastcall)) (#105417)
  [SandboxIR] Simplify matchers in ShuffleVectorInst unit test (NFC) (#105596)
  [compiler-rt][test] Added REQUIRES:shell to fuzzer test with for-loop (#105557)
  [ctx_prof] API to get the instrumentation of a BB (#105468)
  [lldb] Speculative fix for trap_frame_sym_ctx.test
  [LTO] Compare std::optional<ImportKind> directly with ImportKind (NFC) (#105561)
  [LTO] Use enum class for ImportFailureReason (NFC) (#105564)
  [flang][runtime] Add build-time flags to runtime to adjust SELECTED_x_KIND() (#105575)
  [libc] Add `scanf` support to the GPU build (#104812)
  [SandboxIR] Add tracking for `ShuffleVectorInst::setShuffleMask`. (#105590)
  [NFC][TableGen] Change global variables from anonymous NS to static (#105504)
  [SandboxIR] Fix use-of-uninitialized in ShuffleVectorInst unit test. (#105592)
  [InstCombine] Fold `sext(A < B) + zext(A > B)` into `ucmp/scmp(A, B)` (#103833)
  Revert "[Coroutines] [NFCI] Don't search the DILocalVariable for __promise when constructing the debug varaible for __coro_frame"
  Revert "[Coroutines] Fix -Wunused-variable in CoroFrame.cpp (NFC)"
  Revert "[Coroutines] Salvage the debug information for coroutine frames within optimizations"
  [mlir] Add nodiscard attribute to allowsUnregisteredDialects (#105530)
  [libc++] Mark LWG3404 as implemented
  [lldb-dap] When sending a DAP Output Event break each message into separate lines. (#105456)
  [RFC][flang] Replace special symbols in uniqued global names. (#104859)
  [libc++] Improve the granularity of status tracking from Github issues
  [ADT] Add `isPunct` to StringExtras (#105461)
  [SandboxIR] Add ShuffleVectorInst (#104891)
  [AArch64] Add SVE lowering of fixed-length UABD/SABD (#104991)
  [SLP]Try to keep scalars, used in phi nodes, if phi nodes from same block are vectorized.
  [SLP]Fix PR105120: fix the order of phi nodes vectorization.
  [CGData] Fix tests for sed without using options (#105546)
  [flang][OpenMP] Follow-up to build-breakage fix (#102028)
  [NFC][ADT] Remove << operators from StringRefTest (#105500)
  [lldb-dap] Implement `StepGranularity` for "next" and "step-in" (#105464)
  [Docs] Update Loop Optimization WG call.
  [gn build] Port a6bae5cb3791
  [AMDGPU] Split GCNSubtarget into its own file. NFC. (#105525)
  [ctx_prof] Profile flatterner (#104539)
  [libc][docs] Update docs to reflect new headergen (#102381)
  [clang] [test] Use lit Syntax for Environment Variables in Clang subproject (#102647)
  [RISCV] Minor style fixes in lowerVectorMaskVecReduction [nfc]
  [libc++] Standardize how we track removed and superseded papers
  [libc++][NFC] A few mechanical adjustments to capitalization in status files
  [LLDB][Minidump] Fix ProcessMinidump::GetMemoryRegions to include 64b regions when /proc/pid maps are missing. (#101086)
  Scalarize the vector inputs to llvm.lround intrinsic by default. (#101054)
  [AArch64] Set scalar fneg to free for fnmul (#104814)
  [libcxx] Add cache file for the GPU build (#99348)
  [Offload] Improve error reporting on memory faults (#104254)
  [bazel] Fix mlir build broken by 681ae097. (#105552)
  [CGData] Rename CodeGenDataTests to CGDataTests (#105463)
  [ELF,test] Enhance hip-section-layout.s
  [clang-format] Use double hyphen for multiple-letter flags (#100978)
  [mlir] [tablegen] Make `hasSummary` and `hasDescription` useful (#105531)
  [flang][Driver] Remove misleading test comment (#105528)
  [MLIR][OpenMP] Add missing OpenMP to LLVM conversion patterns (#104440)
  [flang][debug] Allow non default array lower bounds. (#104467)
  [DAGCombiner] Fix ReplaceAllUsesOfValueWith mutation bug in visitFREEZE (#104924)
  Fix bug with -ffp-contract=fast-honor-pragmas (#104857)
  [RISCV] Add coverage for fp reductions of <2^N-1 x FP> vectors
  [AMDGPU][True16][MC] added VOPC realtrue/faketrue flag and fake16 instructions (#104739)
  [libc++] Enable C++23 and C++26 issues to be synchronized
  [gn] port 7ad7f8f7a3d4
  Speculative fix for asan/TestCases/Darwin/cstring_section.c
  [libc++] Mark C++14 as complete and remove the status pages (#105514)
  [AArch64] Bail out for scalable vecs in areExtractShuffleVectors (#105484)
  [LTO] Use a range-based for loop (NFC) (#105467)
  [LTO] Use DenseSet in computeLTOCacheKey (NFC) (#105466)
  Revert "[flang][NFC] Move OpenMP related passes into a separate directory (#104732)"
  [AArch64] Add support for ACTLR_EL12 system register (#105497)
  [InstCombine] Add tests for icmp of select of cmp (NFC)
  [NFC][ADT] Format StringRefTest.cpp to fit in 80 columns. (#105502)
  [flang][NFC] Move OpenMP related passes into a separate directory (#104732)
  [libcxx] Add `LIBCXX_HAS_TERMINAL_AVAILABLE` CMake option to disable `print` terminal checks (#99259)
  [clang] Diagnose functions with too many parameters (#104833)
  [mlir][memref]: Allow collapse dummy strided unit dim (#103719)
  [lldb][swig] Use the correct variable in the return statement
  [libc++] Avoid -Wzero-as-null-pointer-constant in operator<=> (#79465)
  [llvm-reduce] Disable fixpoint verification in InstCombine
  [libc++] Refactor the tests for mutex, recursive mutex and their timed counterparts (#104852)
  [Clang] fix generic lambda inside requires-clause of friend function template (#99813)
  Revert "[asan] Remove debug tracing from `report_globals` (#104404)"
  [analyzer] Limit `isTainted()` by skipping complicated symbols (#105493)
  [clang][CodeGen][SPIR-V][AMDGPU] Tweak AMDGCNSPIRV ABI to allow for the correct handling of aggregates passed to kernels / functions. (#102776)
  [InstCombine] Extend Fold of Zero-extended Bit Test (#102100)
  [LLVM][VPlan] Keep all VPBlend masks until VPlan transformation. (#104015)
  [gn build] Port 0cff3e85db00
  [NFC][Support] Move ModRef/MemoryEffects printers to their own file (#105367)
  [NFC][ADT] Add unit test for llvm::mismatch. (#105459)
  LAA: pre-commit tests for stride-versioning (#97570)
  [VPlan] Only use selectVectorizationFactor for cross-check (NFCI). (#103033)
  [SPIR-V] Sort basic blocks to match the SPIR-V spec (#102929)
  [DAG] Add select_cc -> abd folds (#102137)
  [MLIR][mesh] moving shardinginterfaceimpl for tensor to tensor extension lib (#104913)
  AMDGPU: Remove flat/global atomic fadd v2bf16 intrinsics (#97050)
  [InstCombine] Remove some of the complexity-based canonicalization (#91185)
  [PS5][Driver] Link main components with -pie by default (#102901)
  [bazel] Port a3d41879ecf5690a73f9226951d3856c7faa34a4
  [gn build] Port 6c189eaea994
  [Clang][NFCI] Cleanup the fix for default function argument substitution (#104911)
  [AMDGPU][True16][test] added missing true16 flag in gfx12 asm vop1 (#104884)
  [RISCV] Make EmitRISCVCpuSupports accept multiple features (#104917)
  [AArch64] Add SME peephole optimizer pass (#104612)
  [RISCV] Remove experimental for Ssqosid ext (#105476)
  Revert "[LLVM] [X86] Fix integer overflows in frame layout for huge frames (#101840)"
  [llvm][test] Write temporary files into a temporary directory
  [GlobalIsel] Push cast through build vector (#104634)
  [Clang] Implement CWG2351 `void{}` (#78060)
  [VPlan] Introduce explicit ExtractFromEnd recipes for live-outs. (#100658)
  [gn build] Port 7c4cadfc4333
  [mlir][vector] Add more tests for ConvertVectorToLLVM (5/n) (#104784)
  [mlir][Linalg] Bugfix for folder of `linalg.transpose` (#102888)
  [RISCV] Add Hazard3 Core as taped out for RP2350 (#102452)
  [X86][AVX10.2] Support AVX10.2-CONVERT new instructions. (#101600)
  [Flang][Runtime] Handle missing definitions in <cfenv> (#101242)
  [compiler-rt] Reland "SetThreadName implementation for Fuchsia" (#105179)
  [LAA] Collect loop guards only once in MemoryDepChecker (NFCI).
  [ELF] Move ppc64noTocRelax to Ctx. NFC
  [clang-repl] Fix printing preprocessed tokens and macros (#104964)
  [mlir][ODS] Optionally generate public C++ functions for type constraints (#104577)
  [Driver] Use llvm::make_range(std::pair) (NFC) (#105470)
  Revert "[AArch64] Optimize when storing symmetry constants" (#105474)
  [llvm][DWARFLinker] Don't attach DW_AT_dwo_id to CUs (#105186)
  [lldb-dap] Mark hidden frames as "subtle" (#105457)
  [clang][bytecode] Fix diagnostic in final ltor cast (#105292)
  [clang-repl] [codegen] Reduce the state in TBAA. NFC for static compilation. (#98138)
  [CMake] Update CMake cache file for the ARM/Aarch64 cross toolchain builds. NFC. (#103552)
  Revert "[FunctionAttrs] deduce attr `cold` on functions if all CG paths call a `cold` function"
  [AMDGPU] Update instrumentAddress method to support aligned size and unusual size accesses. (#104804)
  [BOLT] Improve BinaryFunction::inferFallThroughCounts() (#105450)
  [lldb][test] Workaround older systems that lack gettid (#104831)
  [LTO] Teach computeLTOCacheKey to return std::string (NFC) (#105331)
  [gn build] Port c8a678b1e486
  [gn build] Port 55d744eea361
  [ELF,test] Improve error-handling-script-linux.test
  [gn] tblgen opts for llvm-cgdata
  [MLIR][MathDialect] fix fp32 promotion crash when encounters scf.if (#104451)
  Reland "[gn build] Port d3fb41dddc11 (llvm-cgdata)"
  RISC-V: Add fminimumnum and fmaximumnum support (#104411)
  [mlir] Fix -Wunused-result in ElementwiseOpFusion.cpp (NFC)
  [RISCV][GISel] Merge RISCVCallLowering::lowerReturnVal into RISCVCallLowering::lowerReturn. NFC
  [AArch64] Basic SVE PCS support for handling scalable vectors on Darwin.
  Fix KCFI types for generated functions with integer normalization (#104826)
  [RISCV] Add coverage for int reductions of <3 x i8> vectors
  Revert "[RISCV][GISel] Allow >2*XLen integers in isSupportedReturnType."
  [DirectX] Register a few DXIL passes with the new PM
  [RISCV][GISel] Allow >2*XLen integers in isSupportedReturnType.
  [mlir][linalg] Improve getPreservedProducerResults estimation in ElementwiseOpFusion (#104409)
  [lldb] Extend frame recognizers to hide frames from backtraces (#104523)
  [RISCV][GISel] Split LoadStoreActions in LoadActions and StoreActions.
  [lldb][test] XFAIL TestAnonNamespaceParamFunc.cpp on Windows
  [FunctionAttrs] deduce attr `cold` on functions if all CG paths call a `cold` function
  [FunctionAttrs] Add tests for deducing attr `cold` on functions; NFC
  [DXIL][Analysis] Update test to match comment. NFC (#105409)
  [flang] Fix test on ppc64le & aarch64 (#105439)
  [bazel] Add missing dependencies for c8a678b1e4863df2845b1305849534047f10caf1
  [RISCV][GISel] Remove s32 support for G_ABS on RV64.
  [TableGen] Rework `EmitIntrinsicToBuiltinMap` (#104681)
  [libc] move newheadergen back to safe_load (#105374)
  [cmake] Set up llvm-ml as ASM_MASM tool in WinMsvc.cmake (#104903)
  [libc] Include startup code when installing all (#105203)
  [DAG][RISCV] Use vp.<binop> when widening illegal types for binops which can trap (#105214)
  [BOLT] Reduce CFI warning verbosity (#105336)
  [flang] Disable part of failing test (temporary) (#105350)
  AMDGPU: Temporarily stop adding AtomicExpand to new PM passes
  [OpenMP] Temporarily disable test to keep bots green
  [Clang] Re-land Overflow Pattern Exclusions (#104889)
  [RISCV][GISel] Remove s32 support on RV64 for DIV, and REM. (#102519)
  [flang] Disable failing test (#105327)
  [NFC] Fix a typo in InternalsManual: ActOnCXX -> ActOnXXX (#105207)
  [NFC] Fixed two typos: "__builin_" --> "__builtin_" (#98782)
  [flang] Re-enable date_and_time intrinsic test (NFC) (#104967)
  [clang] Support -Wa, options -mmsa and -mno-msa (#99615)
  AMDGPU/NewPM: Start filling out addIRPasses (#102884)
  AMDGPU/NewPM: Fill out passes in addCodeGenPrepare (#102867)
  [SandboxIR] Implement CatchSwitchInst (#104652)
  clang/AMDGPU: Emit atomicrmw for flat/global atomic min/max f64 builtins (#96876)
  clang/AMDGPU: Emit atomicrmw for global/flat fadd v2bf16 builtins (#96875)
  clang/AMDGPU: Emit atomicrmw from flat_atomic_{f32|f64} builtins (#96874)
  [Driver,DXIL] Fix build
  [Attributor] Improve AAUnderlyingObjects (#104835)
  [flang] Fix IEEE_NEAREST_AFTER folding edge cases (#104846)
  [flang] Silence spurious error (#104821)
  [flang] Silence an inappropriate warning (#104685)
  [flang] Fix inheritance of IMPLICIT typing rules (#102692)
  [flang] More support for anonymous parent components in struct constr… (#102642)
  clang/AMDGPU: Emit atomicrmw from {global|flat}_atomic_fadd_v2f16 builtins (#96873)
  [lldb][test] Change unsupported cat -e to cat -v to work with lit internal shell (#104878)
  [llvm-lit][test] Updated built-in cat command tests (#104473)
  [mlir][gpu] Add extra value types for gpu::ShuffleOp (#104605)
  [AArch64][MachO] Add ptrauth ABI version to arm64e cpusubtype. (#104650)
  [libc++] Fix several double-moves in the code base (#104616)
  [lldb] Disable the API test TestCppBitfields on Windows (#105037)
  llvm.lround: Update verifier to validate support of vector types. (#98950)
  [mlir][sparse] support sparsification to coiterate operations. (#102546)
  Fix post-104491 (#105191)
  [mlir][tablegen] Fix tablegen bug with `Complex` class (#104974)
  [DirectX] Encapsulate DXILOpLowering's state into a class. NFC
  [ctx_prof] Add analysis utility to fetch ID of a callsite (#104491)
  [lldb] Fix windows debug build after 9d07f43 (#104896)
  [lldb][ClangExpressionParser] Implement ExternalSemaSource::ReadUndefinedButUsed (#104817)
  Revert "[compiler-rt][fuzzer] implements SetThreadName for fuchsia." (#105162)
  [lldb][ClangExpressionParser] Don't leak memory when multiplexing ExternalASTSources (#104799)
  [mlir][gpu] Add 'cluster_size' attribute to gpu.subgroup_reduce (#104851)
  [mlir][spirv] Support `gpu` in `convert-to-spirv` pass (#105010)
  [libc++][chono] Use hidden friends for leap_second comparison. (#104713)
  [OpenMP] Map `omp_default_mem_alloc` to global memory (#104790)
  [NFC][TableGen] Elminate use of isalpha/isdigit from TGLexer (#104837)
  [HLSL] Implement support for HLSL intrinsic  - saturate (#104619)
  [RISCV] Add isel optimization for (and (sra y, c2), c1) to recover regression from #101751. (#104114)
  [bazel] Add missing deps in {Arith,DLTI}DialectTdFiles (#105091)
  [bazel] Port bf68e9047f62c22ca87f9a4a7c59a46b3de06abb (#104907)
  [Clang] CWG722: nullptr to ellipses (#104704)
  [RISCV] Add coverage for VP div[u]/rem[u] with non-power-of-2 vectors
  Recommit "[CodeGenPrepare] Folding `urem` with loop invariant value"
  [CodeGenPrepare][X86] Add tests for fixing `urem` transform; NFC
  Fix a warning for -Wcovered-switch-default (#105054)
  [OpenMP][FIX] Check for requirements early (#104836)
  [mlir] [irdl] Improve IRDL documentation (#104928)
  [CMake] Remove HAVE_LINK_H
  [Support] Remove unneeded __has_include fallback
  [docs] Fix typo in llvm.experimental.vector.compress code-block snippet
  [clang][ASTMatcher] Fix execution order of hasOperands submatchers (#104148)
  InferAddressSpaces: Factor replacement loop into function [NFC] (#104430)
  [DXIL][Analysis] Delete unnecessary test (#105025)
  [MLIR][EmitC] Allow ptrdiff_t as result in sub op (#104921)
  [NFC] Remove explicit bitcode enumeration from BitCodeFormat.rst (#102618)
  [NVPTX] Add elect.sync Intrinsic (#104780)
  [AMDGPU] Move AMDGPUMemoryUtils out of Utils. NFC. (#104930)
  [clang][OpenMP] Fix typo in comment, NFC
  [AArch64] fix buildbot by removing dead code
  [llvm-cgdata] Fix -Wcovered-switch-default (NFC)
  Reenable anon structs (#104922)
  [DXIL][Analysis] Add validator version to info collected by Module Metadata Analysis  (#104828)
  Reland [CGData] llvm-cgdata #89884 (#101461)
  [CostModel][X86] Add missing costkinds for scalar CTLZ/CTTZ instructions
  [Driver] Make ffp-model=fast honor non-finite-values, introduce ffp-model=aggressive (#100453)
  [InstCombine] Thwart complexity-based canonicalization in test (NFC)
  [AArch64] Extend sxtw peephole to uxtw. (#104516)
  Reapply "[CycleAnalysis] Methods to verify cycles and their nesting. (#102300)"
  [AArch64] Optimize when storing symmetry constants (#93717)
  [lldb][Windows] Fixed the API test breakpoint_with_realpath_and_source_map (#104918)
  [SPARC] Remove assertions in printOperand for inline asm operands (#104692)
  [llvm][offload] Move AMDGPU offload utilities to LLVM (#102487)
  [AArch64][NEON] Extend faminmax patterns with fminnm/fmaxnm (#104766)
  [AArch64] Remove TargetParser CPU/Arch feature tests (#104587)
  [InstCombine] Adjust fixpoint error message (NFC)
  [LLVM] Add a C API for creating instructions with custom syncscopes. (#104775)
  [llvm-c] Add getters for LLVMContextRef for various types (#99087)
  [clang][NFC] Split invalid-cpu-note tests (#104601)
  [X86][AVX10] Fix unexpected error and warning when using intrinsic (#104781)
  [ScheduleDAG] Dirty height/depth in addPred/removePred even for latency zero (#102915)
  [gn build] Port 42067f26cd08
  [X86] Use correct fp immediate types in _mm_set_ss/sd
  [X86] Add clang codegen test coverage for #104848
  [SimplifyCFG] Add support for hoisting commutative instructions (#104805)
  [clang][bytecode] Fix discarding CompoundLiteralExprs (#104909)
  Revert "[CycleAnalysis] Methods to verify cycles and their nesting. (#102300)"
  [LLVM-Reduce] - Distinct Metadata Reduction (#104624)
  [clang][modules] Built-in modules are not correctly enabled for Mac Catalyst (#104872)
  [MLIR][DLTI] Introduce DLTIQueryInterface and impl for DLTI attrs (#104595)
  [Flang][OpenMP] Prevent re-composition of composite constructs (#102613)
  [BasicAA] Use nuw attribute of GEPs (#98608)
  [CycleAnalysis] Methods to verify cycles and their nesting. (#102300)
  [mlir][EmitC] Model lvalues as a type in EmitC (#91475)
  [mlir][EmitC] Do not convert illegal types in EmitC (#104571)
  [Clang][test] Add bytecode interpreter tests for floating comparison functions (#104703)
  [clang][bytecode] Fix initializing base casts (#104901)
  [mlir][ArmSME][docs] Update example (NFC)
  [llvm][GitHub] Fix formatting of new contributor comments
  [Coroutines] Salvage the debug information for coroutine frames within optimizations
  [lldb][AIX] 1. Avoid namespace collision on other platforms (#104679)
  [MLIR][Bufferize][NFC] Fix documentation typo (#104881)
  [LV] Simplify !UserVF.isZero() -> UserVF (NFC).
  [DataLayout] Refactor the rest of `parseSpecification` (#104545)
  [LLD][COFF] Detect weak reference cycles. (#104463)
  [MLIR][Python] remove unused init python file (#104890)
  [clang-doc] add support for block commands in clang-doc html output (#101108)
  [Coroutines] Fix -Wunused-variable in CoroFrame.cpp (NFC)
  [IR] Check that arguments of naked function are not used (#104757)
  [Coroutines] [NFCI] Don't search the DILocalVariable for __promise when constructing the debug varaible for __coro_frame
  [MLIR] Introduce a SelectLikeOpInterface (#104751)
  Revert "[scudo] Add partial chunk heuristic to retrieval algorithm." (#104894)
  [NVPTX] Fix bugs involving maximum/minimum and bf16
  [SelectionDAG] Fix lowering of IEEE 754 2019 minimum/maximum
  [llvm-objcopy][WebAssembly] Allow --strip-debug to operate on relocatable files. (#102978)
  [lld][WebAssembly] Ignore local symbols when parsing lazy object files. (#104876)
  [clang][bytecode] Support ObjC blocks (#104551)
  Revert "[mlir] NFC: fix dependence of (Tensor|Linalg|MemRef|Complex) dialects on LLVM Dialect and LLVM Core in CMake build (#104832)"
  [ADT] Fix a minor build error (#104840)
  [Driver] Default -msmall-data-limit= to 0 and clean up code
  [docs] Revise the doc for __builtin_allow_runtime_check
  [MLIR][Transforms] Fix dialect conversion inverse mapping (#104648)
  [scudo] Add partial chunk heuristic to retrieval algorithm. (#104807)
  [mlir] NFC: fix dependence of (Tensor|Linalg|MemRef|Complex) dialects on LLVM Dialect and LLVM Core in CMake build (#104832)
  [offload] - Fix issue with standalone debug offload build (#104647)
  [ValueTracking] Handle incompatible types instead of asserting in `isKnownNonEqual`; NFC
  [AMDGPU] Add VOPD combine dependency tests. NFC. (#104841)
  [compiler-rt][fuzzer] implements SetThreadName for fuchsia. (#99953)
  [Support] Do not ignore unterminated open { in formatv (#104688)
  Reapply "[HWASan] symbolize stack overflows" (#102951) (#104036)
  Fix StartDebuggingRequestHandler/ReplModeRequestHandler in lldb-dap (#104824)
  Emit `BeginSourceFile` failure with `elog`. (#104845)
  [libc][NFC] Add sollya script to compute worst case range reduction. (#104803)
  Reland "[asan] Catch `initialization-order-fiasco` in modules without…" (#104730)
  [NFC][asan] Create `ModuleName` lazily (#104729)
  [asan] Better `___asan_gen_` names (#104728)
  [NFC][ADT] Add range wrapper for std::mismatch (#104838)
  [Clang] Fix ICE in SemaOpenMP with structured binding (#104822)
  [MC] Remove duplicate getFixupKindInfo calls. NFC
  [C++23] Fix infinite recursion (Clang 19.x regression) (#104829)
  AMDGPU/NewPM: Start implementing addCodeGenPrepare (#102816)
  [AMDGPU][Docs] DWARF aspace-aware base types
  Pre-commit AMDGPU tests for masked load/store/scatter/gather (#104645)
  [ADT] Add a missing call to a unique_function destructor after move (#98747)
  [ADT] Minor code cleanup in STLExtras.h (#104808)
  [libc++abi] Remove unnecessary dependency on std::unique_ptr (#73277)
  [clang] Increase the default expression nesting limit (#104717)
  [mlir][spirv] Fix incorrect metadata in SPIR-V Header (#104242)
  [ADT] Fix alignment check in unique_function constructor (#99403)
  LSV: fix style after cursory reading (NFC) (#104793)
  Revert "[BPF] introduce `__attribute__((bpf_fastcall))` (#101228)"
  [NFC][asan] Don't `cd` after `split-file` (#104727)
  [NFC][Instrumentation] Use `Twine` in `createPrivateGlobalForString` (#104726)
  [mlir][spirv] Add `GroupNonUniformBallotFindLSB` and `GroupNonUniformBallotFindMSB` ops (#104791)
  [GlobalISel] Bail out early for big-endian (#103310)
  [compiler-rt][nsan] Add more tests for shadow memory (#100906)
  [Flang] Fix test case for AIX(big-endian) system for issuing an extra message. (#104792)
  [asan] Change Apple back to fixed allocator base address (#104818)
  [NVPTX] Add conversion intrinsics from/to fp8 types (e4m3, e5m2) (#102969)
  [RISCV] Improve BCLRITwoBitsMaskHigh SDNodeXForm. NFC
  [clang][dataflow] Collect local variables referenced within a functio… (#104459)
  [AMDGPU][GlobalISel] Save a copy in one case of addrspacecast (#104789)
  [AMDGPU] Simplify, fix and improve known bits for mbcnt (#104768)
  [TableGen] Detect invalid -D arguments and fail (#102813)
  [DirectX] Disentangle DXIL.td's op types from LLVMType. NFC
  [Clang] Check constraints for an explicit instantiation of a member function (#104438)
  [DirectX] Differentiate between 0/1 overloads in the OpBuilder. NFC
  [docs] Add note about "Re-request review" (#104735)
  [lld][ELF] Combine uniqued small data sections (#104485)
  [BPF] introduce `__attribute__((bpf_fastcall))` (#101228)
  [SmallPtrSet] Optimize find/erase
  [PowerPC] Fix codegen for transparent_union function params (#101738)
  [llvm-mca] Add bottle-neck analysis to JSON output. (#90056)
  [lldb][Python] Silence GCC warning for modules error workaround
  [gn build] Port a56663591573
  [gn build] Port a449b857241d
  [clang][bytecode] Discard NullToPointer cast SubExpr (#104782)
  [lldb] PopulatePrpsInfoTest can fail due to hardcoded priority value (#104617)
  [mlir][[spirv] Add support for math.log2 and math.log10 to GLSL/OpenCL SPIRV Backends (#104608)
  [lldb][test] Fix GCC warnings in TestGetControlFlowKindX86.cpp
  [TableGen] Resolve References at top level (#104578)
  [LLVM] [X86] Fix integer overflows in frame layout for huge frames (#101840)
  [lldb][ASTUtils] Remove unused SemaSourceWithPriorities::addSource API
  [lldb][test] Fix cast dropping const warnin in TestBreakpointSetCallback.cpp
  [SimplifyCFG] Add tests for hoisting of commutative instructions (NFC)
  [AMDGPU][R600] Move R600CodeGenPassBuilder into R600TargetMachine(NFC). (#103721)
  Revert "[clang][ExtractAPI] Stop dropping fields of nested anonymous record types when they aren't attached to variable declaration (#104600)"
  MathExtras: template'ize alignToPowerOf2 (#97814)
  [AMDGPU] Move AMDGPUCodeGenPassBuilder into AMDGPUTargetMachine(NFC) (#103720)
  [clang][ExtractAPI] Stop dropping fields of nested anonymous record types when they aren't attached to variable declaration (#104600)
  [Clang][NFC] Fix potential null dereference in encodeTypeForFunctionPointerAuth (#104737)
  [DebugInfo] Make tests SimplifyCFG-independent (NFC)
  [mlir][ArmSME] Remove XFAILs (#104758)
  [RISCV] Add vector and vector crypto to SiFiveP400 scheduler model (#102155)
  [clang][OpenMP] Diagnose badly-formed collapsed imperfect loop nests (#60678) (#101305)
  Require !windows instead of XFAIL'ing ubsan/TestCases/Integer/bit-int.c
  [clang][bytecode] Fix member pointers to IndirectFieldDecls (#104756)
  [AArch64] Add fneg(fmul) and fmul(fneg) tests. NFC
  [clang][bytecode] Use first FieldDecl instead of asserting (#104760)
  [DataLayout] Refactor parsing of i/f/v/a specifications (#104699)
  [X86] LowerABD - simplify i32/i64 to use sub+sub+cmov instead of repeating nodes via abs (#102174)
  [docs] Update a filename, fix indentation (#103018)
  [CostModel][X86] Add cost tests for scmp/ucmp intrinsics
  [NFC][SLP] Remove useless code of the schedule (#104697)
  [VPlan] Rename getBestPlanFor -> getPlanFor (NFC).
  [InstCombine] Fold `(x < y) ? -1 : zext(x != y)` into `u/scmp(x,y)` (#101049)
  [VPlan] Emit note when UserVF > MaxUserVF (NFCI).
  [LLVM][NewPM] Add C API for running the pipeline on a single function. (#103773)
  [mlir][vector] Populate sink patterns in apply_patterns.vector.reduction_to_contract (#104754)
  [lld][MachO] Fix a suspicous assert in SyntheticSections.cpp
  [PowerPC] Support -mno-red-zone option (#94581)
  [PAC][ELF][AArch64] Encode several ptrauth features in PAuth core info (#102508)
  [VPlan] Rename getBestVF -> computeBestVF (NFC).
  [MLIR][LLVM] Improve the noalias propagation during inlining (#104750)
  [LoongArch] Fix the assertion for atomic store with 'ptr' type
  [AArch64][SME] Return false from produceCompactUnwindFrame if VG save required. (#104588)
  [X86] Cleanup lowerShuffleWithUNPCK/PACK signatures to match (most) other lowerShuffle* methods. NFC.
  [X86] VPERM2*128 instructions aren't microcoded on znver1
  [X86] VPERM2*128 instructions aren't microcoded on znver2
  [VPlan] Move some LoopVectorizationPlanner helpers to VPlan.cpp (NFC).
  [mlir][docs] Update Bytecode documentation (#99854)
  [SimplifyCFG] Don't block sinking for allocas if no phi created (#104579)
  [LoongArch] Merge base and offset for LSX/LASX memory accesses (#104452)
  [RISCV] Make extension names lower case in RISCVISAInfo::checkDependency() error messages.
  [RISCV] Add helper functions to exploit similarity of some RISCVISAInfo::checkDependency() error strings. NFC
  [RISCV] Merge some ISA error reporting together and make some errors more precise.
  [RISCV] Simplify reserse fixed regs (#104736)
  [RISCV] Add more tests for RISCVISAInfo::checkDependency(). NFC
  [Sparc] Add errata workaround pass for GR712RC and UT700 (#103843)
  [TableGen] Print Error and not crash on dumping non-string values (#104568)
  [RISCV][MC] Support experimental extensions Zvbc32e and Zvkgs (#103709)
  Revert "[CodeGenPrepare] Folding `urem` with loop invariant value"
  [SelectionDAG][X86] Preserve unpredictable metadata for conditional branches in SelectionDAG, as well as JCCs generated by X86 backend. (#102101)
  [MLIR][Python] enhance python api for tensor.empty (#103087)
  [AMDGPU][NFC] Fix preload-kernarg.ll test after attributor move (#98840)
  [CodeGenPrepare] Folding `urem` with loop invariant value
  [CodeGenPrepare][X86] Add tests for folding `urem` with loop invariant value; NFC
  [MC] Remove ELFRelocationEntry::OriginalAddend
  [TLI] Add support for inferring attr `cold`/`noreturn` on `std::terminate` and `__cxa_throw`
  [DAG][PatternMatch] Add support for matchers with flags; NFC
  Update Clang version from 19 to 20 in scan-build.1.
  [clang-format] Change GNU style language standard to LS_Latest (#104669)
  [MIPS] Remove expensive LLVM_DEBUG relocation dump
  [MC] Add test that requires multiple relaxation steps
  [libc][gpu] Add Atan2 Benchmarks (#104708)
  [libc] Add single threaded kernel attributes to AMDGPU startup utility (#104651)
  [HIP] search fatbin symbols for libs passed by -l (#104638)
  [gn build] Port 0d150db214e2
  [llvm][clang] Move RewriterBuffer to ADT. (#99770)
  [Clang] Do not allow `[[clang::lifetimebound]]` on explicit object member functions (#96113)
  [clang][OpenMP] Change /* ParamName */ to /*ParamName=*/, NFC
  [clang-tidy] Support member functions with modernize-use-std-print/format (#104675)
  [clang] fix divide by zero in ComplexExprEvaluator (#104666)
  [clang][OpenMP] Avoid multiple calls to getCurrentDirective in DSAChecker, NFC
  [clang][bytecode] Only booleans can be inverted
  [Flang]: Use actual endianness for Integer<80> (#103928)
  [libc++][docs] Fixing hyperlink for mathematical special function documentation (#104444)
  [InstSimplify] Simplify `uadd.sat(X, Y) u>= X + Y` and `usub.sat(X, Y) u<= X, Y` (#104698)
  [LV] Don't cost branches and conditions to empty blocks.
  [clang][test] Remove bytecode interpreter RUN line from test
  [Clang] warn on discarded [[nodiscard]] function results after casting in C (#104677)
  [GlobalISel] Add and use an Opcode variable and update match-table-cxx.td checks. NFC
  [Clang] `constexpr` builtin floating point classification / comparison functions (#94118)
  [clang][bytecode] IntPointer::atOffset() should append (#104686)
  [clang][bytecode][NFC] Improve Pointer::print()
  [RISCV] Remove unused tablegen classes from unratified Zbp instructions. NFC
  [PowerPC] Use MathExtras helpers to simplify code. NFC (#104691)
  [clang-tidy] Correct typo in ReleaseNotes.rst (#104674)
  [APInt] Replace enum with static constexpr member variables. NFC
  [MLIR][OpenMP] Fix MLIR->LLVM value matching in privatization logic (#103718)
  [VE] Use SelectionDAG::getSignedConstant/getAllOnesConstant.
  [gn build] Port 27a62ec72aed
  [LSR] Split the -lsr-term-fold transformation into it's own pass (#104234)
  [AArch64] Use SelectionDAG::getSignedConstant/getAllOnesConstant.
  [ARM] Use SelectonDAG::getSignedConstant.
  [SelectionDAG] Use getAllOnesConstant.
  [LLD] [MinGW] Recognize the -rpath option (#102886)
  [clang][bytecode] Fix shifting negative values (#104663)
  [flang] Handle Hollerith in data statement initialization in big endian (#103451)
  [clang][bytecode] Classify 1-bit unsigned integers as bool (#104662)
  [RISCV][MC] Make error message of CSR with wrong extension more detailed (#104424)
  [X86] Don't save/restore fp around longjmp instructions (#102556)
  AMDGPU: Add tonearest and towardzero roundings for intrinsic llvm.fptrunc.round (#104486)
  [libc] Fix type signature for strlcpy and strlcat (#104643)
  [AArch64] Add a check for invalid default features (#104435)
  [clang][NFC] Clean up `Sema` headers
  [NFC] Cleanup in ADT and Analysis headers. (#104484)
  [InstCombine] Avoid infinite loop when negating phi nodes (#104581)
  Add non-temporal support for LLVM masked loads (#104598)
  [AMDGPU] Disable inline constants for pseudo scalar transcendentals (#104395)
  [mlir][Transforms] Dialect conversion: Fix bug in `computeNecessaryMaterializations` (#104630)
  [RISCV] Use getAllOnesConstant/getSignedConstant.
  [SelectionDAG] Use getSignedConstant/getAllOnesConstant.
  [NFC][asan] Make 'Module &M' class member
  [AMDGPU][NFC] Remove duplicate code by using getAddressableLocalMemorySize (#104604)
  [CodeGen][asan] Use `%t` instead of `cd` in test
  Revert "[asan] Catch `initialization-order-fiasco` in modules without globals" (#104665)
  [SelectionDAG][X86] Use getAllOnesConstant. NFC (#104640)
  [LLVM][NVPTX] Add support for brkpt instruction (#104470)
  [asan] Catch `initialization-order-fiasco` in modules without globals (#104621)
  [RISCV] Remove feature implication from Zvknhb.
  [clang-format] Adjust requires clause wrapping (#101550) (#102078)
  [MC,AArch64] Remove unneeded STT_NOTYPE/STB_LOCAL code for mapping symbols and improve tests
  [NFC][DXIL] move replace/erase in DXIL intrinsic expansion to caller (#104626)
  [flang] Allow flexible name in llvm.ident (NFC) (#104543)
  [SandboxIR] Implement SwitchInst (#104641)
  [Clang] Fix sema checks thinking kernels aren't kernels (#104460)
  [asan] Pre-commit test with global constructor without any global (#104620)
  [clang-doc] add support for enums comments in html generation (#101282)
  Revert "[AArch64] Fold more load.x into load.i with large offset"
  [NFC][cxxabi] Apply `cp-to-llvm.sh` (#101970)
  [Clang] fix crash by avoiding invalidation of extern main declaration during strictness checks (#104594)
  [Mips] Fix fast isel for i16 bswap. (#103398)
  [libc] Add missing math definitions for round and scal for GPU (#104636)
  [ScalarizeMaskedMemIntr] Optimize splat non-constant masks (#104537)
  [SandboxIR] Implement ConstantInt (#104639)
  [SLP]Fix PR104637: do not create new nodes for fully overlapped non-schedulable nodes
  [DataLayout] Refactor parsing of "p" specification (#104583)
  [flang][cuda] Remove run line
  Reland "[flang][cuda][driver] Make sure flang does not switch to cc1 (#104613)"
  Revert "Reland "[flang][cuda][driver] Make sure flang does not switch to cc1 (#104613)""
  [SandboxIR][Tracker][NFC] GenericSetterWithIdx (#104615)
  Reland "[flang][cuda][driver] Make sure flang does not switch to cc1 (#104613)"
  [MC] Drop whitespace padding in AMDGPU combined asm/disasm tests. (#104433)
  [gn build] Port 7ff377ba60bf
  [InstrProf] Support conditional counter updates (#102542)
  [Analysis] Fix null ptr dereference when using WriteGraph without branch probability info (#104102)
  [DirectX] Revert specialized createOp methods part of #101250
  [VPlan] Compute cost for most opcodes in VPWidenRecipe (NFCI). (#98764)
  [PowerPC] Do not merge TLS constants within PPCMergeStringPool.cpp (#94059)
  Revert "[flang][cuda][driver] Make sure flang does not switch to cc1" (#104632)
  [AArch64][MachO] Encode @AUTH to ARM64_RELOC_AUTHENTICATED_POINTER.
  [flang][cuda][driver] Make sure flang does not switch to cc1 (#104613)
  AMDGPU: Rename type helper functions in atomic handling
  [libc] Fix generated header definitions in cmake (#104628)
  [libcxx][fix] Rename incorrect filename variable
  [SDAG] Read-only intrinsics must have WillReturn and !Throws attributes to be treated as loads (#99999)
  Re-Apply "[DXIL][Analysis] Implement enough of DXILResourceAnalysis for buffers" (#104517)
  [SelectionDAGISel] Use getSignedConstant for OPC_EmitInteger.
  [DirectX] Add missing Analysis usage to DXILResourceMDWrapper
  [AArch64] Remove apple-a7-sysreg. (#102709)
  Revert "[libc] Disable old headergen checks unless enabled" (#104627)
  [LLD, MachO] Default objc_relative_method_lists on MacOS10.16+/iOS14+ (#104519)
  [Clang][OMPX] Add the code generation for multi-dim `thread_limit` clause (#102717)
  [lldb][test] Mark gtest cases as XFAIL if the test suite is XFAIL (#102986)
  [APINotes] Support fields of C/C++ structs
  [Attributor] Enable `AAAddressSpace` in `OpenMPOpt` (#104363)
  [HLSL] Change default linkage of HLSL functions to internal (#95331)
  [bazel] Fix cyclic dependencies for macos (#104528)
  [libc] Disable old headergen checks unless enabled (#104522)
  [SandboxIR] Implement AtomicRMWInst (#104529)
  [RISCV] Move vmv.v.v peephole from SelectionDAG to RISCVVectorPeephole (#100367)
  [nfc] Improve testability of PGOInstrumentationGen (#104490)
  [test] Prevent generation of the bigendian code inside clang test CodeGen/bit-int-ubsan.c (#104607)
  [TableGen] Refactor Intrinsic handling in TableGen (#103980)
  [mlir][emitc] Add 'emitc.switch' op to the dialect (#102331)
  [SelectionDAG][X86] Add SelectionDAG::getSignedConstant and use it in a few places. (#104555)
  [mlir][AMDGPU] Implement AMDGPU DPP operation in MLIR. (#89233)
  [RISCV] Allow YAML file to control multilib selection (#98856)
  [mlir][vector] Group re-order patterns together (#102856)
  [lldb] Add Populate Methods for ELFLinuxPrPsInfo and ELFLinuxPrStatus (#104109)
  [HLSL] Flesh out basic type typedefs (#104479)
  [mlir][vector] Add more tests for ConvertVectorToLLVM (4/n) (#103391)
  [TableGen] Sign extend constants based on size for EmitIntegerMatcher. (#104550)
  [gn] Port AST/ByteCode #104552
  [DAGCombiner] Remove TRUNCATE_(S/U)SAT_(S/U) from an assert that isn't tested. NFC (#104466)
  [RISCV] Don't support TRUNCATE_SSAT_U. (#104468)
  [Hexagon] Use range-based for loops (NFC) (#104538)
  [CodeGen] Use range-based for loops (NFC) (#104536)
  [Bazel] Port AST/ByteCode #104552
  [mlir][linalg] Implement TilingInterface for winograd operators (#96184)
  [libc++][math] Fix acceptance of convertible types in `std::isnan()` and `std::isinf()` (#98952)
  [clang] Rename all AST/Interp stuff to AST/ByteCode (#104552)
  [mlir] [tosa] Bug fixes in shape inference pass (#104146)
  [libc++] Fix rejects-valid in std::span copy construction (#104500)
  [InstCombine] Handle commuted variant of sqrt transform
  [InstCombine] Thwart complexity-based canonicalization in sqrt test (NFC)
  [InstCombine] Preserve nsw in A + -B fold
  [InstCombine] Add nsw tests for A + -B fold (NFC)
  [include-cleaner] fix 32-bit buildbots after a426ffdee1ca7814f2684b6
  [PhaseOrdering] Regenerate test checks (NFC)
  [InstCombine] Regenerate test checks (NFC)
  [X86] Fold extract_subvector(int_to_fp(x)) vXi32/vXf32 cases to match existing fp_to_int folds
  [InstCombine] Regenerate test checks (NFC)
  [mlir][spirv] Update documentation. NFC (#104584)
  [GlobalIsel] Revisit ext of ext. (#102769)
  [libc++] Fix backslash as root dir breaks lexically_relative, lexically_proximate and hash_value on Windows (#99780)
  [AArch64][GlobalISel] Disable fixed-point iteration in all Combiners
  [SLP][REVEC] Fix CreateInsertElement does not use the correct result if MinBWs applied. (#104558)
  Add FPMR register and update dependencies of FP8 instructions (#102910)
  [InstCombine] Fix incorrect zero ext in select of lshr/ashr fold
  [InstCombine] Add i128 test for select of lshr/ashr transform (NFC)
  [llvm-c] Add non-cstring versions of LLVMGetNamedFunction and LLVMGetNamedGlobal (#103396)
  [InstCombine] Fold an unsigned icmp of ucmp/scmp with a constant to an icmp of the original arguments (#104471)
  [clang][Interp] Fix classifying enum types (#104582)
  [clang] Add a new test for CWG2091 (#104573)
  [mlir][ArmSME][docs] Fix broken link (NFC)
  [compiler-rt] Stop using x86 builtin on AArch64 with GCC (#93890)
  [DataLayout] Refactor parsing of "ni" specification (#104546)
  [X86] SimplifyDemandedVectorEltsForTargetNode - reduce width of X86 conversions nodes when upper elements are not demanded. (#102882)
  [include-cleaner] Add handling for new/delete expressions (#104033)
  InferAddressSpaces: Convert test to generated checks
  [LAA] Use computeConstantDifference() (#103725)
  [SimplifyCFG] Add test for #104567 (NFC)
  [bazel] Port for 75cb9edf09fdc091e5bc0f3d46a96c2877735a39
  [AMDGPU][NFC] AMDGPUUsage.rst: document corefile format (#104419)
  [lldb][NFC] Moved FindSchemeByProtocol() from Acceptor to Socket (#104439)
  [X86] lowerShuffleAsDecomposedShuffleMerge - don't lower to unpack+permute if either source is zero.
  [X86] Add shuffle tests for #104482
  [clang][Interp][NFC] Remove Function::Loc
  [clang][NFC] Update `cxx_dr_status.html`
  [MLIR][GPU-LLVM] Add GPU to LLVM-SPV address space mapping (#102621)
  [DAG] SD Pattern Match: Operands patterns with VP Context  (#103308)
  Revert "[clang][driver] Fix -print-target-triple OS version for apple targets" (#104563)
  [NFC][X86] Refactor: merge avx512_binop_all2 into avx512_binop_all (#104561)
  [RISCV] Merge bitrotate crash test into shuffle reverse tests. NFC
  [Passes] clang-format initialization files (NFC)
  [mlir][IR] Fix `checkFoldResult` error message (#104559)
  [RISCV] Merge shuffle reverse tests. NFC
  [RISCV] Use shufflevector in shuffle reverse tests. NFC
  [RISCV] Remove -riscv-v-vector-bits-max from reverse tests. NFC
  [flang][stack-arrays] Collect analysis results for OMP ws loops (#103590)
  [clang][Interp] Add scopes to conditional operator subexpressions (#104418)
  [RISCV] Simplify (srl (and X, Mask), Const) to TH_EXTU (#102802)
  [RISCV][NFC] Fix typo: "wererenamed" to "were renamed" (#104530)
  [RISCV] Lower fixed reverse vector_shuffles through vector_reverse (#104461)
  [asan] Fix build breakage from report_globals change
  [MLIR][test] Run SVE and SME Integration tests using qemu-aarch64 (#101568)
  [DAGCombiner] Don't let scalarizeBinOpOfSplats create illegal scalar MULHS/MULHU (#104518)
  [flang][cuda] Add version in libCufRuntime name (#104506)
  [mlir][tosa] Add missing check for new_shape of `tosa.reshape` (#104394)
  [Bitcode] Use range-based for loops (NFC) (#104534)
  [HLSL] update default validator version to 1.8. (#104040)
  [ScalarizeMaskedMemIntr] Pre-commit tests for splat optimizations (#104527)
  [Sparc] Remove dead code (NFC) (#104264)
  [Clang] [Sema] Error on reference types inside a union with msvc 1900+ (#102851)
  [Driver] Reject -Wa,-mrelax-relocations= for non-ELF
  [Analysis] Use a range-based for loop (NFC) (#104445)
  [llvm] Use llvm::any_of (NFC) (#104443)
  [PowerPC] Use range-based for loops (NFC) (#104410)
  [CodeGen] Use a range-based for loop (NFC) (#104408)
  [ORC] Gate testcase for 3e1d4ec671c on x86-64 and aarch64 target support.
  [builitins] Only try to use getauxval on Linux (#104047)
  [ORC] Add missing dependence on BinaryFormat library.
  [flang] Inline minval/maxval over elemental/designate (#103503)
  [Driver] Correctly handle -Wa,--crel -Wa,--no-crel
  [lldb] Correctly fix a usage of `PATH_MAX`, and fix unit tests (#104502)
  [gn build] Port 3e1d4ec671c5
  [asan] Remove debug tracing from `report_globals` (#104404)
  [workflows] Add a new workflow for checking commit access qualifications (#93301)
  [Driver] Improve error message for -Wa,-x=unknown
  [SandboxIR] Implement UnaryOperator (#104509)
  [ORC] loadRelocatableObject: universal binary support, clearer errors (#104406)
  [RISCV] Use significant bits helpers in narrowing of build vectors [nfc] (#104511)
  [LLDB] Reapply #100443 SBSaveCore Thread list (#104497)
  [Driver] Reject -Wa,-mrelax-relocations= for non-x86
  [docs] Stress out the branch naming scheme for Graphite. (#104499)
  [NFC][sanitizer] Use `UNLIKELY` in VReport/VPrintf (#104403)
  [asan] Reduce priority of "contiguous_container:" VPrintf (#104402)
  [libc] Make sure we have RISC-V f or d extension before using it (#104476)
  [Driver] Make CodeGenOptions name match MCTargetOptions names
  [Attributor][FIX] Ensure we do not use stale references (#104495)
  [libclang/python] Expose `clang_isBeforeInTranslationUnit` for `SourceRange.__contains__`
  [Clang] Add target triple to fix failing test (#104513)
  [clang][NFC] Fix table of contents in `Sema.h`
  [-Wunsafe-buffer-usage] Fix warning after #102953
  [flang] Make sure range is valid (#104281)
  [MC] Replace hasAltEntry() with isMachO()
  MCAsmInfo: Replace some Mach-O specific check with isMachO(). NFC
  [asan] De-prioritize VReport `DTLS_Find` (#104401)
  Revert "[DXIL][Analysis] Implement enough of DXILResourceAnalysis for buffers" (#104504)
  [ubsan] Limit _BitInt ubsan tests to x86-64 platform only (#104494)
  Update load intrinsic attributes (#101562)
  [MC] Replace HasAggressiveSymbolFolding with SetDirectiveSuppressesReloc. NFC
  [SandboxIR] Implement BinaryOperator (#104121)
  [RISCV][GISel] Support nxv16p0 for RV32. (#101573)
  [nfc][ctx_prof] Remove the need for `PassBuilder` to know about `UseCtxProfile` (#104492)
  [Clang] [NFC] Rewrite constexpr vectors test to use element access (#102757)
  (lldb) Fix PATH_MAX for Windows (#104493)
  [libc] Add definition for `atan2l` on 64-bit long double platforms (#104489)
  Revert "[sanitizer] Remove GetCurrentThread nullness checks from Allocate"
  Reapply "Fix prctl to handle PR_GET_PDEATHSIG. (#101749)" (#104469)
  [-Wunsafe-buffer-usage] Fix a small bug recently found (#102953)
  [TargetLowering] Don't call SelectionDAG::getTargetLoweringInfo() from TargetLowering methods. NFC (#104197)
  [PowerPC][GlobalMerge] Enable GlobalMerge by default on AIX (#101226)
  [Clang] Implement C++26’s P2893R3 ‘Variadic friends’ (#101448)
  clang/AMDGPU: Emit atomicrmw for __builtin_amdgcn_global_atomic_fadd_{f32|f64} (#96872)
  [llvm-objdump] Fix a warning
  [bazel] Port 47721d46187f89c12a13d07b5857496301cf5d6e (#104481)
  [libc++] Remove the allocator<const T> extension (#102655)
  [Clang] handle both gnu and cpp11 attributes to ensure correct parsing inside extern block (#102864)
  [gn build] Port 47721d46187f
  [lldb] Realpath symlinks for breakpoints (#102223)
  llvm-objdump: ensure a MachO symbol isn't STAB before looking up secion (#86667)
  [test]Fix test error due to CRT dependency (#104462)
  [clang][Interp] Call move function for certain primitive types (#104437)
  [llvm-objdump] Print out  xcoff file header for xcoff object file with option private-headers (#96350)
  [Clang] prevent null explicit object argument from being deduced (#104328)
  Revert "[Clang] Overflow Pattern Exclusions (#100272)"
  [flang][OpenMP] Fix 2 more regressions after #101009 (#101538)
  [InstCombine] Fold `ucmp/scmp(x, y) >> N` to `zext/sext(x < y)` when N is one less than the width of the result of `ucmp/scmp` (#104009)
  [bazel] Enable more lit self tests (#104285)
  Fix single thread stepping timeout race condition (#104195)
  [SPARC][Utilities] Add names for SPARC ELF flags in LLVM binary utilities (#102843)
  [SPARC][Driver] Add -m(no-)v8plus flags handling (#98713)
  [OpenMP] Add support for pause with omp_pause_stop_tool (#97100)
  Revert "[SLP][NFC]Remove unused using declarations, reduce mem usage in containers, NFC"
  [ValueTracking] Fix f16 fptosi range for large integers
  [InstSimplify] Add tests for f16 to i128 range (NFC)
  Revert "[Object][x86-64] Add support for `R_X86_64_GLOB_DAT` relocations. (#103029)" (#103497)
  [NFC] Fix spelling of "definitely". (#104455)
  [InstCombine][NFC] Add tests for shifts of constants by common factor (#103471)
  [OpenMP] Miscellaneous small code improvements (#95603)
  [clang][ExtractAPI] Emit environment component of target triple in SGF (#103273)
  [RISCV] Narrow indices to e16 for LMUL > 1 when lowering vector_reverse (#104427)
  [NFC] Fix code line exceeding 80 columns (#104428)
  [SLP][NFC]Remove unused using declarations, reduce mem usage in containers, NFC
  [Clang] Check explicit object parameter for defaulted operators properly (#100419)
  [LegalizeTypes][AMDGPU]: Allow for scalarization of insert_subvector (#104236)
  Allow optimization of __size_returning_new variants. (#102258)
  [SLP]Fix PR104422: Wrong value truncation
  [GlobalISel] Combiner: Fix warning after #102163
  [SLP][NFC]Add a test with incorrect minbitwidth analysis for reduced operands
  [ubsan] Display correct runtime messages for negative _BitInt (#96240)
  Revert "[SLP][NFC]Remove unused using declarations, reduce mem usage in containers, NFC"
  [DataLayout] Extract loop body into a function to reduce nesting (NFC) (#104420)
  [clang][ExtractAPI] Compute inherited availability information (#103040)
  [CodeGen] Fix -Wcovered-switch-default in Combiner.cpp (NFC)
  [CompilerRT][Tests] Fix profile/darwin-proof-of-concept.c (#104237)
  [mlir][gpu] Fix typo in test filename (#104053)
  [LoongArch] Pre-commit tests for validating the merge base offset in vecotrs. NFC
  [AArch64] optimise SVE prefetch intrinsics with no active lanes (#103052)
  [AMDGPU] MCExpr printing helper with KnownBits support (#95951)
  [GlobalISel] Combiner: Observer-based DCE and retrying of combines
  [libcxx] Use `aligned_alloc` for testing instead of `posix_memalign` (#101748)
  [VPlan] Run VPlan optimizations on plans in native path.
  [clang][Interp] Use first field decl for Record field lookup (#104412)
  InferAddressSpaces: Restore non-instruction user check
  [AMDGPU][llvm-split] Fix another division by zero (#104421)
  Reapply "[lldb] Tolerate multiple compile units with the same DWO ID (#100577)" (#104041)
  [lldb-dap] Expose log path in extension settings (#103482)
  [clang][Interp] Pass callee decl to null_callee diagnostics (#104426)
  [llvm][CodeGen] Resolve issues when updating live intervals in window scheduler (#101945)
  [DataLayout] Add helper predicates to sort specifications (NFC) (#104417)
  InferAddressSpaces: Make getPredicatedAddrSpace less confusing (#104052)
  [AArch64] Fold more load.x into load.i with large offset
  [AArch64] merge index address with large offset into base address
  [AArch64] Add verification for MemOp immediate ranges (#97561)
  Revert "[Clang] [AST] Fix placeholder return type name mangling for MSVC 1920+ / VS2019+ (#102848)"
  [analyzer] Do not reason about locations passed as inline asm input (#103714)
  [NFC][mlir][scf] Fix misspelling of replace (#101683)
  Revert "Remove empty line."
  [mlir][Transforms] Dialect conversion: Build unresolved materialization for replaced ops (#101514)
  Remove empty line.
  [DirectX] Use a more consistent pass name for DXILTranslateMetadata
  [Flang][OpenMP] Move assert for wrapper syms and block args to genLoopNestOp (#103731)
  [clang][driver] Fix -print-target-triple OS version for apple targets (#104037)
  [bazel] Port for 141536544f4ec1d1bf24256157f4ff1a3bc07dae
  [DAG] Adding m_FPToUI and m_FPToSI to SDPatternMatch.h (#104044)
  [llvm][Docs] `_or_null` -> `_if_present` in Programmer's Manual (#98586)
  [MLIR][LLVM]: Add an IR utility to perform slice walking (#103053)
  [lldb][test] Mark sys_info zdump test unsupported on 32 bit Arm Linux
  [flang][test] Run Driver/fveclib-codegen.f90 for aarch64 and x86_64 (#103730)
  [lldb] Remove Phabricator usernames from Code Owners file (#102590)
  [DataLayout] Move '*AlignElem' structs and enum inside DataLayout (NFC) (#103723)
  [flang][test] Fix Lower/default-initialization-globals.f90 on SPARC (#103722)
  [mlir][test] XFAIL little-endian-only tests on SPARC (#103726)
  [UnitTests] Convert some data layout parsing tests to GTest (#104346)
  Fix warnings in #102848 [-Wunused-but-set-variable]
  [VPlan] Move VPWidenStoreRecipe::execute to VPlanRecipes.cpp (NFC).
  [include-cleaner] Remove two commented-out lines of code.
  [mlir][tosa] Add verifier for `tosa.table` (#103708)
  [X86][MC] Remove CMPCCXADD's CondCode flavor. (#103898)
  [ctx_prof] Remove an unneeded include in CtxProfAnalysis.cpp
  Intrinsic: introduce minimumnum and maximumnum for IR and SelectionDAG (#96649)
  Remove failing test until it can be fixed properly.
  [Clang][NFC] Move FindCountedByField into FieldDecl (#104235)
  Fix testcases. Use -emit-llvm and not -S. Use LABEL checking.
  [Clang] [AST] Fix placeholder return type name mangling for MSVC 1920+ / VS2019+ (#102848)
  [LLDB][OSX] Removed semi colon generating a warning during build (#104398)
  [OpenMP] Use range-based for loops (NFC) (#103511)
  [RISCV] Implement RISCVTTIImpl::shouldConsiderAddressTypePromotion for RISCV (#102560)
  [lld-macho] Fix crash: ObjC category merge + relative method lists (#104081)
  [ELF][NFC] Allow non-GotSection for addAddendOnlyRelocIfNonPreemptible (#104228)
  [ctx_prof] CtxProfAnalysis: populate module data (#102930)
  [sanitizer] Remove GetCurrentThread nullness checks from Allocate
  Remove '-emit-llvm' and use '-triple'
  Use clang_cc1 and specify the target explicitly.
  utils/git: Add linkify script.
  [mlir][MemRef] Add more ops to narrow type support, strided metadata expansion (#102228)
  [Clang] Overflow Pattern Exclusions (#100272)
  [Clang] Error on extraneous template headers by default. (#104046)
  [Sanitizers] Disable prctl test on Android.
  [RISCV] Don't combine (sext_inreg (fmv_x_anyexth X), i16) with Zhinx.
  Remove unused variable, and unneeded extract element instruction (#103489)
  [bazel] Port 4bac8fd8904904bc7d502f39851eef50b5afff73 (#104278)
  Reland "[flang][cuda] Use cuda runtime API #103488"
  [Clang] Add `__CLANG_GPU_DISABLE_MATH_WRAPPERS` macro for offloading math (#98234)
  [llvm-lit] Fix Unhashable TypeError when using lit's internal shell (#101590)
  [llvm-lit][test][NFC] Moved cat command tests into separate lit test file (#102366)
  [RISCV] Add signext attribute to return of fmv_x_w test in float-convert.ll. NFC
  [DXIL][Analysis] Implement enough of DXILResourceAnalysis for buffers
  Reapply "[Attributor][AMDGPU] Enable AAIndirectCallInfo for AMDAttributor (#100952)"
  [DXIL][Analysis] Boilerplate for DXILResourceAnalysis pass
  [mlir] Add bubbling patterns for non intersecting reshapes (#103401)
  Revert "[flang][cuda] Use cuda runtime API" (#104232)
  [libc++] Remove non-existent LWG issue from the .csv files
  [RISCV][GISel] Remove support for s32 G_VAARG on RV64. (#102533)
  [NVPTX] Add idp2a, idp4a intrinsics (#102763)
  [X86] Check if an invoked function clobbers fp or bp (#103446)
  [flang][cuda] Use cuda runtime API (#103488)
  [SLP][NFC]Remove unused using declarations, reduce mem usage in containers, NFC
  [TargetLowering] Remove unncessary null check. NFC
  [OpenMP] Fix buildbot failing on allocator test
  [clang] Turn -Wenum-constexpr-conversion into a hard error (#102364)
  [libcxx] Adjust inline assembly constraints for the AMDGPU target (#101747)
  [lld-macho] Make relative method lists work on x86-64 (#103905)
  [libcxx] Disable invalid `__start/__stop` reference on NVPTX (#99381)
  [libcxx] Add fallback to standard C when `unistd` is unavailable (#102005)
  [Clang] Fix 'nvlink-wrapper' not ignoring `-plugin` like lld does (#104056)
  [OpenMP] Implement 'omp_alloc' on the device (#102526)
  [vscode-mlir] Added per-LSP-server executable arguments (#79671)
  [flang] Read the extra field from the in box when doing reboxing (#102992)
  [HLSL] Split out the ROV attribute from the resource attribute, make it a new spellable attribute. (#102414)
  [libc++] Fix ambiguous constructors for std::complex and std::optional (#103409)
  AMDGPU: Avoid manually reconstructing atomicrmw (#103769)
  [libc] Fix 'float type' incorrectly being used as the return type
  [Clang] Adjust concept definition locus (#103867)
  [SandboxIR] Implement Instruction flags (#103343)
  [AArch64] Add some uxtw peephole tests. NFC
  AMDGPU: Stop promoting allocas with addrspacecast users (#104051)
  [NVPTX] Fix typo causing GCC warning (#103045)
  [attributes][-Wunsafe-buffer-usage] Support adding unsafe_buffer_usage attribute to struct fields (#101585)
  [RISCV][GISel] Support G_SEXT_INREG for Zbb. (#102682)
  [SystemZ][z/OS] Continuation of __ptr32 support (#103393)
  [X86] concat(permv3(x0,m0,y0),permv3(x0,m1,y0)) -> permv3(concat(x0,u),m3,concat(y0,u))
  [X86] Add test coverage for #103564
  [X86] combineEXTRACT_SUBVECTOR - treat oneuse extractions from loads as free
  [libcxx] Set `_LIBCPP_HAS_CLOCK_GETTIME` for GPU targets (#99243)
  Fix bazel build (#104054)
  CodeGen/NewPM: Add ExpandLarge* passes to isel IR passes (#102815)
  AMDGPU/NewPM: Fill out addPreISelPasses (#102814)
  [libc++] Add mechanical update to CxxPapers.rst to git-blame-ignore-revs
  [libc++] Mechanical adjustments for the C++14 Paper status files
  [LLDB][OSX] Add a fallback support exe directory (#103458)
  [TextAPI] Use range-based for loops (NFC) (#103530)
  [mlir][vector] Add tests for `populateSinkVectorBroadcastPatterns` (1/n) (#102286)
  [libc++] Remove duplicate C++17 LWG issues from the CSVs
  [clang] Implement `__builtin_is_implicit_lifetime()` (#101807)
  Fix prctl test to execute all test cases if the first condition fails. (#102987)
  Revert "[scudo] Separated committed and decommitted entries." (#104045)
  [SelectionDAG] Scalarize binary ops of splats be…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants