1. Feb 22, 2024
    • Florian Mayer's avatar
      [𝘀𝗽𝗿] initial version · eb10a56d
      Florian Mayer authored
      Created using spr 1.3.4
      eb10a56d
    • mlevesquedion's avatar
      [mlir] Use arith max or min ops instead of cmp + select (#82178) · d4fd2025
      mlevesquedion authored
      I believe the semantics should be the same, but this saves 1 op and simplifies the code.
      
      For example, the following two instructions:
      
      ```
      %2 = cmp sgt %0, %1
      %3 = select %2, %0, %1
      ```
      
      Are equivalent to:
      
      ```
      %2 = maxsi %0 %1
      ```
      d4fd2025
    • David Majnemer's avatar
    • Bill Wendling's avatar
      [NFC][clang] Remove trailing whitespaces · 7fa8585f
      Bill Wendling authored
      7fa8585f
    • Maksim Panchenko's avatar
      [BOLT] Fix memory leak in BinarySection (#82520) · 5daf2001
      Maksim Panchenko authored
      The change in #80950 exposed a memory leak in BinarySection. Let
      BinarySection manage memory passed via updateContents() unless a valid
      SectionID is set indicating that the contents are managed by JITLink.
      5daf2001
    • cor3ntin's avatar
      [Clang] Fixes to immediate-escalating functions (#82281) · baf6bd30
      cor3ntin authored
      * Consider that immediate escalating function can appear at global
      scope, fixing a crash
      
      * Lambda conversion to function pointer was sometimes not performed in
      an immediate function context when it should be.
      
      Fixes #82258
      baf6bd30
    • Alexander Richardson's avatar
      Make lldbDataFormatters.py compatible with Python 3.8 (#82518) · db9811cd
      Alexander Richardson authored
      I just tried to load this into LLDB built against Python 3.8.5 and got
      the following error: `TypeError: 'type' object is not subscriptable`. I
      could fix this by wrapping the annotations in quotes but since Python
      3.7 this syntax can be enabled with `from __future__ import
      annotations`.
      db9811cd
    • calebwat's avatar
      [VPlan] Use opaque pointers in VPlan unit test IR (#69947) · 22cf9833
      calebwat authored
      Updates the unit tests for VPlan to use opaque pointers in strings
      containing LLVM IR. This is to match the similar adjustments being made
      for lit tests to use opaque pointers.
      22cf9833
    • Florian Hahn's avatar
      [VPlan] Support live-ins without underlying IR in type analysis. (#80723) · 3d66d693
      Florian Hahn authored
      A VPlan contains multiple live-ins without underlying IR, like VFxUF or
      VectorTripCount. Trying to infer the scalar type of those causes a crash
      at the moment.
      
      Update VPTypeAnalysis to take a VPlan in its constructor and assign
      types to those live-ins up front. All those live-ins share the type of
      the canonical IV.
      
      PR: https://github.com/llvm/llvm-project/pull/80723
      3d66d693
    • David Majnemer's avatar
      [TargetLowering] Actually add the adjustment to the significand · ddc0f1d8
      David Majnemer authored
      The logic was supposed to be choosing between {0, 1, -1} as an
      adjustment to the FP bit pattern. However, the adjustment itself was
      used as the bit pattern instead which result in garbage results.
      ddc0f1d8
    • Nico Weber's avatar
      [gn] port 0a518db9 (clang-installapi) · 1c81b4a8
      Nico Weber authored
      1c81b4a8
    • Jordan Rupprecht's avatar
      [lldb][test] Modernize asserts (#82503) · 9c246882
      Jordan Rupprecht authored
      This uses [teyit](https://pypi.org/project/teyit/) to modernize asserts,
      as recommended by the [unittest release
      notes](https://docs.python.org/3.12/whatsnew/3.12.html#id3).
      
      For example, `assertTrue(a == b)` is replaced with `assertEqual(a, b)`.
      This produces better error messages, e.g. `error: unexpectedly found 1
      and 2 to be different` instead of `error: False`.
      9c246882
    • Mingming Liu's avatar
      [nfc]For InstrProfData.inc, clang-format functions and opt-out of formatting on the rest (#82057) · 4247175d
      Mingming Liu authored
      Without this, each time `InstrProfData.inc` is modified (like in
      https://github.com/llvm/llvm-project/pull/81691), pre-commit CI
      clang-format aggressively formats many lines in an unreadable way. Pull
      request with red pre-commit checks are usually frowned upon.
      
      * Use `// clang-format:<reason>` instead of `/* clang-format */`. The
      former
      [allows](https://github.com/llvm/llvm-project/blob/563ef306017a47d387f1c36dd562b172c1ad0626/clang/lib/Format/Format.cpp#L4108-L4113)
      specifying a reason but the latter is
      [not](https://github.com/llvm/llvm-project/blob/563ef306017a47d387f1c36dd562b172c1ad0626/clang/lib/Format/Format.cpp#L4105-L4106).
      - Filed https://github.com/llvm/llvm-project/issues/82426 to track the
      issue in clang-format.
      4247175d
    • David Majnemer's avatar
      [NVPTX] Simplify handling of ISD::BF16_TO_FP · 966b0267
      David Majnemer authored
      We only use it to get from BF16 to F32. After that point, we insert
      an FP_EXTEND to get the rest of the way.
      966b0267
    • David Majnemer's avatar
      [NVPTX] Set ISD::FP_{EXTEND,ROUND} to Custom for more types · 6f0e39c4
      David Majnemer authored
      Sometimes those nodes are queried with the non-bf16. We need to request
      to SDAG that we want to handle the non-bf16 side so that the handler can
      detect if bf16 is being used on either side.
      6f0e39c4
    • Cyndy Ishida's avatar
    • Fangrui Song's avatar
      [ARM,MC] Support FDPIC relocations · 2167881f
      Fangrui Song authored
      Linux kernel fs/binfmt_elf_fdpic.c supports FDPIC for MMU-less systems.
      GCC/binutils/qemu support FDPIC ABI for ARM
      (https://github.com/mickael-guene/fdpic_doc).
      _ARM FDPIC Toolchain and ABI_ provides a summary.
      
      This patch implements FDPIC relocations to the integrated assembler.
      There are 6 static relocations and 2 dynamic relocations, with
      R_ARM_FUNCDESC as both static and dynamic.
      
      gas requires `--fdpic` to assemble data relocations like `.word f(FUNCDESC)`.
      This patch adds `MCTargetOptions::FDPIC` and reports an error if FDPIC
      is not set.
      
      Pull Request: https://github.com/llvm/llvm-project/pull/82187
      2167881f
    • Nick Anderson's avatar
      [AMDGPU] fixes mistake in #82018 (#82223) · c5bbf979
      Nick Anderson authored
      fixes #81766 #82018
      c5bbf979
    • Cyndy Ishida's avatar
    • Cyndy Ishida's avatar
    • Leandro Lupori's avatar
      [flang][OpenMP] Add support for copyprivate (#80485) · e50a231d
      Leandro Lupori authored
      Add initial handling of OpenMP copyprivate clause in Flang.
      
      When lowering copyprivate, Flang generates the copy function
      needed by each variable and builds the appropriate
      omp.single's CopyPrivateVarList.
      
      This is patch 3 of 4, to add support for COPYPRIVATE in Flang.
      Original PR: https://github.com/llvm/llvm-project/pull/73128
      e50a231d
    • Mogball's avatar
    • Cyndy Ishida's avatar
      [InstallAPI] Set InstallAPI as a standalone tool instead of CC1 action (#82293) · 0a518db9
      Cyndy Ishida authored
      Installapi has important distinctions when compared to the clang driver,
      so much that, it doesn't make much sense to try to integrate into it.
      
      This patch partially reverts the CC1 action & driver support to replace
      with its own driver as a clang tool.
      
      For distribution, we could use `LLVM_TOOL_LLVM_DRIVER_BUILD` mechanism
      for integrating the functionality into clang such that the toolchain
      size is less impacted.
      0a518db9
    • David Majnemer's avatar
      Correctly round FP -> BF16 when SDAG expands such nodes (#82399) · cc13f3ba
      David Majnemer authored
      We did something pretty naive:
      - round FP64 -> BF16 by first rounding to FP32
      - skip FP32 -> BF16 rounding entirely
      - taking the top 16 bits of a FP32 which will turn some NaNs into
      infinities
      
      Let's do this in a more principled way by rounding types with more
      precision than FP32 to FP32 using round-inexact-to-odd which will negate
      double rounding issues.
      cc13f3ba
    • Joseph Huber's avatar
      [OpenMP] Remove `register_requires` global constructor (#80460) · cc374d80
      Joseph Huber authored
      Summary:
      Currently, OpenMP handles the `omp requires` clause by emitting a global
      constructor into the runtime for every translation unit that requires
      it. However, this is not a great solution because it prevents us from
      having a defined order in which the runtime is accessed and used.
      
      This patch changes the approach to no longer use global constructors,
      but to instead group the flag with the other offloading entires that we
      already handle. This has the effect of still registering each flag per
      requires TU, but now we have a single constructor that handles
      everything.
      
      This function removes support for the old `__tgt_register_requires` and
      replaces it with a warning message. We just had a recent release, and
      the OpenMP policy for the past four releases since we switched to LLVM
      is that we do not provide strict backwards compatibility between major
      LLVM releases now that the library is versioned. This means that a user
      will need to recompile if they have an old binary that relied on
      `register_requires` having the old behavior. It is important that we
      actively deprecate this, as otherwise it would not solve the problem of
      having no defined init and shutdown order for `libomptarget`. The
      problem of `libomptarget` not having a define init and shutdown order
      cascades into a lot of other issues so I have a strong incentive to be
      rid of it.
      
      It is worth noting that the current `__tgt_offload_entry` only has space
      for a 32-bit integer here. I am planning to overhaul these at some point
      as well.
      cc374d80
    • Pranav Bhandarkar's avatar
      [flang][openmp] - depend clause support in target, target enter/update/exit... · 58f45d90
      Pranav Bhandarkar authored
      [flang][openmp] - depend clause support in target, target enter/update/exit data constructs (#81610)
      
      This patch adds support in flang for the depend clause in target and
      target enter/update/exit constructs. Previously, the following line in a
      fortran program would have resulted in the error shown below it.
      
          !$omp target map(to:a) depend(in:a)
      
      
      "not yet implemented: Unhandled clause DEPEND in TARGET construct"
      58f45d90
    • Diego Caballero's avatar
      [mlir][Vector] Add vector bitwidth target to xfer op flattening (#81966) · 71441ed1
      Diego Caballero authored
      This PR adds an optional bitwidth parameter to the vector xfer op
      flattening transformation so that the flattening doesn't happen if the
      trailing dimension of the read/writen vector is larger than this
      bitwidth (i.e., we are already able to fill at least one vector register
      with that size).
      71441ed1
    • Harald van Dijk's avatar
      Module::getOrInsertFunction: set debug info format (#82505) · 162fa4dd
      Harald van Dijk authored
      Function::Function's constructor sets the debug info format based on the
      passed in parent Module, so by using this rather than modifying the
      function list directly, we pick up the debug info format automatically.
      162fa4dd
    • Mogball's avatar
      Revert "[Coro] [async] Disable inlining in async coroutine splitting (#80904)" · 2e29c91b
      Mogball authored
      This reverts commit b1ac052a.
      
      This commit breaks coroutine splitting for non-swift calling convention
      functions. In this example:
      
      ```ll
      ; ModuleID = 'repro.ll'
      source_filename = "stdlib/test/runtime/test_llcl.mojo"
      target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
      target triple = "x86_64-unknown-linux-gnu"
      
      @0 = internal constant { i32, i32 } { i32 trunc (i64 sub (i64 ptrtoint (ptr @crash to i64), i64 ptrtoint (ptr getelementptr inbounds ({ i32, i32 }, ptr @0, i32 0, i32 1) to i64)) to i32), i32 64 }
      
      define dso_local void @af_suspend_fn(ptr %0, i64 %1, ptr %2) #0 {
        ret void
      }
      
      define dso_local void @crash(ptr %0) #0 {
        %2 = call token @llvm.coro.id.async(i32 64, i32 8, i32 0, ptr @0)
        %3 = call ptr @llvm.coro.begin(token %2, ptr null)
        %4 = getelementptr inbounds { ptr, { ptr, ptr }, i64, { ptr, i1 }, i64, i64 }, ptr poison, i32 0, i32 0
        %5 = call ptr @llvm.coro.async.resume()
        store ptr %5, ptr %4, align 8
        %6 = call { ptr, ptr, ptr } (i32, ptr, ptr, ...) @llvm.coro.suspend.async.sl_p0p0p0s(i32 0, ptr %5, ptr @ctxt_proj_fn, ptr @af_suspend_fn, ptr poison, i64 -1, ptr poison)
        ret void
      }
      
      define dso_local ptr @ctxt_proj_fn(ptr %0) #0 {
        ret ptr %0
      }
      
      ; Function Attrs: nomerge nounwind
      declare { ptr, ptr, ptr } @llvm.coro.suspend.async.sl_p0p0p0s(i32, ptr, ptr, ...) #1
      
      ; Function Attrs: nounwind
      declare token @llvm.coro.id.async(i32, i32, i32, ptr) #2
      
      ; Function Attrs: nounwind
      declare ptr @llvm.coro.begin(token, ptr writeonly) #2
      
      ; Function Attrs: nomerge nounwind
      declare ptr @llvm.coro.async.resume() #1
      
      attributes #0 = { "target-features"="+adx,+aes,+avx,+avx2,+bmi,+bmi2,+clflushopt,+clwb,+clzero,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+mwaitx,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdpru,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+sse4a,+ssse3,+vaes,+vpclmulqdq,+wbnoinvd,+x87,+xsave,+xsavec,+xsaveopt,+xsaves" }
      attributes #1 = { nomerge nounwind }
      attributes #2 = { nounwind }
      ```
      
      This verifier crashes after the `coro-split` pass with
      
      ```
      cannot guarantee tail call due to mismatched parameter counts
        musttail call void @af_suspend_fn(ptr poison, i64 -1, ptr poison)
      LLVM ERROR: Broken function
      PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
      Stack dump:
      0.      Program arguments: opt ../../../reduced.ll -O0
       #0 0x00007f1d89645c0e __interceptor_backtrace.part.0 /build/gcc-11-XeT9lY/gcc-11-11.4.0/build/x86_64-linux-gnu/libsanitizer/asan/../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4193:28
       #1 0x0000556d94d254f7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
       #2 0x0000556d94d19a2f llvm::sys::RunSignalHandlers() /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Support/Signals.cpp:105:20
       #3 0x0000556d94d1aa42 SignalHandler(int) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Support/Unix/Signals.inc:371:36
       #4 0x00007f1d88e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
       #5 0x00007f1d88e969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
       #6 0x00007f1d88e969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
       #7 0x00007f1d88e969fc pthread_kill ./nptl/pthread_kill.c:89:10
       #8 0x00007f1d88e42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
       #9 0x00007f1d88e287f3 abort ./stdlib/abort.c:81:7
       #10 0x0000556d8944be01 std::vector<llvm::json::Value, std::allocator<llvm::json::Value>>::size() const /usr/include/c++/11/bits/stl_vector.h:919:40
       #11 0x0000556d8944be01 bool std::operator==<llvm::json::Value, std::allocator<llvm::json::Value>>(std::vector<llvm::json::Value, std::allocator<llvm::json::Value>> const&, std::vector<llvm::json::Value, std::allocator<llvm::json::Value>> const&) /usr/include/c++/11/bits/stl_vector.h:1893:23
       #12 0x0000556d8944be01 llvm::json::operator==(llvm::json::Array const&, llvm::json::Array const&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/Support/JSON.h:572:69
       #13 0x0000556d8944be01 llvm::json::operator==(llvm::json::Value const&, llvm::json::Value const&) (.cold) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Support/JSON.cpp:204:28
       #14 0x0000556d949ed2bd llvm::report_fatal_error(char const*, bool) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Support/ErrorHandling.cpp:82:70
       #15 0x0000556d8e37e876 llvm::SmallVectorBase<unsigned int>::size() const /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallVector.h:91:32
       #16 0x0000556d8e37e876 llvm::SmallVectorTemplateCommon<llvm::DiagnosticInfoOptimizationBase::Argument, void>::end() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallVector.h:282:41
       #17 0x0000556d8e37e876 llvm::SmallVector<llvm::DiagnosticInfoOptimizationBase::Argument, 4u>::~SmallVector() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1215:24
       #18 0x0000556d8e37e876 llvm::DiagnosticInfoOptimizationBase::~DiagnosticInfoOptimizationBase() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/DiagnosticInfo.h:413:7
       #19 0x0000556d8e37e876 llvm::DiagnosticInfoIROptimization::~DiagnosticInfoIROptimization() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/DiagnosticInfo.h:622:7
       #20 0x0000556d8e37e876 llvm::OptimizationRemark::~OptimizationRemark() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/DiagnosticInfo.h:689:7
       #21 0x0000556d8e37e876 operator() /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Transforms/Coroutines/CoroSplit.cpp:2213:14
       #22 0x0000556d8e37e876 emit<llvm::CoroSplitPass::run(llvm::LazyCallGraph::SCC&, llvm::CGSCCAnalysisManager&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)::<lambda()> > /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:83:12
       #23 0x0000556d8e37e876 llvm::CoroSplitPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Transforms/Coroutines/CoroSplit.cpp:2212:13
       #24 0x0000556d8c36ecb1 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CoroSplitPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:3
       #25 0x0000556d91c1a84f llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:90:12
       #26 0x0000556d8c3690d1 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:3
       #27 0x0000556d91c2162d llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:278:18
       #28 0x0000556d8c369035 llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:3
       #29 0x0000556d9457abc5 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManager.h:247:20
       #30 0x0000556d8e30979e llvm::CoroConditionalWrapper::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/lib/Transforms/Coroutines/CoroConditionalWrapper.cpp:19:74
       #31 0x0000556d8c365755 llvm::detail::PassModel<llvm::Module, llvm::CoroConditionalWrapper, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:91:3
       #32 0x0000556d9457abc5 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/PassManager.h:247:20
       #33 0x0000556d89818556 llvm::SmallPtrSetImplBase::isSmall() const /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:196:33
       #34 0x0000556d89818556 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:84:17
       #35 0x0000556d89818556 llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:321:7
       #36 0x0000556d89818556 llvm::SmallPtrSet<llvm::AnalysisKey*, 2u>::~SmallPtrSet() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:427:7
       #37 0x0000556d89818556 llvm::PreservedAnalyses::~PreservedAnalyses() /home/ubuntu/modular/third-party/llvm-project/llvm/include/llvm/IR/Analysis.h:109:7
       #38 0x0000556d89818556 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /home/ubuntu/modular/third-party/llvm-project/llvm/tools/opt/NewPMDriver.cpp:532:10
       #39 0x0000556d897e3939 optMain /home/ubuntu/modular/third-party/llvm-project/llvm/tools/opt/optdriver.cpp:737:27
       #40 0x0000556d89455461 main /home/ubuntu/modular/third-party/llvm-project/llvm/tools/opt/opt.cpp:25:33
       #41 0x00007f1d88e29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
       #42 0x00007f1d88e29e40 call_init ./csu/../csu/libc-start.c:128:20
       #43 0x00007f1d88e29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
       #44 0x0000556d897b6335 _start (/home/ubuntu/modular/.derived/third-party/llvm-project/build-relwithdebinfo-asan/bin/opt+0x150c335)
      Aborted (core dumped)
      2e29c91b
    • Luke Lau's avatar
      [RISCV] Add test case for miscompile in gather -> strided load combine. NFC · 2cd59bdc
      Luke Lau authored
      This shows the issue in #82430, but triggers it via the widening SEW combine
      rather than a GEP that RISCVGatherScatterLowering doesn't detect.
      2cd59bdc
    • Matthias Springer's avatar
      [mlir][Transforms] Fix use-after-free in #82474 (#82504) · 3f732c41
      Matthias Springer authored
      When a `ModifyOperationRewrite` is committed, the operation may already
      have been erased, so `OperationName` must be cached in the rewrite
      object.
      
      Note: This will no longer be needed with #81757, which adds a "cleanup"
      method to `IRRewrite`.
      3f732c41
    • Timm Bäder's avatar
      [clang][Interp][NFC] Reject unimplemented cast expressions differently · 13b0321e
      Timm Bäder authored
      Instead of asserting, emit an appropriate diagnostic.
      13b0321e
    • cmtice's avatar
      [LLVM][DWARF] Refactor code for generating DWARF V5 .debug_names (#82394) · 453b1a2f
      cmtice authored
      [LLVM][DWARF]  Refactor code for generating DWARF v5 .debug_names
      
      Refactor the code that uniques the entries and computes the bucket count
      for the DWARF V5 .debug_names accelerator table.
      453b1a2f
    • Simon Pilgrim's avatar
      [CostModel][X86] Reduce the extra costs for ICMP complex predicates when an operand is constant · 9978f6a1
      Simon Pilgrim authored
      In most cases, SETCC lowering will be able to simplify/commute the comparison by adjusting the constant.
      
      TODO: We still need to adjust ExtraCost based on CostKind
      
      Fixes #80122
      9978f6a1
    • Simon Pilgrim's avatar
      [SimplifyCFG] Add test coverage for #80122 · c16d0d14
      Simon Pilgrim authored
      c16d0d14
    • Simon Pilgrim's avatar
      [CostModel][X86] Add test coverage for icmp vs zero · 4beb4d5c
      Simon Pilgrim authored
      This is really to test for icmp vs constant - some icmp unsigned could fold to simpler comparisons, but costmodel analysis won't do this
      4beb4d5c
    • Timm Bäder's avatar
      [clang][Interp] Allow adding an offset to a function pointer · ffcdf47b
      Timm Bäder authored
      Pretty sure this isn't doing anything, but it fixes a test and
      is generally the right thing to do.
      Fixing the behavior will come later.
      ffcdf47b
  2. Feb 21, 2024
    • Joseph Huber's avatar
      [Offload] Fix NVPTX global entry names · 3ee8c937
      Joseph Huber authored
      Summary:
      This was missed, the NVPTX globals cannot use a `.`.
      3ee8c937
    • Philip Reames's avatar
      [RISCV][TTI] Cost a subvector extract at a register boundary with exact vlen (#82405) · f037e709
      Philip Reames authored
      If we have exact vlen knowledge, we can figure out which indices
      correspond to register boundaries. Our lowering uses this knowledge to
      replace the vslidedown.vi with a sub-register extract. Our costs can
      reflect that as well.
      
      This is another piece split off
      https://github.com/llvm/llvm-project/pull/80164
      
      
      
      ---------
      
      Co-authored-by: default avatarLuke Lau <luke_lau@icloud.com>
      f037e709
    • Matthias Springer's avatar
      [mlir][Transforms][NFC] Simplify `ArgConverter` state (#81462) · b49f155c
      Matthias Springer authored
      * When converting a block signature, `ArgConverter` creates a new block
      with the new signature and moves all operation from the old block to the
      new block. The new block is temporarily inserted into a region that is
      stored in `regionMapping`. The old block is not yet deleted, so that the
      conversion can be rolled back. `regionMapping` is not needed. Instead of
      moving the old block to a temporary region, it can just be unlinked.
      Block erasures are handles in the same way in the dialect conversion.
      * `regionToConverter` is a mapping from regions to type converter. That
      field is never accessed within `ArgConverter`. It should be stored in
      `ConversionPatternRewriterImpl` instead.
      * `convertedBlocks` is not needed. Old blocks are already stored in
      `ConvertedBlockInfo`.
      b49f155c