1. May 04, 2024
  2. May 03, 2024
    • Mark de Wever's avatar
      [libc++][modules] Uses _LIBCPP_USING_IF_EXISTS. (#90409) · 6c4dedde
      Mark de Wever authored
      This attribute is used in the headers. Not using this in the modules has
      led to several issues. Add them to the modules to avoid these errors in
      other placed.
      6c4dedde
    • Mark de Wever's avatar
      Revert "[NFC] Enable atomic tests on AIX" · a06c1fef
      Mark de Wever authored
      This reverts commit 02660e27.
      
      The tests do not pass on AIX, the buildkite precommit CI fails on these
      tests. For example, https://buildkite.com/llvm-project/libcxx-ci/builds/35184
      a06c1fef
    • Peter Lafreniere's avatar
      [M68k] Correctly emit non-pic relocations (#89863) · ebbc5de7
      Peter Lafreniere authored
      The m68k backend will always emit external calls (including libcalls)
      with
      PC-relative PLT relocations, even when in non-pic mode or -fno-plt is
      used.
      
      This is unexpected, as other function calls are emitted with absolute
      addressing, and a static code modes suggests that there is no PLT. It
      also
      leads to a miscompilation where the call instruction emitted expects an
      immediate address, while the relocation emitted for that instruction is
      PC-relative.
      
      This miscompilation can even be seen in the default C function in
      godbolt:
      https://godbolt.org/z/zEoazovzo
      
      Fix the issue by classifying external function references based upon the
      pic
      mode. This triggers a change in the static code model, making it more in
      line
      with the expected behaviour and allowing use of this backend in more
      bare-metal
      situations where a PLT does not exist.
      
      The change avoids the issue where we emit a PLT32 relocation for an
      absolute
      call, and makes libcalls and other external calls use absolute
      addressing modes
      when a static code model is desired.
      
      Further work should be done in instruction lowering and validation to
      ensure
      that miscompilations of the same type don't occur.
      ebbc5de7
    • Michael Maitland's avatar
      [RISCV] Add Sched classes for vector crypto instructions (#90068) · 56b8bd77
      Michael Maitland authored
      The vector crypto instructions may have different scheduling behavior
      compared to VALU operations. Instead of using scheduling resources that
      describe VALU operations, we give these instructions their own
      scheduling resources. This is similar to what we did for Zb* instructions.
      
      The sifive-p670 has vector crypto, so we model behavior for these instructions
      in the P600SchedModel. The numbers are based off of measurements collected
      internally. These numbers are a bit old and new measurements show that they may
      not be fully accurate. It is likely that we will refine these numbers in a
      follow up patch(s) based on new measurements.
      
      This PR is stacked on #89256.
      56b8bd77
    • Miro Bucko's avatar
      [lldb-dap] Fix test_exit_status_message_sigterm test. (#90223) · bab10981
      Miro Bucko authored
      Summary:
      'test_exit_status_message_sigterm' is failing due to 'psutil' dependency
      introduced in PR #89405. This fix removes 'deque' dependency and checks
      if 'psutil' can be imported before running the test. If 'psutil' cannot
      be imported, it emits a warning and skips the test.
      
      Test Plan:
      ./bin/llvm-lit -sv
      /path-to-llvm-project/lldb/test/API/tools/lldb-dap/console/TestDAP_console.py
      --filter=tools/lldb-dap/console/TestDAP_console.py
      
      Reviewers:
      @jeffreytan81,@clayborg,@kusmour, @JDevlieghere,@walter-erquinigo
      
      Subscribers:
      
      Tasks:
      lldb-dap
      
      Tags:
      bab10981
    • Michael Maitland's avatar
    • Michael Maitland's avatar
      d13f6352
    • Jay Foad's avatar
      692e887c
    • erichkeane's avatar
      [OpenACC] Implement copyin, copyout, create clauses for compute construct · 01e91a2d
      erichkeane authored
      Like 'copy', these also have alternate names, so this implements that as
      well.  Additionally, these have an optional tag of either 'readonly' or
      'zero' depending on the clause.
      
      Otherwise, this is a pretty rote implementation of the clause, as there
      aren't any special rules for it.
      01e91a2d
    • Florian Hahn's avatar
      [VPlan] Remove unused VPWidenCanonicalIVRecipe::getScalarType (NFCI). · 40cc96e7
      Florian Hahn authored
      After a48ebb82, the function is no
      longer used. Remove it.
      40cc96e7
    • Jay Foad's avatar
    • Billy Zhu's avatar
      [MLIR][LLVM] Exporter skip over inlined frame without debug scope (#90915) · 5fc57695
      Billy Zhu authored
      Followup to #90759.
      
      Instead of just returning null when the caller scope is not
      translatable, "jump over" the current caller scope and use the outer
      scope as the caller if that is available. This means that in an inlined
      call stack if there are frames without debug scope, those frames are
      skipped to preserve what is available. In the original example where
      ```
      func A {
        foo loc(fused<#A>["a":1:1])
      }
      func B {
        call @A loc("b":1:1)
      }
      func C {
        call @B loc(fused<#C>["c":1:1])
      }
      ```
      is inlined into
      ```
      func C {
        foo loc(callsite(
                  callsite(fused<#A>["a":1:1] at loc("b":1:1))
                 at
                  fused<#C>["c":1:1]))
      }
      ```
      The translated result would be `!1`:
      ```
      !0 = !DILocation(line: 1, column: 1, scope: !C)
      !1 = !DILocation(line: 1, column: 1, scope: !A, inlinedAt: !0)
      ```
      
      This has a neat benefit in maintaining callsite associativity: No matter
      if we have `callsite(callsite(A at B) at C)` or `callsite(A at
      callsite(B at C))`, the translation now is the same. The previous
      solution did not provide this guarantee, which meant the callsite
      construction would somehow impact this translation.
      5fc57695
    • Billy Zhu's avatar
      [LLVM] BasicTTIImpl allow unknown type during legality checking (#89848) · 69f14423
      Billy Zhu authored
      Make BasicTTIImplBase's `isTypeLegal` check handle unknown types.
      Current behavior is aborting.
      
      Motivated by a use case in SimplifyCFG, where `isTypeLegal` is called on
      a struct type and dies, when it could be treated as illegal and skipped.
      In general it could make sense for unknown types to be allowed, and by
      default just considered not legal, but the behavior can of course be
      overriden.
      69f14423
    • erichkeane's avatar
      [OpenACC] Implement copy clause for compute constructs. · 054f7c05
      erichkeane authored
      Like present, no_create, and first_private, copy is a clause that takes
      just a var-list, and follows the same rules as the others.
      
      The one unique part of this clause is that it ALSO supports two
      deprecated/backwards-compatibility spellings, so this patch adds them
      and implements them.
      054f7c05
    • Jay Foad's avatar
    • Mel Chen's avatar
      [RISCV] Support interleaved accesses for scalable vector. (#90583) · 3f1fef36
      Mel Chen authored
      The support for interleaved accesses for scalable vector with a factor
      of 2 is enabled in vectorizer. Therefore, the patch removed the
      restriction for scalable vector with a factor of 2.
      3f1fef36