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

[RISCV][MC] Implement evaluateBranch for auipc+jalr pairs #65480

Merged
merged 1 commit into from Oct 20, 2023

Conversation

mtvec
Copy link
Contributor

@mtvec mtvec commented Sep 6, 2023

This patch implements MCInstrAnalysis state in order to be able analyze auipc+jalr pairs inside evaluateBranch.

This is implemented as follows:

  • State: array of currently known GPR values;
  • Whenever an auipc is detected in updateState, update the state value of RD with the immediate;
  • Whenever a jalr is detected in evaluateBranch, check if the state holds a value for RS1 and use that to compute its target.

Note that this is similar to how binutils implements it and the output of llvm-objdump should now mostly match the one of GNU objdump.

This patch also updates the relevant llvm-objdump patches and adds a new one testing the output for interleaved auipc+jalr pairs.

This PR builds on #65479. Please only review the top commit here.

@mtvec mtvec requested a review from a team as a code owner September 6, 2023 13:45
@github-actions github-actions bot added backend:RISC-V mc Machine (object) code labels Sep 6, 2023
@mtvec
Copy link
Contributor Author

mtvec commented Sep 20, 2023

Ping.

@llvmbot
Copy link
Collaborator

llvmbot commented Oct 2, 2023

@llvm/pr-subscribers-llvm-binary-utilities

Changes

This patch implements MCInstrAnalysis state in order to be able analyze auipc+jalr pairs inside evaluateBranch.

This is implemented as follows:

  • State: array of currently known GPR values;
  • Whenever an auipc is detected in updateState, update the state value of RD with the immediate;
  • Whenever a jalr is detected in evaluateBranch, check if the state holds a value for RS1 and use that to compute its target.

Note that this is similar to how binutils implements it and the output of llvm-objdump should now mostly match the one of GNU objdump.

This patch also updates the relevant llvm-objdump patches and adds a new one testing the output for interleaved auipc+jalr pairs.

This PR builds on #65479. Please only review the top commit here.


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

5 Files Affected:

  • (modified) llvm/include/llvm/MC/MCInstrAnalysis.h (+15)
  • (modified) llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp (+64)
  • (modified) llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s (+2-2)
  • (added) llvm/test/tools/llvm-objdump/ELF/RISCV/multi-instr-target.s (+45)
  • (modified) llvm/tools/llvm-objdump/llvm-objdump.cpp (+20-5)
