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

[Coroutines] ABI Object #5

Commits on Sep 13, 2024

  1. [LLD][COFF][NFC] Store live flag in ImportThunkChunk. (llvm#108459)

    Instead of ImportFile. This is a preparation for ARM64EC support, which
    has both x86 and ARM64EC thunks and each of them needs a separate flag.
    cjacek authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    6be9be5 View commit details
    Browse the repository at this point in the history
  2. [llvm][unittests] Strip unneeded uses of raw_string_ostream::str() (NFC)

    Avoid excess layer of indirection.
    JOE1994 committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    387bee9 View commit details
    Browse the repository at this point in the history
  3. [DAG] Fold trunc(srl(extract_elt(vec,c1),c2)) -> extract_elt(bitcast(…

    …vec),c3) (llvm#107987)
    
    Extends existing trunc(extract_elt(vec,c1)) -> extract_elt(bitcast(vec),c3) fold.
    
    Noticed while working on llvm#107404
    RKSimon authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    69a2115 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a3ea018 View commit details
    Browse the repository at this point in the history
  5. [RISCV] Use CCValAssign::getCustomReg for fixed vector arguments/retu…

    …rns with RVV. (llvm#108470)
    
    We need to insert a insert_subvector or extract_subvector which feels
    pretty custom.
    
    This should make it easier to support fixed vector arguments for GISel.
    topperc authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    ee4582f View commit details
    Browse the repository at this point in the history
  6. [X86] Cleanup lowerShuffleToEXPAND arg layout. NFC.

    Reorder the arg layout to match (most) other lowerShuffle* calls.
    
    Rename to lowerShuffleWithEXPAND to match other lowering cases where we lower to a single node.
    RKSimon committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    4a9b6b0 View commit details
    Browse the repository at this point in the history
  7. Add missing FillOp to winograd lowering (llvm#108181)

    Winograd lowering involves a number of matmul and batch_matmul which
    are currently passed tensor.empty result as out parameter, thereby
    are undefined behaviour. This commit adds the necessary linalg.fill.
    
    ---------
    
    Co-authored-by: Max191 <[email protected]>
    RoboTux and Max191 authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    326287f View commit details
    Browse the repository at this point in the history
  8. [clang][TableGen] Change TypeNodesEmitter to use const RecordKeeper (l…

    …lvm#108476)
    
    Change TypeNodesEmitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    387ef59 View commit details
    Browse the repository at this point in the history
  9. [clang][TableGen] Change SACheckersEmitter to use const RecordKeeper (l…

    …lvm#108477)
    
    Change SACheckersEmitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    f637273 View commit details
    Browse the repository at this point in the history
  10. [clang][TableGen] Change SyntaxEmitter to use const RecordKeeper (llv…

    …m#108478)
    
    Change SyntaxEmitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    d757bbf View commit details
    Browse the repository at this point in the history
  11. [clang][TableGen] Change MVE Emitter to use const RecordKeeper (llvm#…

    …108500)
    
    Change MVE Emitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    75d8724 View commit details
    Browse the repository at this point in the history
  12. [clang][TableGen] Change NeonEmitter to use const RecordKeeper (llvm#…

    …108501)
    
    Change NeonEmitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    a4b1617 View commit details
    Browse the repository at this point in the history
  13. [clang][TableGen] Change RISCVVEmitter to use const RecordKeeper (llv…

    …m#108502)
    
    Change RISCVVEmitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    974fa85 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    ab06a18 View commit details
    Browse the repository at this point in the history
  15. [clang][TableGen] Change SVE Emitter to use const RecordKeeper (llvm#…

    …108503)
    
    Change SVE Emitter to use const RecordKeeper.
    
    This is a part of effort to have better const correctness in TableGen
    backends:
    
    
    https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089
    jurahul authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    711278e View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    99fe595 View commit details
    Browse the repository at this point in the history
  17. [LLD][COFF] Add Support for ARM64EC Import Thunks (llvm#108460)

    ARM64EC import thunks function similarly to regular ARM64 thunks but use
    a mangled name and perform the call through the auxiliary IAT.
    cjacek authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    ea5d37f View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    a643836 View commit details
    Browse the repository at this point in the history
  19. [llvm-exegesis] Remove getter for RegNameToRegNo mapping

    This patch removes the getter for the mentioned mapping. This was only
    kept around to keep things in sync for some downstream codebases (that
    didn't even end up needing it), so removing it now that it is not needed
    anymore.
    boomanaiden154 committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    ff1de24 View commit details
    Browse the repository at this point in the history
  20. [clang][analyzer][docs] Fix documentation of checker 'StackAddrAsyncE…

    …scape' (NFC) (llvm#108586)
    
    The checker was indicated as a 'C' language checker but is only applicable to 'ObjC' code.
    balazske authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    ffeb793 View commit details
    Browse the repository at this point in the history
  21. [lldb] Add pc check for thread-step-by-bp algorithms (llvm#108504)

    lldb-server built with NativeProcessLinux.cpp and
    NativeProcessFreeBSD.cpp can use breakpoints to implement instruction
    stepping on cores where there is no native instruction-step primitive.
    Currently these set a breakpoint, continue, and if we hit the breakpoint
    with the original thread, set the stop reason to be "trace".
    
    I am wrapping up a change to lldb's breakpoint algorithm where I change
    its current behavior of
    
    "if a thread stops at a breakpoint site, we set
    the thread's stop reason to breakpoint-hit, even if the breakpoint
    hasn't been executed" +
    "when resuming any thread at a breakpoint site, instruction-step past
    the breakpoint before resuming"
    
    to a behavior of
    
    "when a thread executes a breakpoint, set the stop reason to
    breakpoint-hit" +
    "when a thread has hit a breakpoint, when the thread resumes, we
    silently step past the breakpoint and then resume the thread".
    
    For these lldb-server targets doing breakpoint stepping, this means that
    if we are sitting on a breakpoint that has not yet executed, and
    instruction-step the thread, we will execute the breakpoint instruction
    at $pc (instead of $next-pc where it meant to go), and stop again -- at
    the same pc value. Then we will rewrite the stop reason to 'trace'. The
    higher level logic will see that we haven't hit the breakpoint
    instruction again, so it will try to instruction step again, hitting the
    breakpoint again forever.
    
    To fix this, I'm checking that the thread matches the one we are
    instruction-stepping-by-breakpoint AND that we've stopped at the
    breakpoint address we are stepping to. Only in that case will the stop
    reason be rewritten to "trace" hiding the implementation detail that the
    step was done by breakpoints.
    jasonmolenda authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    213c59d View commit details
    Browse the repository at this point in the history
  22. [lldb] Set the stop reason when receiving swbreak/hwbreak (llvm#108518)

    xusheng added support for swbreak/hwbreak a month ago, and no special
    support was needed in ProcessGDBRemote when they're received because
    lldb already marks a thread as having hit a breakpoint when it stops at
    a breakpoint site. However, with changes I am working on, we need to
    know the real stop reason a thread stopped or the breakpoint hit will
    not be recognized.
    
    This is similar to how lldb processes the "watch/rwatch/awatch" keys in
    a thread stop packet -- we set the `reason` to `watchpoint`, and these
    set it to `breakpoint` so we set the stop reason correctly later in
    these methods.
    jasonmolenda authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    65a4d11 View commit details
    Browse the repository at this point in the history
  23. [libc++][NFC] Mark P1869R1 as implemented (llvm#107746)

    https://wg21.link/p1869r1: Rename `condition_variable_any` interruptible
    wait methods
    
    The paper was implemented as experimental feature in Clang 18 in:
    llvm@4fa812b
    
    Experimental status removed in:
    llvm#107900
    
    Closes llvm#100031
    
    ---------
    
    Co-authored-by: Hristo Hristov <[email protected]>
    H-G-Hristov and Zingam authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    51f5525 View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    82987bd View commit details
    Browse the repository at this point in the history
  25. [PowerPC][NFC] autogen mma tc checks via update_cc_test_checks (llvm#…

    …108584)
    
    Update mma tests in prep for changes needed in a followup patch for
    llvm#107229.
    
    Checks for ``clang/test/CodeGen/PowerPC/builtins-ppc-pair-mma-types.c``
    seem to have been manually upated to rename temp variables even though
    it says checks was auto generated. Regenerate via script.
    
    Add noopt checks for
    ``clang/test/CodeGen/PowerPC/builtins-ppc-build-pair-mma.c``.
    lei137 authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    cd6844c View commit details
    Browse the repository at this point in the history
  26. [LLDB][Minidump] Minidump erase file on failure (llvm#108259)

    In llvm#95312 Minidump file creation was moved from being created at the
    end, to the file being emitted in chunks. This causes some undesirable
    behavior where the file can still be present after an error has
    occurred. To resolve this we will now delete the file upon an error.
    Jlalond authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    661382f View commit details
    Browse the repository at this point in the history
  27. [SandboxIR][PassRegistry] Parse pipeline string (llvm#108103)

    This patch implements a simple version of the pipeline parsing function.
    It currently only handles a single FPM and adds function passes to it.
    vporpo authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    f0f1b70 View commit details
    Browse the repository at this point in the history
  28. [RISCV][Docs] Change Zvbb and Zvkb from 'Assembly Support' to Support…

    …ed. NFC (llvm#108572)
    
    We have generic isel support for Zvkb and Zvbb.
    topperc authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    8e2843b View commit details
    Browse the repository at this point in the history
  29. Adjust modulemap to mark mm3dnow as textual header. (llvm#107155)

    This avoids issuing the deprecation diagnostic when building the module.
    
    Not building it into a module shouldn't cause any negative impacts,
    since it no longer has any declarations other than the header guard.
    It's also very rarely included by anything.
    
    Addresses
    llvm#96246 (comment)
    jyknight authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    f902339 View commit details
    Browse the repository at this point in the history
  30. [SandboxIR] Implement DSOLocalEquivalent (llvm#108473)

    This patch implements sandboxir::DSOLocalEquivalent mirroring
    llvm::DSOLocalEquivalent.
    vporpo authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    fffc7fb View commit details
    Browse the repository at this point in the history
  31. [X86] AMD Zen 5 Initial enablement (llvm#107964)

    This patch enables the basic skeleton enablement of AMD next gen zen5 CPUs.
    ganeshgit authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    02e4186 View commit details
    Browse the repository at this point in the history
  32. [CodeGen] Use DenseMap::operator[] (NFC) (llvm#108489)

    Once we modernize CopyInfo with default member initializations,
    
      Copies.insert({Unit, ...})
    
    becomes equivalent to:
    
      Copies.try_emplace(Unit)
    
    which we can simplify further down to Copies[Unit].
    kazutakahirata authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    b9d85b1 View commit details
    Browse the repository at this point in the history
  33. [NFC][clang-tidy] document fix to bugprone-return-const-ref-from-para…

    …meter (llvm#107641)
    
    Describe how the issue that is diagnosed by this check can be resolved.
    Namely, by adding an overload for the xvalue case (`&&` parameter).
    
    Fixes llvm#107600
    5chmidti authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    4ef16e3 View commit details
    Browse the repository at this point in the history
  34. [mlir][GPU] Plumb range information through the NVVM lowerings (llvm#…

    …107659)
    
    Update the GPU to NVVM lowerings to correctly propagate range
    information on IDs and dimension queries, etiher from
    known_{block,grid}_size attributes or from `upperBound` annotations on
    the operations themselves.
    krzysz00 authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    a953982 View commit details
    Browse the repository at this point in the history
  35. Configuration menu
    Copy the full SHA
    02d8813 View commit details
    Browse the repository at this point in the history
  36. Avoid expression evaluation in libStdC++ std::vector<bool> synthetic …

    …children provider (llvm#108414)
    
    Our customers is reporting a serious performance issue (expanding a this
    pointer takes 70 seconds in VSCode) in a specific execution context.
    
    Profiling shows the hot path is triggered by an expression evaluation
    from libStdC++ synthetic children provider for `std::vector<bool>` since
    it uses `CreateValueFromExpression()`.
    
    This PR added a new `SBValue::CreateBoolValue()` API and switch
    `std::vector<bool>` synthetic children provider to use the new API
    without performing expression evaluation.
    
    Note: there might be other cases of `CreateValueFromExpression()` in our
    summary/synthetic children providers which I will sweep through in later
    PRs.
    
    With this PR, the customer's scenario reduces from 70 seconds => 50
    seconds. I will add other PRs to further optimize the remaining 50
    seconds (mostly from type/namespace lookup).
    
    Testing:
    
    `test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/TestDataFormatterStdVBool.py`
    passes with the PR
    
    ---------
    
    Co-authored-by: jeffreytan81 <[email protected]>
    jeffreytan81 and jeffreytan81 authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    b6bf27e View commit details
    Browse the repository at this point in the history
  37. [lldb] Do not use LC_FUNCTION_STARTS data to determine symbol size as…

    … symbols are created (llvm#106791)
    
    Summary:
    This improves the performance of ObjectFileMacho::ParseSymtab by
    removing eager and expensive work in favor of doing it later in a
    less-expensive fashion.
    
    Experiment:
    My goal was to understand LLDB's startup time.
    First, I produced a Debug build of LLDB (no dSYM) and a
    Release+NoAsserts build of LLDB. The Release build debugged the Debug
    build as it debugged a small C++ program. I found that
    ObjectFileMachO::ParseSymtab accounted for somewhere between 1.2 and 1.3
    seconds consistently. After applying this change, I consistently
    measured a reduction of approximately 100ms, putting the time closer to
    1.1s and 1.2s on average.
    
    Background:
    ObjectFileMachO::ParseSymtab will incrementally create symbols by
    parsing nlist entries from the symtab section of a MachO binary. As it
    does this, it eagerly tries to determine the size of symbols (e.g. how
    long a function is) using LC_FUNCTION_STARTS data (or eh_frame if
    LC_FUNCTION_STARTS is unavailable). Concretely, this is done by
    performing a binary search on the function starts array and calculating
    the distance to the next function or the end of the section (whichever
    is smaller).
    
    However, this work is unnecessary for 2 reasons:
    1. If you have debug symbol entries (i.e. STABs), the size of a function
    is usually stored right after the function's entry. Performing this work
    right before parsing the next entry is unnecessary work.
    2. Calculating symbol sizes for symbols of size 0 is already performed
    in `Symtab::InitAddressIndexes` after all the symbols are added to the
    Symtab. It also does this more efficiently by walking over a list of
    symbols sorted by address, so the work to calculate the size per symbol
    is constant instead of O(log n).
    bulbazord authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    0351dc5 View commit details
    Browse the repository at this point in the history
  38. Configuration menu
    Copy the full SHA
    3a27458 View commit details
    Browse the repository at this point in the history
  39. [AArch64][GISel] Scalarize i128 vector shifts.

    Like most other i128 operations, this adds scalarization for i128 vector
    shifts. Which in turn allows a few other operations to legalize too.
    davemgreen committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    7582308 View commit details
    Browse the repository at this point in the history
  40. [AArch64][GISel] Scalarize i128 ICmp and Select.

    Similar to other i128 bit operations, we scalarizer any icmps or selects larger
    than 64bits.
    davemgreen committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    3a4b30e View commit details
    Browse the repository at this point in the history
  41. [Utils] add update-verify-tests.py (llvm#97369)

    Adds a python script to automatically take output from a failed clang
    -verify test and update the test case(s) to expect the new behaviour.
    hnrklssn authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    d4f41be View commit details
    Browse the repository at this point in the history
  42. [Coroutines] Move Shape to its own header (llvm#108242)

    * To create custom ABIs plugin libraries need access to CoroShape.
    * As a step in enabling plugin libraries, move Shape into its own header
    * The header will eventually be moved into include/llvm/Transforms/Coroutines
    
    See RFC for more info:
    https://discourse.llvm.org/t/rfc-abi-objects-for-coroutines/81057
    TylerNowicki authored Sep 13, 2024
    Configuration menu
    Copy the full SHA
    4c040c0 View commit details
    Browse the repository at this point in the history
  43. [Coroutines] Refactor CoroShape::buildFrom to support ABI

    * Refactor buildFrom to separate the analysis, abi related operations,
      tidying and bailout.
    * In a follow-up PR the code in initABI will be moved to an ABI object
      init method. And the Shape constructor will no longer perform any
      lowering, instead it will just call analysis. This will make the Shape
      object a bit more useful because it can be constructed and used
      anywhere. It may even be useful to make it an analysis pass.
    * In a follow-up PR the OptimizeFrame flag will also be removed from the
      Shape and instead will be passed directly to buildCoroutineFrame
      (although it would be nice to find another way to trigger this
      optimization). This is the only thing that Shape cannot determine from
      the Function/Coroutine, but it is only needed within
      buildCoroutineFrame.
    * Note, that it was necessary to introduce two new SmallVectors, one to
      track CoroFrames and the other for UnusedCoroSaves. The tidyCoroutine
      method requires both, while invalidateCoroutine (bailout) method just
      requires the former.
    
    See RFC for more info: https://discourse.llvm.org/t/rfc-abi-objects-for-coroutines/81057
    tnowicki committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    ba9e523 View commit details
    Browse the repository at this point in the history