diff --git a/llvm/include/llvm/MC/MCInstrAnalysis.h b/llvm/include/llvm/MC/MCInstrAnalysis.h
index c3c675c39c5590c..dac12af599e6f34 100644
--- a/llvm/include/llvm/MC/MCInstrAnalysis.h
+++ b/llvm/include/llvm/MC/MCInstrAnalysis.h
@@ -37,6 +37,21 @@ class MCInstrAnalysis {
   MCInstrAnalysis(const MCInstrInfo *Info) : Info(Info) {}
   virtual ~MCInstrAnalysis() = default;
 
+  /// Clear the internal state. See updateState for more information.
+  virtual void resetState() {}
+
+  /// Update internal state with \p Inst at \p Addr.
+  ///
+  /// For some types a analyses, inspecting a single instruction is not
+  /// sufficient. Some examples are auipc/jalr pairs on RISC-V or adrp/ldr pairs
+  /// on AArch64. To support inspecting multiple instructions, targets may keep
+  /// track of an internal state while analysing instructions. Clients should
+  /// call updateState for every instruction which allows later calls to one of
+  /// the analysis functions to take previous instructions into account.
+  /// Whenever state becomes irrelevant (e.g., when starting to disassemble a
+  /// new function), clients should call resetState to clear it.
+  virtual void updateState(const MCInst &Inst, uint64_t Addr) {}
+
   virtual bool isBranch(const MCInst &Inst) const {
     return Info->get(Inst.getOpcode()).isBranch();
   }
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp
index 75af5c2de09469b..5349fa0a4b30881 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp
@@ -114,10 +114,65 @@ static MCTargetStreamer *createRISCVNullTargetStreamer(MCStreamer &S) {
 namespace {
 
 class RISCVMCInstrAnalysis : public MCInstrAnalysis {
+  std::optional<int64_t> GPRState[31];
+
+  static bool isGPR(unsigned Reg) {
+    return Reg >= RISCV::X0 && Reg <= RISCV::X31;
+  }
+
+  void setGPRState(unsigned Reg, std::optional<int64_t> Value) {
+    assert(isGPR(Reg) && "Invalid GPR reg");
+
+    if (Reg != RISCV::X0)
+      GPRState[Reg - RISCV::X1] = Value;
+  }
+
+  std::optional<int64_t> getGPRState(unsigned Reg) const {
+    assert(isGPR(Reg) && "Invalid GPR reg");
+
+    if (Reg == RISCV::X0)
+      return 0;
+    return GPRState[Reg - RISCV::X1];
+  }
+
 public:
   explicit RISCVMCInstrAnalysis(const MCInstrInfo *Info)
       : MCInstrAnalysis(Info) {}
 
+  void resetState() override {
+    std::fill(std::begin(GPRState), std::end(GPRState), std::nullopt);
+  }
+
+  void updateState(const MCInst &Inst, uint64_t Addr) override {
+    // Terminators mark the end of a basic block which means the sequentially
+    // next instruction will be the first of another basic block and the current
+    // state will typically not be valid anymore. For calls, we assume all
+    // registers may be clobbered by the callee (TODO: should we take the
+    // calling convention into account?).
+    if (isTerminator(Inst) || isCall(Inst)) {
+      resetState();
+      return;
+    }
+
+    switch (Inst.getOpcode()) {
+    default: {
+      // Clear the state of all defined registers for instructions that we don't
+      // explicitly support.
+      auto NumDefs = Info->get(Inst.getOpcode()).getNumDefs();
+      for (unsigned I = 0; I < NumDefs; ++I) {
+        auto DefReg = Inst.getOperand(I).getReg();
+        if (isGPR(DefReg))
+          setGPRState(DefReg, std::nullopt);
+      }
+      break;
+    }
+    case RISCV::AUIPC:
+      setGPRState(Inst.getOperand(0).getReg(),
+                  Addr + (Inst.getOperand(1).getImm() << 12));
+      break;
+    }
+  }
+
   bool evaluateBranch(const MCInst &Inst, uint64_t Addr, uint64_t Size,
                       uint64_t &Target) const override {
     if (isConditionalBranch(Inst)) {
@@ -140,6 +195,15 @@ class RISCVMCInstrAnalysis : public MCInstrAnalysis {
       return true;
     }
 
+    if (Inst.getOpcode() == RISCV::JALR) {
+      if (auto TargetRegState = getGPRState(Inst.getOperand(1).getReg())) {
+        Target = *TargetRegState + Inst.getOperand(2).getImm();
+        return true;
+      }
+
+      return false;
+    }
+
     return false;
   }
 
diff --git a/llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s b/llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s
index 5fec4e6e25a39a3..ebd86a702b70e7c 100644
--- a/llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s
+++ b/llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s
@@ -57,11 +57,11 @@ c.jal bar
 c.j bar
 
 # CHECK: auipc ra, 0
-# CHECK: jalr	ra, 16(ra){{$}}
+# CHECK: jalr	ra, 16(ra) <foo+0x58>
 call .Llocal
 
 # CHECK: auipc ra, 0
-# CHECK: jalr	ra, 16(ra){{$}}
+# CHECK: jalr	ra, 16(ra) <bar>
 call bar
 
 .Llocal:
diff --git a/llvm/test/tools/llvm-objdump/ELF/RISCV/multi-instr-target.s b/llvm/test/tools/llvm-objdump/ELF/RISCV/multi-instr-target.s
new file mode 100644
index 000000000000000..91b643e961fc6df
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/ELF/RISCV/multi-instr-target.s
@@ -0,0 +1,45 @@
+# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s | \
+# RUN:     llvm-objdump -d -M no-aliases --no-show-raw-insn - | \
+# RUN:     FileCheck %s
+
+## Test multiple interleaved auipc/jalr pairs
+# CHECK: auipc t0, 0
+1: auipc t0, %pcrel_hi(bar)
+# CHECK: auipc t1, 0
+2: auipc t1, %pcrel_hi(bar)
+# CHECK: jalr ra, {{[0-9]+}}(t0) <bar>
+jalr %pcrel_lo(1b)(t0)
+## Target should not be printed because the call above clobbers register state
+# CHECK: jalr ra, {{[0-9]+}}(t1){{$}}
+jalr %pcrel_lo(2b)(t1)
+
+## Test that auipc+jalr with a write to the target register in between does not
+## print the target
+# CHECK: auipc t0, 0
+1: auipc t0, %pcrel_hi(bar)
+# CHECK: c.li t0, 0
+li t0, 0
+# CHECK: jalr ra, {{[0-9]+}}(t0){{$}}
+jalr %pcrel_lo(1b)(t0)
+
+## Test that auipc+jalr with a write to an unrelated register in between does
+## print the target
+# CHECK: auipc t0, 0
+1: auipc t0, %pcrel_hi(bar)
+# CHECK: c.li t1, 0
+li t1, 0
+# CHECK: jalr ra, {{[0-9]+}}(t0) <bar>
+jalr %pcrel_lo(1b)(t0)
+
+## Test that auipc+jalr with a terminator in between does not print the target
+# CHECK: auipc t0, 0
+1: auipc t0, %pcrel_hi(bar)
+# CHECK: c.j {{.*}} <bar>
+j bar
+# CHECK: jalr ra, {{[0-9]+}}(t0){{$}}
+jalr %pcrel_lo(1b)(t0)
+
+# CHECK-LABEL: <bar>:
+bar:
+# CHECK: c.nop
+nop
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 96d74d6e2d5e865..385be9fb9257e16 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -842,7 +842,7 @@ class DisassemblerTarget {
   std::unique_ptr<const MCSubtargetInfo> SubtargetInfo;
   std::shared_ptr<MCContext> Context;
   std::unique_ptr<MCDisassembler> DisAsm;
-  std::shared_ptr<const MCInstrAnalysis> InstrAnalysis;
+  std::shared_ptr<MCInstrAnalysis> InstrAnalysis;
   std::shared_ptr<MCInstPrinter> InstPrinter;
   PrettyPrinter *Printer;
 
@@ -1265,14 +1265,19 @@ collectBBAddrMapLabels(const std::unordered_map<uint64_t, BBAddrMap> &AddrToBBAd
   }
 }
 
-static void collectLocalBranchTargets(
-    ArrayRef<uint8_t> Bytes, const MCInstrAnalysis *MIA, MCDisassembler *DisAsm,
-    MCInstPrinter *IP, const MCSubtargetInfo *STI, uint64_t SectionAddr,
-    uint64_t Start, uint64_t End, std::unordered_map<uint64_t, std::string> &Labels) {
+static void
+collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, MCInstrAnalysis *MIA,
+                          MCDisassembler *DisAsm, MCInstPrinter *IP,
+                          const MCSubtargetInfo *STI, uint64_t SectionAddr,
+                          uint64_t Start, uint64_t End,
+                          std::unordered_map<uint64_t, std::string> &Labels) {
   // So far only supports PowerPC and X86.
   if (!STI->getTargetTriple().isPPC() && !STI->getTargetTriple().isX86())
     return;
 
+  if (MIA)
+    MIA->resetState();
+
   Labels.clear();
   unsigned LabelCount = 0;
   Start += SectionAddr;
@@ -1298,6 +1303,9 @@ static void collectLocalBranchTargets(
           !Labels.count(Target) &&
           !(STI->getTargetTriple().isPPC() && Target == Index))
         Labels[Target] = ("L" + Twine(LabelCount++)).str();
+      MIA->updateState(Inst, Index);
+    } else if (!Disassembled && MIA) {
+      MIA->resetState();
     }
     Index += Size;
   }
@@ -1939,6 +1947,9 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj,
                                BBAddrMapLabels);
       }
 
+      if (DT->InstrAnalysis)
+        DT->InstrAnalysis->resetState();
+
       while (Index < End) {
         // ARM and AArch64 ELF binaries can interleave data and text in the
         // same section. We rely on the markers introduced to understand what
@@ -2155,6 +2166,10 @@ disassembleObject(ObjectFile &Obj, const ObjectFile &DbgObj,
               if (TargetOS == &CommentStream)
                 *TargetOS << "\n";
             }
+
+            DT->InstrAnalysis->updateState(Inst, SectionAddr + Index);
+          } else if (!Disassembled && DT->InstrAnalysis) {
+            DT->InstrAnalysis->resetState();
           }
         }
 

@arichardson
Copy link
Member

In general this looks good to me but I do worry a bit about the performance implications of regularly zeroing all the GPRS. Could you show the impact on disassembly of a large binary (e.g. statically linked clang for riscv?)

@mtvec
Copy link
Contributor Author

mtvec commented Oct 2, 2023

In general this looks good to me but I do worry a bit about the performance implications of regularly zeroing all the GPRS. Could you show the impact on disassembly of a large binary (e.g. statically linked clang for riscv?)

Here's a quick benchmark (release build without asserts):

$ file clang
clang: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, BuildID[sha1]=a4645a5d30617084df5efea9662d984d0a9dc918, for GNU/Linux 4.15.0, not stripped

$ size clang
     text	   data	    bss	      dec	    hex	filename
149308819	4260800	 622672	154192291	930c9a3	clang

$ hyperfine --parameter-list which main,pr './llvm-objdump.{which} -d clang > /dev/null' --warmup 3
Benchmark 1: ./llvm-objdump.main -d clang > /dev/null
  Time (mean ± σ):     56.003 s ±  0.206 s    [User: 32.285 s, System: 23.695 s]
  Range (min … max):   55.849 s … 56.511 s    10 runs

Benchmark 2: ./llvm-objdump.pr -d clang > /dev/null
  Time (mean ± σ):     56.651 s ±  0.071 s    [User: 32.911 s, System: 23.713 s]
  Range (min … max):   56.550 s … 56.797 s    10 runs

Summary
  ./llvm-objdump.main -d clang > /dev/null ran
    1.01 ± 0.00 times faster than ./llvm-objdump.pr -d clang > /dev/null

So there seems to be about 1% overhead.

If this is too much, one solution would be to not store an array of std::optional<uint64_t> but one containing just uint64_t and a separate 32-bit bitmap. I suppose that would remove most of the overhead of clearing state.

@arichardson
Copy link
Member

In general this looks good to me but I do worry a bit about the performance implications of regularly zeroing all the GPRS. Could you show the impact on disassembly of a large binary (e.g. statically linked clang for riscv?)

Here's a quick benchmark (release build without asserts):

$ file clang
clang: ELF 64-bit LSB pie executable, UCB RISC-V, RVC, double-float ABI, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, BuildID[sha1]=a4645a5d30617084df5efea9662d984d0a9dc918, for GNU/Linux 4.15.0, not stripped

$ size clang
     text	   data	    bss	      dec	    hex	filename
149308819	4260800	 622672	154192291	930c9a3	clang

$ hyperfine --parameter-list which main,pr './llvm-objdump.{which} -d clang > /dev/null' --warmup 3
Benchmark 1: ./llvm-objdump.main -d clang > /dev/null
  Time (mean ± σ):     56.003 s ±  0.206 s    [User: 32.285 s, System: 23.695 s]
  Range (min … max):   55.849 s … 56.511 s    10 runs

Benchmark 2: ./llvm-objdump.pr -d clang > /dev/null
  Time (mean ± σ):     56.651 s ±  0.071 s    [User: 32.911 s, System: 23.713 s]
  Range (min … max):   56.550 s … 56.797 s    10 runs

Summary
  ./llvm-objdump.main -d clang > /dev/null ran
    1.01 ± 0.00 times faster than ./llvm-objdump.pr -d clang > /dev/null

So there seems to be about 1% overhead.

If this is too much, one solution would be to not store an array of std::optional<uint64_t> but one containing just uint64_t and a separate 32-bit bitmap. I suppose that would remove most of the overhead of clearing state.

That seems better than expected and might be acceptable. However, I think using a bitset that can be zeroed with a single store should bring it down to near zero and will not add much complexity.

@mtvec
Copy link
Contributor Author

mtvec commented Oct 3, 2023

That seems better than expected and might be acceptable. However, I think using a bitset that can be zeroed with a single store should bring it down to near zero and will not add much complexity.

I implemented this and to my surprise, the overhead is still around 1%. After some digging, I noticed that the increase in runtime seems almost entirely due to the increased output size (total size increase is about 2% on the clang benchmark, the functions contributing the most to the increased runtime are output-related ones like llvm::sys::unicode::columnWidthUTF8).

Since this overhead is unavoidable, do you still feel it's worthwhile to implement the optimization?

@arichardson
Copy link
Member

That seems better than expected and might be acceptable. However, I think using a bitset that can be zeroed with a single store should bring it down to near zero and will not add much complexity.

I implemented this and to my surprise, the overhead is still around 1%. After some digging, I noticed that the increase in runtime seems almost entirely due to the increased output size (total size increase is about 2% on the clang benchmark, the functions contributing the most to the increased runtime are output-related ones like llvm::sys::unicode::columnWidthUTF8).

Since this overhead is unavoidable, do you still feel it's worthwhile to implement the optimization?

I guess it makes sense that printing and looking up symbols is more expensive than zeroing 512 bytes somewhat regularly. I think the optimization does make sense unless it makes the code a lot less readable. But I'll leave that decision to other reviewers. The change looks good to me now but please wait for a review from someone else before merging.

@mtvec
Copy link
Contributor Author

mtvec commented Oct 4, 2023

I think the optimization does make sense unless it makes the code a lot less readable.

I don't think it makes the code unreadable so I implemented the optimization.

This patch implements `MCInstrAnalysis` state in order to be able
analyze auipc+jalr pairs inside `evaluateBranch`.

This is implemented as follows:
- State: array of currently known GPR values;
- Whenever an auipc is detected in `updateState`, update the state value
  of RD with the immediate;
- Whenever a jalr is detected in `evaluateBranch`, check if the state
  holds a value for RS1 and use that to compute its target.

Note that this is similar to how binutils implements it and the output
of llvm-objdump should now mostly match the one of GNU objdump.

This patch also updates the relevant llvm-objdump patches and adds a new
one testing the output for interleaved auipc+jalr pairs.
@mtvec mtvec merged commit 95f924f into llvm:main Oct 20, 2023
2 of 3 checks passed
@mtvec mtvec deleted the riscv-eval-auipc-jalr branch October 20, 2023 06:36
fadlyas07 pushed a commit to greenforce-project/llvm-project that referenced this pull request Oct 21, 2023
* llvm-project/main:
  [analyzer][NFC] Substitute operator() with lambda in StreamChecker
  [Windows] Add git-clang-format wrapper bat file (llvm#69228)
  Clang: Define macro _MIPS_SPFPSET
  [clang-tidy][DOC] Fix 'table cell spanning'
  [Github] Remove CMake options from docs CI resetting defaults
  [Driver][NetBSD][NFC] Some cleaning up
  [MachineBasicBlock] Fix SlotIndexUpdater for insertion order (llvm#69424)
  [Serialization] Use llvm::is_contained (NFC)
  [polly] Use llvm::erase_value (NFC)
  [flang] Use llvm::any_of (NFC)
  [DebugInfo] Use llvm::erase_value (NFC)
  [compiler-rt] Switch LLD specific tests to a more precise option (llvm#69781)
  [llvm][CMake] Respect LIBCXX_HARDENING_MODE on command-line (llvm#68541)
  [compiler-rt] Fix a warning
  Fix typos in Debug.h (llvm#68761)
  [mlir] Avoid including <alloca.h> on DragonFly
  Fix typos and formatting in GettingStarted.md (llvm#68537)
  [AST] Use explicit type erasure in TypeSourceInfo constructor (llvm#68435)
  Add IR name to -print-pass-numbers output
  [MLIR][python bindings][fix] invalidate ops after PassManager run
  Revert "[mlir] Silence a few -Wunused-but-set-parameter warnings" (llvm#68667)
  [OpenMP][NFC] Move DebugKind to make it reusable from the host
  [Attributor][FIX] Interposable constants cannot be propagated
  [OpenMPOpt][FIX] Properly track changes to NestedParallelism
  [lldb][test] Turn ObjC string literals to C-style literals (NFC) (llvm#69793)
  [Github] Fetch number of commits in PR for docs action (llvm#69763)
  [clang][dataflow]Use cast_or_null instead of cast to prevent crash (llvm#68510)
  [MLIR][python bindings] invalidate ops after PassManager run (llvm#69746)
  [InstCombine] optimize powi(X,Y)/X with Ofast (llvm#67236)
  [InstCombine] Precommit tests for PR67216
  [CI] Set minimal permission on libcxx-check-generated-file workflow (llvm#69737)
  [mlir][sparse] support CSR/BSR conversion (llvm#69800)
  Fix build warning caused by mixed signed/unsigned compare (llvm#69797)
  [RISCV][GISel] Minor refactoring of RISCVCallReturnHandler and RISCVIncomingValueHandler to match other targets (llvm#69757)
  [mlir][sparse] implement sparse_tensor.crd_translate operation (llvm#69653)
  [mlir][sparse] fix stack overflow due to memref.alloca in loops (llvm#69786)
  Update SimplifyIndVar.cpp (llvm#69760)
  [VPlan] Support scalable vectors in outer-loop vectorization
  [Workflow] make code-format-helper.py mypy-safe (NFC) (llvm#69691)
  [OpenMP][mlir] Add translation for `if` in `omp.teams` (llvm#69404)
  [GISel] Add LookThroughInstrs for getIConstantVRegVal and getIConstan… (llvm#68327)
  [RISCV][llvm-mca] Vector Unit Stride Loads and stores use EEW and EMU… (llvm#69409)
  [MSVC] fix the build (llvm#69634)
  [-Wunsafe-buffer-usage] Add AST info to the unclaimed DRE debug notes for analysis
  [mlir][linalg] regionBuilder for transpose, broadcast (llvm#69742)
  [InstCombine][NFC] Precommit tests for https://reviews.llvm.org/D149918
  [LLD] [COFF] Add a separate option for allowing duplicate weak symbols (llvm#68077)
  [gn build] Port 538b7ba
  Reland [clang] [unittest] Add a test for Generic_GCC::GCCVersion::Parse (llvm#69078)
  [Modules] textual headers in submodules never resolve their `use`s (llvm#69651)
  [Libomptarget][NFC] Remove use of VLA in the AMDGPU plugin (llvm#69761)
  [Driver] Corrections for linker flags passed with relocatable linking on OpenBSD (llvm#67254)
  [clang-format] Annotate do while while
  [mlir][sparse] tiny cleanup making local 'using' explicit (llvm#69740)
  [clang-tidy] modernize-avoid-bind only return for non-void function (llvm#69207)
  Fixed typo in GPU libm device library warning (llvm#69752)
  Fix MLIR gcc7 build: ambiguous overload from user conversion
  [WebAssembly] Add exp10 libcall signatures (llvm#69661)
  [RISCV][InsertVSETVLI] Make VL preserving vsetvli emission more explicit [nfc]
  [RISCV][GISel] Support G_PTRTOINT and G_INTTOPTR (llvm#69542)
  Recommit "[RISCV][GISel] Disable call lowering for integers larger than 2*XLen. (llvm#69144)"
  [RISCV] Use LMUL=1 for vmv_s_x_vl with non-undef passthru (llvm#66659)
  Revert "[RISCV][GISel] Disable call lowering for integers larger than 2*XLen. (llvm#69144)"
  [LVI] Handle icmp of ashr. (llvm#68010)
  [RISCV][GISel] Disable call lowering for integers larger than 2*XLen. (llvm#69144)
  Revert "[SLP] Improve gather tree nodes matching when users are PHIs. (llvm#69392)"
  mlir/lib/Dialect/GPU/Transforms: improve context management in SerializeToCubin (llvm#65779)
  clarify tensor.pad docs for low/high config
  Remove accidental merge conflict marker; NFC
  [libc++][Android] Disable Android ABI list checking (llvm#69666)
  [tsan][go]: add atomic or/and functions (llvm#65695)
  Revert "[mlir][index][spirv] Add conversion for index to spirv (llvm#68085)"
  Workaround for MSVC ARM64 build performance regression (llvm#65215)
  [RISCV][CostModel] Recommit VPIntrinsics have same cost as their non-vp counterparts (llvm#68752)
  Diagnose use of VLAs in C++ by default
  [cmake] Option to create Ninja job pools depending on available resources (llvm#65274)
  clang-linker-wrapper/LinkerWrapperOpts.td: "--sysroot" => "--sysroot=" (llvm#65313)
  [RISCV] Use range-based for loops in RISCVOptWInstrs. NFC (llvm#69647)
  [Clang][OpenMP] Check if value is contained in array, not if it's contained in the first element (llvm#69462)
  [llvm] Use XMACROS for MachO platforms. (llvm#69262)
  [mlir][sparse] update COO buffer reader doc (llvm#69664)
  [clang][modules] Use file name as requested (llvm#68957)
  Revert "[Intrinsics][ObjC] Mark objc_retain and friends as thisreturn."
  Revert "[flang] Put ISO_Fortran_binding.h where it can be easily used (llvm#69121)"
  [MLIR][Presburger] Implement matrix inverse (llvm#67382)
  [lit] Clean up internal shell parse errors with ScriptFatal (llvm#68496)
  [BOLT][RISCV] Handle CIE's produced by GNU as (llvm#69578)
  [mlir][index][spirv] Add conversion for index to spirv (llvm#68085)
  Change owner of Hexagon backend
  [Peephole] Check instructions from CopyMIs are still COPY (llvm#69511)
  [llvm][AArch64][Assembly] Implement support to read/write FPMR (llvm#69618)
  [libc][NFC] Attempt to deflake gettimeofday_test. (llvm#69719)
  [gn build] Port 9a5c6f1
  [clang-tidy]Add new check bugprone-casting-through-void (llvm#69465)
  [gn build] Port 639a098
  [libc++] mdspan - implement layout_stride (llvm#69650)
  [lldb] Remove more references to lldb-vscode (llvm#69696)
  Revert "Diagnose use of VLAs in C++ by default"
  Diagnose use of VLAs in C++ by default
  Recommit "[VPlan] Insert Trunc/Exts for reductions directly in VPlan."
  [Interpreter] Add initialization of array members (llvm#66172)
  [GVN] Add tests for captured-before analysis (NFC)
  [AA] Make LI and EphValues option in EarliestEscapeInfo (NFC)
  [AMDGPU] Segregate 16-bit fix-sgpr-copies tests. (llvm#69353)
  [lldb][AArch64] Add release notes and documentation for SME (llvm#66767)
  Revert "[LIT] Print discovered tests and percentages (llvm#66057)" (llvm#69715)
  [clang] Handle templated operators with reversed arguments (llvm#69595)
  [LIT] Print discovered tests and percentages (llvm#66057)
  [run-clang-tidy] Accept export directory if PyYAML is not installed (llvm#69700)
  [mlir][SCF] Fix memory leak in LoopLikeSCFOpsTest.cpp
  [mlir][tosa] Check for 0-ranked-tensors during fold (llvm#68512)
  [mlir][Tosa] Fix Clamp verifier to handle quantized types.
  [MemCpyOpt] Remove unnecessary typed pointer handling (NFC)
  [lld][NFC] Remove unnecessary else statements. (llvm#69451)
  [mlir][SCF] Pass result of getAsOpFoldResult to getBoundedTileSize.
  [IR] Fix nested constant to instruction conversion (llvm#69682)
  [clang-format] Add space in placement new expression
  [clangd] Don't run slow clang-tidy checks by default
  [mlir][transform] Support for multiple top-level transform ops (llvm#69615)
  [flang][hlfir] Make the parent type the first component (llvm#69348)
  [NFC][LV] Add test for vectorizing fmuladd with another call (llvm#68601)
  [PowerPC] Remove HTM instruction from P10 SchedModel (llvm#69579)
  [flang][openmp] Update copyHostAssociateVar to use hlfir.assign for HLFIR (llvm#69441)
  [mlir][Bazel] Add missing dependencies after aa0208d
  [mlir][Tosa] fix fp16/bf16 support for Clamp min/max attributes (llvm#69192)
  [mlir][ArmSME] Name arguments of SME intrinsics (NFC) (llvm#69608)
  [Clang][SVE2.1] Add builtins for svrevd
  [flang] Remove test from llvm#69121 to fix gcc build with gcc < 10.0
  [Driver][DragonFly][NFC] Some cleaning up
  [BOLT] Filter itrace from perf script mmap & task events (llvm#69585)
  [FunctionAttrs] Regenerate test checks (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in standalone-translate.cpp (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in standalone-plugin.cpp (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in standalone-opt.cpp (NFC)
  Apply clang-tidy fixes for misc-unused-alias-decls in StandaloneExtension.cpp (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in StandalonePasses.cpp (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in StandaloneOps.cpp (NFC)
  Apply clang-tidy fixes for misc-include-cleaner in mlir-cat.cpp (NFC)
  [ExecutionEngine] Use llvm::is_contained (NFC)
  [llvm][llvm-readobj] Add AArch64 Tagged Address note type (llvm#68568)
  [run-clang-tidy,clang-tidy-diff] Accept directory as value for -export-fixes (llvm#69453)
  [lldb] Use llvm::erase_if (NFC)
  [DebugInfo] Use llvm::erase_if (NFC)
  [Transforms] Use llvm::erase_if (NFC)
  [mlir][scf] Implement getSingle... of LoopLikeOpinterface for scf::ParallelOp (llvm#68511)
  [mlir][tosa] Update pass pipeline for TosaToLinalg (llvm#69679)
  [llvm] Use llvm::find_if (NFC)
  [FunctionAttrs] Only check ArgMem effects when inferring argument attrs (llvm#69571)
  [Driver] Use llvm::any_of (NFC)
  [CMake] Avoid build spam by switching to Debug message (llvm#69497)
  [mlir][Bazel] Add missing dependency after d871dae
  [RISCV][MC] Implement evaluateBranch for auipc+jalr pairs (llvm#65480)
  [mlir] Use llvm::erase_value (NFC)
  [clangd] Use llvm::erase_value (NFC)
  [RISCV] Match prefetch address with offset (llvm#66072)
  [libc++] Fix uninitialized algorithms when using unconstrained comparison operators (llvm#69373)
  [BOLT] Use llvm::is_contained (NFC)
  [mlir][TilingInterface] Add scf::tileUsingSCFForallOp method to tile using the interface to generate `scf::forall`. (llvm#67083)
  [RISCV] Add more prefetch tests (llvm#67644)
  [MC][NFC] Allow MCInstrAnalysis to store state (llvm#65479)
  [DWARF] Remove unused declaration verifyIndexes
  [X86][AMX] remove related code of X86PreAMXConfigPass (llvm#69569)
  [Tablegen] Bugfix and refactor VarLenCodeEmitter HwModes. (llvm#68795)
  [mlir][scf] Implement getSingle... of LoopLikeOpInterface for scf::ForallOp (llvm#67883)
  [RISCV][NFC] Use !range bang operator (llvm#66494)
  [ValueTracking] Implement sdiv/udiv support for isKnownNonNullFromDominatingCondition (llvm#67282)
  [LoongArch] Fix td pattern for CACOP LDPTE and LDDIR
  [RISCV] Support Xsfvqmaccdod and Xsfvqmaccqoq extensions (llvm#68295)
  Fix test clang/test/Driver/cl-offload.cu
  [Scalar] Use LLVMContext::MD_mem_parallel_loop_access directly (NFC) (llvm#69549)
  [libc++][Android] Don't list Android as supported yet (llvm#69660)
  [libc++][Android] Mark tests XFAIL/UNSUPPORTED (llvm#69271)
  [flang][openacc] Do not error when bind symbol is defined later or external (llvm#69657)
  [mlir][sparse] support BSR for cuSPARSE (libgen path only) (llvm#69646)
  [libc][NFC] Forcing data type in gettimeofday_test when comparing the diff. (llvm#69652)
  [RISCV] Fix some GlobalISel tests using -march instead of -mtriple.
  [analyzer] WebKit checkers: recognize dynamicDowncast as a safe function.
  [mlir][python] simplify extensions (llvm#69642)
  [gn] port ab17ecd
  [mlir][spirv][webgpu] Add lowering of IAddCarry to IAdd (llvm#68495)
  [scudo] Add ConditionVariable in SizeClassAllocator64 (llvm#69031)
  [mlir][sparse] introduce sparse_tensor.crd_translate operation (llvm#69630)
  [bazel][mlir] fixes for a2288a8
  [lldb] Remove FileSpecList::GetFilesMatchingPartialPath (NFC)
  [RISCV] Apply `IsSignExtendingOpW = 1` on `fcvtmod.w.d` (llvm#69633)
  [Fuchsia] Add lldb-dap to LLDB distribution
  [mlir][sparse] Remove old syntax (llvm#69624)
  [mlir][python] remove mixins (llvm#68853)
  [libc++][Android] Add libcxx-builder-android Docker image (llvm#69273)
  [lldb][NFCI] Remove duplicated code in DWARFParser (llvm#69531)
  [flang][openacc] Warn for num_gangs, num_workers and vector_length on acc serial (llvm#69622)
  workflows/release-tasks: Fix release note artifact upload (llvm#69522)
  [libc] Partially implement 'rand' for the GPU (llvm#66167)
  [libc] Rework the 'fgets' implementation on the GPU (llvm#69635)
  [FunctionComparator] Differentiate instructions passing different MDStrings (llvm#69543)
  [libc++][Android] Support libc++ testing on Android (llvm#69274)
  [NFC] Format some code in GlobalVariable.h
  [mlir][sparse] use uint64_t type for dim/rank consistently (llvm#69626)
  [AMDGPU] Add doc updates for kernarg preloading (llvm#67516)
  [clang-format][NFC] Use UnwrappedLineParser::eof() for consistency
  [lldb] Remove FileSpecList::GetFileSpecPointerAtIndex (NFC)
  [clang][index] Fix processing of CompoundAssignOperator at setting up reference roles (llvm#69370)
  [mlir][drr] Set operand segment in rewrite
  [LV] Add interleave only test case with reduction requiring casts.
  [libcxx][test] Fix empty.gen selftest on windows (llvm#69403)
  [libc][libm][GPU] Add missing vendor entrypoints to the GPU version of `libm` (llvm#66034)
  [gn] port 01263c6 (lldb-vscode -> lldb-dap)
  [gn build] Port 460e843
  [lldb] Remove CompileUnit::SetSupportFiles overload (NFC)
  Disallow _BitInt as an underlying type for an enumeration
  [libc][NFC] Fix features.h.def file header
  [ELF][test] Demonstrate --no-allow-shlib-undefined behavior with a hidden relocatable object file definition
  [RISCV] Add getSameRatioLMUL (llvm#69570)
  [AArch64][GlobalISel] Fix miscompile on carry-in selection (llvm#68840)
  [AMDGPU] Allow lit() on operands which do not accept modifiers (llvm#69527)
  [libc] Fix accidental LIBC_NAMESPACE_clock_freq (llvm#69620)
  [InstCombine] Don't consider aligned_alloc removable if icmp uses result (llvm#69474)
  [unittest] Refactoring the gtest sharding option. (llvm#69537)
  [lldb] Fix ASCII art in CommandObjectSource.h (NFC)
  [docs][NewPM] Add comment about declaring analysis managers in the correct order
  [gn build] Port 01263c6
  [gn build] Port
  Allow empty dimension arrays in `linalg::inferContractionDims` (llvm#69496)
  Fix test clang/test/Driver/cl-offload.cu
  [lldb] Rename lldb-vscode to lldb-dap (llvm#69264)
  [DebugInfo] Correctly report header parsing errors from DWARFContext::fixupIndex (llvm#69505)
  [VectorCombine] Use isSafeToSpeculativelyExecute to guard VP scalarization (llvm#69494)
  [Clang][SVE2.1] Add builtins and intrinsics for SVBFMLSLB/T
  AMDGPU: Minor updates to program resource registers (llvm#69525)
  [mlir][sparse] Update verifier for block sparsity and singleton (llvm#69389)
  [hwasan] Fix rare false negative (zero tag) in two more test cases (llvm#69491)
  [SLP][NFC]Add avx2 test run, NFC.
  [Clang][SVE2.1] Add builtins for 2-way svdot (vectors, indexed)
  [mlir][ODS] Add `OptionalTypesMatchWith` and remove a custom assemblyFormat (llvm#68876)
  Let clang-cl support CUDA/HIP (llvm#68921)
  InlineSpiller: Delete assert that implicit_def has no implicit operands (llvm#69087)
  [flang][openacc] Warn about misplaced end loop directive and ignore it (llvm#69512)
  [TwoAddressInstruction] Handle physical registers with LiveIntervals (llvm#66784)
  [Clang][SVE2.1] Add builtins for Multi-vector load and store
  [flang] Put ISO_Fortran_binding.h where it can be easily used (llvm#69121)
  Fixed some wmma store builtins that had non-const src param
  [MemoryBuiltins] Simplify getAllocFnKind() implementation (NFC)
  [libc][math][NFC] Remove global scope constants declaration in math tests (llvm#69558)
  [DIAG][msan] fix libc check string for dladdr1 call (llvm#69359)
  [AMDGPU] Constant fold FMAD_FTZ (llvm#69443)
  [InstCombine] Add additional aligned allocation tests for llvm#69474.
  [libomptarget][OpenMP] Initial implementation of omp_target_memset() and omp_target_memset_async() (llvm#68706)
  [Libomptarget] Add a test for the `libc` implementation of assert (llvm#69518)
  [clang][Interp] Create only globals when initializing a global variable
  [DAG] canCreateUndefOrPoison - remove AssertSext/AssertZext assumption that they never create undef/poison
  [DAG] Add test coverage for Issue llvm#66603
  [clang][Interp][NFC] Use a const reference in IncDecHelper
  Rename test to avoid overlapping with debug output
  Re-apply '[AArch64] Enable "sink-and-fold" in MachineSink by default (llvm#67432)'
  ISel: introduce vector ISD::LRINT, ISD::LLRINT; custom RISCV lowering (llvm#66924)
  [Clang] Actually fix tests for __builtin_vectorelements (llvm#69589)
  [NVPTX] Preserve v16i8 vector loads when legalizing
  [AMDGPU] Remove legality checks from imm folding in shrink. NFCI. (llvm#69539)
  [DAG] Expand vXi1 add/sub overflow operations as xor/and (llvm#69191)
  [Clang][SVE2.1] Add svwhile (predicate-as-counter) builtins
  [clang][Interp][NFC] Use an APInt instead of APSint
  [ARM] fix "+fp.dp" in multilib selection (llvm#67412)
  Fix __builtin_vectorelements tests with REQUIRES (llvm#69582)
  [AMDGPU] PeepholeSDWA: Don't assume inst srcs are registers (llvm#69576)
  [clang][Interp][NFC] Add more tests for bitfield initializers
  [Flang][OpenMP][Sema] Add directive rewrite pass to support atomic_default_mem_order REQUIRES clause
  Reapply "[dataflow] use true/false literals in formulas, rather than variables"
  [libc] Fix accidental LIBC_NAMESPACE_syscall definition (llvm#69548)
  Reapply "[mlir][transform] Support symlinks in module loading. Reorganize tests. (llvm#69329)"
  [Clang][SVE2.1] Add pfalse builtin
  Revert "[mlir][transform] Support symlinks in module loading. Reorganize tests. (llvm#69329)"
  [clang] Provide an SSE4.2 implementation of identifier token lexer (llvm#68962)
  [mlir][transform] Support symlinks in module loading. Reorganize tests. (llvm#69329)
  [Clang] Add __builtin_vectorelements to get number of elements in vector (llvm#69010)
  [FunctionAttrs] Add additional tests for writeonly (NFC)
  [mlir][nvvm] Introduce `nvvm.stmatrix` Op (llvm#69467)
  [RISCV] Combine (and (select cond, x, -1), c) to (select cond, x, (and x, c)) with Zicond. (llvm#69563)
  [TableGen] Update editor modes for new keywords and bang operators. (llvm#68897)
  [ReleaseNotes][TableGen] Add `dump` and `!repr`. (llvm#68893)
  [compiler-rt] Fix a warning
  [Tablegen] Add keyword `dump`. (llvm#68793)
  [clangd] Disable crashy unchecked-optional-access tidy check (llvm#69427)
  [X86] Support -march=pantherlake,clearwaterforest (llvm#69277)
  [GVN] Fix use-after-free in load PRE with select available value (llvm#69314)
  [IR] Don't mark experimental.guard as willreturn (llvm#69433)
  Reapply "[clang analysis][thread-safety] Handle return-by-reference..… (llvm#68572)
  Revert "[Github] Make PR formatting job only run with C/C++ changes (llvm#69556)"
  Revert "[VPlan] Insert Trunc/Exts for reductions directly in VPlan."
  [clang][Interp] IntegralAP zero-initializers (llvm#68081)
  [Github] Add steps to build clang docs to CI (llvm#69550)
  [Github] Make PR formatting job only run with C/C++ changes (llvm#69556)
  [RISCV] Remove FrameIndex case in lui+addi MacroFusion (llvm#68701)
  [RISCV] Replace PostRAScheduler with PostMachineScheduler (llvm#68696)
  [SPIR-V] Remove calls to deprecated PointerType methods (1/2) (llvm#68336)
  [RISCV] Fix assertion failure from performBUILD_VECTORCombine when the binop is a shift. (llvm#69349)
  [SPIR-V] Emit proper pointer type for OpenCL kernel arguments (llvm#67726)
  [mlir] Only attempt to vectorize conv if conv.
  [libc++] Improve the tests for std::basic_stringbuf's constructors and assignment operators
  [libc++] Add assertions for potential OOB reads in std::nth_element (llvm#67023)
  [libc++][docs] Update contributing docs to reflect the move to GitHub (llvm#69386)
  [OpenCL][RISCV] Support SPIR_KERNEL calling convention (llvm#69282)
  [libc++] Fix inconsistency between is_lock_free and is_always_lock_free (llvm#68109)
  [libc++] Move the check-generated-files job to Github Actions (llvm#68920)
  nfc, add test case for llvm-symbolizer on XCOFF
  [Memory] Call __clear_cache in InvalidateInstructionCache on LoongArch (llvm#67285)
  [libc] Add simple features.h with implementation macro (llvm#69402)
  [mlir] Use the process (host) triple in MLIRTargetLLVMTests (llvm#69538)
  [mlir] Add debug messages for failures of isValidIntOrFloat
  [Support] Use StringRef::contains_insensitive (NFC)
  [LoongArch] Improve codegen for atomic cmpxchg ops (llvm#69339)
  [LoongArch] Implement COPY instruction between CFRs (llvm#69300)
  [ELF][test] --emit-relocs: test ALLOC sections discarded by --gc-sections and referenced by non-ALLOC
  [InstCombine] Refactor matchFunnelShift to allow more pattern (NFC) (llvm#68474)
  [mlir][sparse] connect MapRef's lvl2dim with latest AffineMap computation (llvm#69540)
  [RISCV][GISel] Support passing arguments through the stack. (llvm#69289)
  [Driver][DragonFly] Fixes for linker path and command-line option handling (llvm#69095)
  [llvm] Use StringRef::contains (NFC)
  [clang-format][NFC] Take a constant conjunct out of a loop condition
  [llvm] Use StringRef::contains (NFC)
  [X86][RFC] Support AVX10 options (llvm#67278)
  [ELF] Set large section flag for globals with an explicit section (llvm#69396)
  [clang] Expand invalid PCM diagnostic (llvm#69489)
  [RISCV][GISel] Add ISel supports for SHXADD from Zba extension (llvm#67863)
  [WebAssembly] add: hidden option to disable slow wasm pass (llvm#67715)
  [Tosa] Rename variables to coding style guideline (llvm#69509)
  [flang][openacc] Avoid privatizing symbols during semantics (llvm#69506)
  [DWARFLinker] Only extract unit DIEs when cloning clang modules (llvm#69495)
  [Kaleidoscope] Register new dependencies introduced by llvm#69032. (llvm#69510)
  [clang-format] Fix a bug in annotating TrailingReturnArrow (llvm#69249)
  workflows/release-lit: Pass correct build directory to pypa/gh-action-pypi-publish (llvm#69438)
  workflows/release-lit: Fix dev suffix removal (llvm#69397)
  [RISCV] Don't let performBUILD_VECTORCombine form a division or remainder with undef elements. (llvm#69482)
  [AMDGPU] Make S_MOV_B64_IMM_PSEUDO foldable (llvm#69483)
  [mlir][sparse] Update examples in Ops.td (llvm#69499)
  [ModuleInliner] Update a comment (NFC)
  [SLP][NFC]Use MutableArrayRef instead of SmallVectorImpl&, rename function, NFC.
  [ModuleInliner] Use SmallVector::pop_back_val (NFC)
  Initialize sigset in asan_interceptors (llvm#69502)
  [mlir][sparse] implement non-permutation MapRef encoding (llvm#69406)
  [compiler-rt] Fix a warning
  [CodeGen] -fsanitize=alignment: add cl::opt sanitize-alignment-builtin to disable memcpy instrumentation (llvm#69240)
  [ARM] Lower i1 concat via MVETRUNC
  [libc++][NFC] Refactor the core logic of operator new into helper functions (llvm#69407)
  [AMDGPU] Add missing test checks. NFC. (llvm#69484)
  [libc++][NFC] Reformat new.cpp and stdlib_new_delete.cpp
  [VectorCombine] Add tests for unspeculatable VP binops. NFC
  [CFI/MergeFunctions] Modify MergeFunctions to propagate type information (llvm#68628)
  [HIP] Document func ptr and virtual func (llvm#68126)
  [CodeExtractor] Allow to use 0 addr space for aggregate arg (llvm#66998)
  [hwasan] Fix rare false negative (zero tag) in stack-uar.c (llvm#69374)
  [mlir][nvgpu] Add predicate argument to NVGPU Ops (llvm#69322)
  [clang-tidy][DOC] Fix syntax in coroutine-hostile-raii.rst
  [MLIR] reverse int8 type's printing logic (llvm#69361)
  [TableGen] SubtargetEmitter must use std::nullopt (llvm#69475)
  [SystemZ] Support builtin_{frame,return}_address() with non-zero argument (llvm#69405)
  Attributes (llvm#69358)
  [Libomptarget] Make the references to 'malloc' and 'free' weak. (llvm#69356)
  [SLP][NFC]Use MutableArrayRef instead of SmallVectorImpl& in param, NFC.
  [Sema] Add check for bitfield assignments to integral types (llvm#69049)
  Add missing include breaking the modules build
  [clang-tidy][DOC] Fix syntax in coroutine-hostile-raii.rst
  [mlir] ADTExtras: include mlir/Support/LLVM.h (llvm#69479)
  [clang-tidy][DOC] Fix list.rst
  [Kaleidoscope] Switch to the new PassManager. (llvm#69032)
  [AMDGPU] Add legality check when folding short 64-bit literals (llvm#69391)
  [Presburger] Fraction: resolve ambiguous overload in some cases
  Add a FIXME comment; NFC
  [CONCEPTS]Corrected comparison of constraints with out of line CTD (llvm#69244)
  [DebugInfo] Separate error generation from reporting in DWARFHeaderUnit::extract (llvm#68242)
  [SLP] Improve gather tree nodes matching when users are PHIs. (llvm#69392)
  [llvm][CMake] Check dependency cxx source compiles (llvm#68549)
  [MLIR][Doc] Clarify the cf.asssert doc that this is a runtime assertion
  [ELF] Merge copyLocalSymbols and demoteLocalSymbolsInDiscardedSections (llvm#69425)
  [mlir] Add ContractionOpInterface utility functions for vector matrix multiplication (llvm#68945)
  [LLVM] Add new attribute `optdebug` to optimize for debugging (llvm#66632)
  [flang][openacc] Fixed private/reduction for combined constructs. (llvm#69417)
  [InstCombine] Add aligned_alloc with pointer icmp as only use.
  [lldb] Fix linking to libtinfo (llvm#69458)
  [Clang][SVE2p1] Add svpsel builtins
  [mlir][python] Expose `PyInsertionPoint`'s reference operation (llvm#69082)
  Revert "Correctly compute conversion seq for args to fn with reversed param order (llvm#68999)"
  [Driver] Link Flang runtime on Solaris (llvm#65644)
  [Clang] Fill in documentation gaps for some attributes (llvm#68967)
  [mlir] Fix use-after-free bugs in {RankedTensorType|VectorType}::Builder (llvm#68969)
  [AMDGPU] Save/Restore SCC bit across waterfall loop. (llvm#68363)
  [mlir][LLVM] Improve function debug info import (llvm#69446)
  [clang] Bail out if the result of function template instantiation is not a function type. (llvm#69459)
  [mlir][nvvm] Use NVVMMemorySpace instead of hardcoded values (nfc)
  [builtins] Convert more int to fp functions to use common implementation (llvm#67540)
  [Support] Add KnownBits::computeForSubBorrow (llvm#67788)
  [gn build] Port 1072b94
  Revert "[clang] [unittest] Add a test for Generic_GCC::GCCVersion::Parse (llvm#69078)"
  [ARM] Correct v2i1 concat extract types.
  [BOLT][test] Update checkvma-large-section.test (llvm#69419)
  [clang][Interp][NFC] Remove from(Boolean) overload
  [lld] Sort code section chunks by range types on Arm64EC targets. (llvm#69099)
  [Clang] Run update_cc_test_checks across SVE acle tests.
  Add missing test from llvm#68661
  Revert "[AMDGPU] Remove Code Object V3 (llvm#67118)"
  [MLIR][TOSA] Fix f16/bf16 support for MaxPool2D (llvm#69332)
  Revert "Detect against invalid variant index for LibStdC++ std::variant data formatters (llvm#69253)"
  [AMDGPU] Fix image intrinsic optimizer on loads from different resources (llvm#69355)
  [SVE ACLE] Allow default zero initialisation for svcount_t. (llvm#69321)
  [compiler-rt] Only build SME ABI routines for baremetal or platforms that have sys/auxv.h (llvm#69423)
  [gn build] Port b4b35a5
  [clang] [unittest] Add a test for Generic_GCC::GCCVersion::Parse (llvm#69078)
  [clang][USR] Encode full decl-context also for anon namespaces (llvm#68325)
  nfc, address post commit comments related to code format for 581c64a
  [BOLT] Fix instrumentation test (llvm#69383)
  [AArch64][GlobalISel] Precommit indexed sextload/zextload tests.
  Add RV64 constraint to SRLIW (llvm#69416)
  [flang] Fold IS_CONTIGUOUS of component refs with non-contiguous base (llvm#69327)
  [DAGCombiner] Transform `(icmp eq/ne (and X,C0),(shift X,C1))` to use rotate or to getter constants.
  [X86] Add tests for transform `(icmp eq/ne (and X, C0), (shift X, C1))`; NFC
  [ModuleInliner] Fix the heap maintenance (llvm#69251)
  [CodeGen] Remove unused function isMSInlineAsm (llvm#69132)
  [DAG] Constant fold FMAD (llvm#69324)
  [Driver][NFC] Remove identifier with the comment (llvm#68351)
  [PowerPC] Auto gen test checks for llvm#69299. NFC.
  [CodeLayout] CDSortImpl: remove HotChains and remove linear-time erase_value from mergeChains (llvm#69276)
  [RISCV][GlobalISel] Select G_FRAME_INDEX (llvm#68254)
  [Docs][NFC] fix URL
  Detect against invalid variant index for LibStdC++ std::variant data formatters (llvm#69253)
  [M68k] Fix assertion build after cc6a5ea
  [Docs] Remove future extensions section from writing a pass docs (llvm#69286)
  [sanitizer_common] Use 38-bit mmap range for Fuchsia (llvm#69387)
  [LangRef] "cc 10" -> "ghccc" (llvm#69380)
  [unittest] Add option to allow disabling sharding in unittest (llvm#67063)
  Fix build: the dump() method is only available in Asserts build (NFC)
  Turn an assert in mlir-tblgen into a runtime check to be more user friendly (NFC)
  [LLDB][NFC] Move some constructors to their cpp file
  [lldb] Scalar::GetValue() should take a Stream by reference (llvm#69231)
  [LLDB][NFC] Add a missing namespace
  [ELF] Remove unused setSymbolAndType after llvm#69295. NFC
  [SLP][NFC] Try to cleanup and better document some isGatherShuffledEntry code. (llvm#69384)
  [NFC][SLP] Test case exposing gather nodes matching deficiency affecting cost. (llvm#69382)
  [flang][openacc] Accept scalar integer expression in the if clause (llvm#69381)
  [ELF] Demote symbols in /DISCARD/ discarded sections to Undefined (llvm#69295)
  [llvm-profdata] Do not create numerical strings for MD5 function names read from a Sample Profile. (llvm#66164)
  [CMake] Support per-target linker flags (llvm#68393)
  [ELF] Merge demoteSymbols and isPreemptible computation. NFC
  [MLIR][Doc] Prepend "Variadic of" in front of variadic operands (llvm#69285)
  [ELF] Move demoteSymbols to Writer.cpp. NFC
  [mlir][sparse] Populate lvlToDim (llvm#68937)
  [OpenMPIRBuilder] Added `if` clause for `teams` (llvm#69139)
  [libcxx] [test] Add a test parameter for disabling memory intensive tests (llvm#68214)
  [ELF][test] Improve relocatable link & /DISCARD/ test
  [CodeGen][NFC] Fix formatting
  [CodeGen] Temporary disable the unreachable
  [gn build] Port 3151281
  [gn] port dd64c82
  [mlgo] Fix tests post 760e7d0
  [CodeGen] Avoid potential sideeffects from XOR (llvm#67193)
  Correctly compute conversion seq for args to fn with reversed param order (llvm#68999)
  [clang-tidy] Add check to diagnose coroutine-hostile RAII objects (llvm#68738)
  [mlir][sparse] avoid tensor to memref conversion in sparse tensor rewri… (llvm#69362)
  [VPlan] Insert Trunc/Exts for reductions directly in VPlan.
  [unittest] Allow LLVM unit test to run under a wrapper program. (llvm#66821)
  [NVPTX] Fixed few more corner cases for v4i8 lowering. (llvm#69263)
  [libc] Implement the 'ungetc' function on the GPU (llvm#69248)
  [mlir][sparse] implementating stageSparseOpPass as an interface (llvm#69022)
  [AMDGPU] support 64-bit immediates in SIInstrInfo::FoldImmediate (llvm#69260)
  [SLP]Fix PR69196: Instruction does not dominate all uses
  [AArch64] Convert negative constant aarch64_neon_sshl to VASHR (llvm#68918)
  [AArch64] Add additional tests for fptosi/fptoui. NFC
  [YAMLParser] Improve plain scalar spec compliance (llvm#68946)
  [DAG] SimplifyDemandedBits - fix isOperationLegal typo in D146121
  [mlir][sparse] complete migration to dim2lvl/lvl2dim in library (llvm#69268)
  [X86, Peephole] Enable FoldImmediate for X86
  [flang] Round derived type byte sizes up to alignment multiple (llvm#67571)
  [Clang][SVE2.1] Add svpext builtins
  [InstCombine] Create a class to lazily track computed known bits (llvm#66611)
  [hwasan] Exclude bcmp interceptor test from Android
  Enable v for RISCV64 Android (llvm#69261)
  Reland: [AArch64][GlobalISel] Adopt dup(load) -> LD1R patterns from SelectionDAG
  [Github][OpenMP] Adding rule for OpenMP label (llvm#65331)
  [DAG] foldConstantFPMath - accept ArrayRef<SDValue> Ops instead of explicit N1/N2 ops
  [RISCV] Use separate CCValAssign for both parts of f64 with ilp32. (llvm#69129)
  [AMDGPU] Simplify definition of SIbuffer_atomic_*. NFC.
  [flang][runtime] Fix SAME_TYPE_AS()/EXTENDS_TYPE_OF() for CLASS(*) (llvm#67727)
  [AArch64][SME] Remove immediate argument restriction for svldr and svstr (llvm#68908)
  [X86] Enable bfloat type support in inline assembly constraints (llvm#68469)
  [gn build] Port 088d272
  Update documentation on x86 constraint codes (llvm#68830)
  [flang] Fix constant subscript operations (llvm#68352)
  [HIP][Clang][CodeGen] Simplify test for `hipstdpar`
  [LoongArch] Precommit a test for atomic cmpxchg optmization
  [ADT][DebugInfo][RemoveDIs] Add extra bits to ilist_iterator for debug-info
  [Clang][SVE2.1] Add svcntp prototype
  [CUDA][HIP] Fix init var diag in temmplate (llvm#69081)
  [TargetParser][AMDGPU] Fix getArchEntry(). (llvm#69222)
  [AMDGPU] Remove support for no-return buffer atomic intrinsics. NFC. (llvm#69326)
  [AMDGPU][AsmParser] Eliminate custom predicates for named-bit operands. (llvm#69243)
  [Bazel] Fix dependencies for clang codegen
  [Bazel] fix typo
  [Bazel] disable preload-library.mlir test
  [gn] port 3694697
  [gn] port 3694697
  [mlir][Tosa] Fix test failure when running with Asan.
  [MLIR][NVGPU] Test warpgroup matrix multiply 128x128x64 (llvm#68817)
  [mlir][nvvm] Add prefetch.tensormap (llvm#67564)
  [InstCombine] Don't mix X << Y / Z << Y with X << Y / X << Z (llvm#69302)
  [mlir][nvgpu] Fix packing accumlator matrix (llvm#69316)
  [mlir][nvvm] Support predicates in `BasicPtxBuilder` (llvm#67102)
  [HIP][Clang][CodeGen] Add CodeGen support for `hipstdpar`
  [X86] vselect.ll - add vXi8 select-by-constant tests with repeated/broadcastable shuffle mask
  [mlir][transform] Fix new interpreter and library preloading passes. (llvm#69190)
  [AArch64] Allow only LSL to be folded into addressing mode (llvm#69235)
  [mlir][nvgpu] Improve `WarpgroupAccumulator` type to simplify IR  (llvm#68728)
  [libc++] Eliminate extra allocations from `std::move(oss).str()` (llvm#67294)
  Reland "[MLIR][LLVM] Change addressof builders to use opaque pointers" (llvm#69292)
  [ci] diff with main merge-base (llvm#69308)
  [clang][NFC] Replace TypeAlignment with alignof(T) (llvm#69185)
  [TableGen] Handle duplicate rules in combiners (llvm#69296)
  [TableGen] Use buildConstant to emit apply pattern immediates (llvm#66077)
  [clang][Interp][NFC] Add thread_local tests
  [compiler-rt][HWASAN] Add missing include in deep-recursion.c test
  [lldb][lldb-vscode] Add example configuration for connecting to a remote gdbserver (llvm#68866)
  [AArch64] Fix -Wunused-variable in AArch64LowerHomogeneousPrologEpilog.cpp (NFC)
  [flang][hlfir] Do not emit extra declare for dummy used in BLOCK (llvm#69184)
  [flang][runtime] fix buildbot failure after llvm#69199
  [flang][runtime] Fix another IsContiguous edge case (llvm#69199)
  [flang] Deallocate INTENT(OUT) dummy allocatable components (llvm#69164)
  [AArch64] Fix pairing different types of registers when computing CSRs. (llvm#66642)
  Revert "[MLIR][LLVM] Change addressof builders to use opaque pointers (llvm#69215)"
  [MLIR][LLVM] Change addressof builders to use opaque pointers (llvm#69215)
  [CI] Fix documentation build CI job
  [hwasan] Fix and re-enable deep-recursion.c (llvm#69265)
  [Clang] Fix dependence handling of nttp for variable templates (llvm#69075)
  [CI] Add Github actions job to build LLVM documentation (llvm#69269)
  [clang][Interp] Check pointer inc/dec ops for null (llvm#69168)
  [M68k][NFC] Fix some unused variable warnings
  [RISCV][GISel] Add legalizer for G_UMAX, G_UMIN, G_SMAX, G_SMIN (llvm#69150)
  Revert "[clang][Sema] Use original template pattern when declaring implicit deduction guides for nested template classes (llvm#68379)"
  [RISCV] Support STRICT_FP_ROUND and STRICT_FP_EXTEND when only have Zvfhmin (llvm#68559)
  [clang] Implement C23 <stdckdint.h>
  [flang] Fix construct names on labeled DO (llvm#67622)
  [flang] Handle separate module procedures with INTERFACE dummy arguments (llvm#67608)
  [flang][NFC] Speed up large DATA statement initializations (llvm#67585)
  [compiler-rt] Fix build of builtins on Windows
  [RISCV] Improve performCONCAT_VECTORCombine stride matching
  [RISCV] Pre-commit concat-vectors-constant-stride.ll
  [flang] Remove IEEE_DENORM from IEEE_ALL (llvm#67573)
  [flang] Fix CFI_CDESC_T for C++ interoperability (llvm#67568)
  llvm-gsymutil now handles empty linkage names correctly. (llvm#68931)
  [compiler-rt] Implement __extendxftf2 and __trunctfxf2 for x86_64 (llvm#66918)
  [flang][runtime] Fix edge cases with ROUND=UP/DOWN (llvm#67508)
  [TOSA] Add StatefulOps to TOSA Dialect (llvm#66843)
  [HWASAN] Add bcmp interceptor (llvm#69257)
  [flang] Avoid needless overflow when folding NORM2 (llvm#67499)
  [flang] Catch a dangerous ambiguity in standard Fortran (llvm#67483)
  [docs] Fix google meet link
  [docs] Add a new GlobalISel office hours session to the list.
  [hwasan][test] Fix regex so deep-recursion.c is unsupported on aarch64 targets (llvm#69254)
  [mlir][sparse] remove sparse2sparse path in library (llvm#69247)
  [flang] Ensure component attributes affect characteristics (llvm#67465)
  [clang-format] Allow default values for template parameters in lambda (llvm#69052)
  [flang][runtime] Better non-repeatable RANDOM_INIT() (llvm#67363)
  [RS4GC] Copy argument attributes from call to statepoint (llvm#68475)
  [flang] Submodule names can clash only with submodule names (llvm#67361)
  [flang][runtime] Implement EX editing for input & output (llvm#67208)
  [clang-tidy][NFC] Clarify documentation for misc-definitions-in-headers
  [libc++][test] Add `stop_token` benchmark (llvm#69117)
  [Clang][NFC] Use correct tool name for NVIDIA's 'nvlink'
  [libc] Add simple long double to printf float fuzz (llvm#68449)
  Revert "[SLP]Fix PR69196: Instruction does not dominate all uses"
  [flang][runtime] Handle incomplete NAMELIST input derived type compon… (llvm#66831)
  [llvm-rc] Accept filenames provided as multiple string literals (llvm#68881)
  [YAMLTraits] Fix std::optional input on empty documents (llvm#68947)
  Revert "[gn build] Add rules for crtbegin/end (llvm#66012)"
  [SLP]Fix PR69196: Instruction does not dominate all uses
  [mlir][sparse] cleanup of COO (llvm#69239)
  [flang][openacc] Support array with dynamic extents in firstprivate recipe (llvm#69026)
  [flang][openacc] Support array with dynamic extents in reduction recipe (llvm#68829)
  [gn build] Add rules for crtbegin/end (llvm#66012)
  [LV] Invalidate disposition of SCEV values after loop vectorization (llvm#69230)
  [flang] Regularize TODO messages for coarray related features (llvm#69227)
  [VPlan] Also print operands of canonical IV (NFC).
  [clang][Sema] Use original template pattern when declaring implicit deduction guides for nested template classes (llvm#68379)
  [lld][NFC] Factor out isCodeSection helper. (llvm#69193)
  [LV] Replace value numbers with patterns in tests (NFC).
  [lld] Add support for relocations in x86_64 objects on Arm64EC targets. (llvm#69098)
  [mlir][sparse] fix crash due to different std::sort implementation. (llvm#69236)
  [clang][ASTMatcher] fix hasAnyBase not binding submatchers (llvm#67939)
  [clang][dataflow] Check for backedges directly (instead of loop statements). (llvm#68923)
  [mlir][sparse][NFC] fix variable naming convension (llvm#69232)
  [libc++] Simplify the tuple constructor overload set
  [NFC] Move StableHashing.h from CodeGen to ADT (llvm#67704)
  [llc][PPC] Move PIC check into TargetMachine (llvm#66727)
  [mlir][sparse] simplify reader construction of new sparse tensor (llvm#69036)
  [RISCV] Refactor performCONCAT_VECTORSCombine. NFC (llvm#69068)
  [flang][openacc] Fix missing bounds for allocatable and pointer array component (llvm#68914)
  [flang][openacc][NFC] Simplify lowering of recipe (llvm#68836)
  [clang] Use IgnoreParensSingleStep in more places
  [GlobalISel] Remove unused function narrowToSmallerAndWidenToSmallest (llvm#69130)
  [CodeGen] Remove LiveVariables::{isPHIJoin,setPHIJoin} (llvm#69128)
  [libunwind][AIX] Fix problem with stepping up from a leaf function when unwinding started in a signal handler
  [libc++] Remove workaround for clang-tidy 16 in the test suite setup code (llvm#69035)
  [flang][openacc][NFC] Issue better error message when directive is wrong (llvm#69034)
  [compiler-rt][hwasan] Disable deep-recursion.c test on AArch64 Linux
  [Flang][OpenMP] Port three tests to HLFIR flow
  [libc++] Add missing <__availability> include
  [mlir] Fix '-Wunused' warning. NFC
  [AMDGPU] Add i1 mul patterns (llvm#67291)
  [Flang][OpenMP] Port atomic read, write tests to HLFIR flow
  [amdgpu] Disable openmp test that is blocking CI after changing hardware, need to diagnose memory fault
  [SelectionDAG] Tidy up around endianness and isConstantSplat (llvm#68212)
  [clang][analyzer] Move checker alpha.unix.StdCLibraryFunctions out of alpha. (llvm#66207)
  [flang][OpenMP] Fix threadprivate common blocks (llvm#68739)
  [clang][Interp] Handle delegating constructors (llvm#67823)
  Revert "[ValueTracking] Remove by-ref computeKnownBits() overloads (NFC)"
  [AMDGPU] Add patterns for V_CMP_O/U (llvm#69157)
  [ValueTracking] Remove by-ref computeKnownBits() overloads (NFC)
  [lldb][PDB] Fix test build after plugin namespace change
  Revert "Reapply [Verifier] Sanity check alloca size against DILocalVariable fragment size"
  [lldb][DYLD][NFC] Dedupe calls to CreateBreakpoint
  [ConstraintElim] Don't decompose values wider than 64 bits (llvm#68803)
  [AArch64][GlobalISel] Add legalization for G_VECREDUCE_MUL (llvm#68398)
  [mlir][ArmSME] Update tile slice layout syntax (llvm#69151)
  Fix MSVC "not all control paths return a value" warnings. NFC.
  [ci] pull main branch before diffing (llvm#68983)
  [analyzer] Fix note for member reference (llvm#68691)
  [BOLT][RISCV] Implement getCalleeSavedRegs (llvm#69161)
  [clang][ASTImporter] Fix of possible crash "Did not find base!". (llvm#67680)
  [BOLT][RISCV] Don't create function entry points for unnamed symbols (llvm#68977)
  [BOLT][RISCV] Handle EH_LABEL operands (llvm#68998)
  [X86][FP16] Do not combine to ADDSUB if target doesn't support FP16 (llvm#69109)
  [BOLT] Fix reorder data test for RISC-V (llvm#68996)
  [DebugInfo] Only call upgradeCULocals() at module level (llvm#68965)
  [BOLT][RISCV] Implement MCPlusBuilder::equals (llvm#68989)
  [BOLT] Move X86-specific test to X86 subdirectory (llvm#68992)
  [lld] Restore "REQUIRES: amdgpu" in amdgpu-abi-version
  [AMDGPU] Remove Code Object V3 (llvm#67118)
  [TableGen] Fix GlobalISelEmitterHwModes.td after 96e473a
  [RFC][GlobalISel] Use Builders in MatchTable (llvm#65955)
  [clang][Interp][NFC] Add comments to Descriptor ctors
  [RISCV] Use f64 for LocVT for ilp32 when whole f64 is passed on the stack. NFC (llvm#69118)
  [RISCV][GISel] Don't setType on PtrReg in RISCVInstructionSelector::replacePtrWithInt.
  [MLIR][SCF] Removes incorrect assertion in loop unroller (llvm#69028)
  [RISCV][NFC] Remove space
  [CodeGen] Remove unused declaration createJumpInstrTablesPass
  [docs] [C++20] [Modules] Mentioning that -fdelayed-template-parsing is not working with modules
  [gn build] Port 819ac45
  [X86] Add USER_MSR instructions. (llvm#68944)
  [Driver] Don't pass -Z to ld for ELF platforms (llvm#69120)
  [RISCV][GISel] Move variadic-call.ll from call-lowering directory to irtranslator. NFC
  [mlir][affine] NFC: Improve variable name in TestReifyValueBounds
  [clang-tidy][modernize-loop-convert]check isDependentSizedArrayType (llvm#69062)
  [mlir][Interfaces] `LoopLikeOpInterface`: Add helper to get yielded values (llvm#67305)
  [mlir][vector] Enable transfer op hoisting with dynamic indices (llvm#68500)
  [Clang][M68k] Add Clang support for the new M68k_RTD CC
  [DWARF][M68k] Add new DW_CC for the new M68kRTD calling convention
  [M68k] Add new calling convention M68k_RTD
  [clang-format] Treat AttributeMacro more like __attribute__
  Revert "[clang-format] Treat AttributeMacro more like __attribute__"
  [clang-format] Treat AttributeMacro more like __attribute__
  [LVI][CVP] Treat undef like a full range on abs(x, false) (llvm#68711)

Change-Id: If9b168e2aab81fdebb88c255aec72f6ade1653b2
Signed-off-by: greenforce-auto-merge <greenforce-auto-merge@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants