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

P2231 Missing constexpr in std::optional and std::variant #933

Closed
wg21bot opened this issue Oct 27, 2020 · 11 comments · Fixed by cplusplus/draft#4679
Closed

P2231 Missing constexpr in std::optional and std::variant #933

wg21bot opened this issue Oct 27, 2020 · 11 comments · Fixed by cplusplus/draft#4679
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e C++23 Targeted at C++23 IS Ship vehicle: IS LWG Library plenary-approved Papers approved for inclusion in their target vehicle by plenary vote.
Milestone

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Oct 27, 2020

P2231R0 Missing constexpr in std::optional and std::variant (Barry Revzin)

@wg21bot wg21bot added the LEWG Library Evolution label Oct 27, 2020
@wg21bot wg21bot added this to the 2020-telecon milestone Oct 27, 2020
@brycelelbach brycelelbach added ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list IS Ship vehicle: IS B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e labels Nov 16, 2020
@jensmaurer jensmaurer modified the milestones: 2020-telecon, 2021-telecon Dec 28, 2020
@cor3ntin cor3ntin removed the ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list label Jan 25, 2021
@brycelelbach
Copy link

brycelelbach commented Jan 26, 2021

2021-01-25 Library Evolution Telecon

P2231R0: Missing constexpr in std::optional and std::variant

2021-01-25 Library Evolution Telecon Minutes

Chair: Ben Craig

Champion: Barry Revzin

Minute Taker: Mark Hoemmen

SUMMARY:

In C++17, you can't change the active member of a union in a constexpr context. In C++20, you can. This paper takes advantage of that change to make optional and variant more constexpr than they were to begin with. optional was one of the motivating reasons for allowing constexpr union changes in the first place.

The next revision of the paper needs to bump some feature test macros.

POLL: Send the next revision of P2231 (P2231R1) (Missing constexpr in std::optional and std::variant) to the upcoming Winter electronic ballot for LWG for C++23, with priority bucket 2 (Improvement), with the addition of feature test macro bumps for __cpp_lib_optional and __cpp_lib_variant. __

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
8 6 1 0 0

Attendance: 25

# of Authors: 1

Author Position: SF

Outcome: Consensus, forwarding to the electronic ballot.

OUTCOME:

Modify P2231R0 (Missing constexpr in optional and variant) by adding bumps of the feature test macros __cpp_lib_optional and __cpp_lib_variant, and then send the revised paper to electronic balloting to be forwarded to LWG for C++23, classified as an improvement of an existing feature (P0592R4 bucket 2 item).

@brycelelbach brycelelbach changed the title P2231 Add further constexpr support for optional/variant Missing constexpr in std::optional and std::variant Jan 26, 2021
@brycelelbach brycelelbach added C++23 Targeted at C++23 ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll needs-revision Paper needs changes before it can proceed labels Jan 26, 2021
@JeffGarland JeffGarland added LWG Library lwg-fullreview Paper is ready for lwg full group review and removed needs-revision Paper needs changes before it can proceed labels Jan 27, 2021
@JeffGarland
Copy link
Member

Barry has provided a revision. Scheduled for LWG review 2020-01-29

@JeffGarland
Copy link
Member

LWG reviewed and approved revised version for C++23 in 2020-01-29 meeting. Since we processed this quickly we will wait until the LEWG vote is completed to send to plenary.

Link to reviewed revision: https://brevzin.github.io/cpp_proposals/2231_constexpr_optional_variant/d2231r1.html

Notes
https://wiki.edg.com/bin/view/Wg21telecons2021/D2231-20210129

Vote:
Adopt P2231 Missing constexpr in std::optional and std::variant for c++23
F N A
11 0 0

@JeffGarland
Copy link
Member

This was review and approved by LWG on 2020-01-29. Ideally to be applied backward to c++20 by vendors. LWG will wait until LEWG electronic poll is complete to move in plenary -- so summer 2021.

Adopt P2231 Missing constexpr in std::optional and std::variation for C++23?

F N A
11 0 0

https://wiki.edg.com/bin/view/Wg21telecons2021/D2231-20210129

@JeffGarland JeffGarland removed the lwg-fullreview Paper is ready for lwg full group review label Feb 5, 2021
@brycelelbach brycelelbach changed the title Missing constexpr in std::optional and std::variant P2231 Missing constexpr in std::optional and std::variant Feb 22, 2021
@brycelelbach brycelelbach added ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll scheduled-for-library-evolution-electronic-poll and removed ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll labels Feb 22, 2021
@wg21bot
Copy link
Collaborator Author

wg21bot commented Feb 23, 2021

P2231R1 Add further constexpr support for optional/variant (Barry Revzin)

@brycelelbach brycelelbach added LEWG Library Evolution and removed LEWG Library Evolution labels Feb 24, 2021
@brycelelbach
Copy link

brycelelbach commented Mar 13, 2021

2021 Winter Library Evolution Polls

P2333: 2021 Winter Library Evolution Poll Outcomes

POLL 7: Modify P2231R0 (Missing constexpr In optional And variant) by adding bumps of the feature test macros __cpp_lib_optional and __cpp_lib_variant, and then send the revised paper to LWG for C++23, classified as an improvement of an existing feature (P0592R4 bucket 2 item).

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
19 8 1 0 0

Outcome: Strong consensus in favor.

Outcome

Modify P2231R0 (Missing constexpr In optional And variant) by adding bumps of the feature test macros __cpp_lib_optional and __cpp_lib_variant, and then send the revised paper to LWG for C++23, classified as an improvement of an existing feature (P0592R4 bucket 2 item).

@brycelelbach
Copy link

@JeffGarland I marked this tentative-ready-for-lwg, hopefully that is the right status.

@JeffGarland
Copy link
Member

@brycelelbach In this case no. Sorry to change the process up on you, but we already reviewed and approved the wording here. So this one moves to tentatively-ready-for-plenary.

@JeffGarland JeffGarland added tentatively-ready-for-plenary Reviewed between meetings; ready for a vote. and removed tentatively-ready-for-lwg labels Mar 13, 2021
@brycelelbach
Copy link

@JeffGarland No worries - my fault, I should've realized that. I think I set two others this way.

@cplusplus cplusplus deleted a comment from ben-craig Apr 23, 2021
@jwakely jwakely added the C++20 Targeted at C++20 label May 20, 2021
@jwakely
Copy link
Member

jwakely commented May 20, 2021

I've added the C++20 label to reflect the "Ideally to be applied backward to c++20 by vendors." disposition.

zoecarver added a commit to zoecarver/llvm-project that referenced this issue May 24, 2021
commit 3103b231c0d97c679bf1fe0c1a0a9e758ec384ea
Author: zoecarver <z.zoelec2@gmail.com>
Date:   Fri May 14 11:21:27 2021 -0700

    Apply https://reviews.llvm.org/D102135.

commit 001a979c24779332173f9c9e6fe475f7e7318ba2
Author: Christopher Di Bella <cjdb@google.com>
Date:   Fri May 14 11:19:55 2021 -0700

    [libcxx][optional] adds missing constexpr operations

    Makes the following operations constexpr:
      * `std::swap(optional, optional)`
      * `optional(optional<U> const&)`
      * `optional(optional<U>&&)`
      * `~optional()`
      * `operator=(nullopt_t)`
      * `operator=(U&&)`
      * `operator=(optional<U> const&)`
      * `operator=(optional<U>&&)`
      * `emplace(Args&&...)`
      * `emplace(initializer_list<U>, Args&&...)`
      * `swap(optional&)`
      * `reset()`

    P2231 is currently marked as tentatively ready for plenary. [LWG
    recommends implementers retroactively apply to C++20][1]. This commit
    is a bit ahead of the committee, but it's necessary to conveniently
    implement _`semiregular-box`_ and _`non-propagating-cache`_, both of
    which are required for ranges (otherwise we'll need to reimplement
    `std::optional` with these members `constexpr`ified). If LEWG or
    plenary decide that P2231 shouldn't be adopted, then this commit will
    be rolled back, and a detail optional base will appear in its place.

    [1]: https://github.com/cplusplus/papers/issues/933

    Differential Revision: https://reviews.llvm.org/D102119

commit fe319a8848f2343829925850a3969861d8d6a64c
Author: zoecarver <z.zoelec2@gmail.com>
Date:   Thu May 13 11:48:43 2021 -0700

    [libcxx][docs] Add two locks: transform_view and take_view.

    Assign myself both of these views.

commit 3ac9ff5577f1d4b032a64aea1c46e95c8a5b8f68
Author: zoecarver <z.zoelec2@gmail.com>
Date:   Thu May 13 11:45:22 2021 -0700

    [libcxx][docs] Update the One Ranges PRoposal Status with open revisions.

    1. Moves the names into the names column.
    2. Changes the names to reflect who's actually working on what.
    3. Adds open revisions.

commit 464e4dc50f4e6e058e12a7020385d5bf29fd1df6
Author: Aakanksha Patil <aakanksha555@gmail.com>
Date:   Thu May 13 14:21:40 2021 -0400

    [AMDGPU] Add gfx1034 target

    Differential Revision: https://reviews.llvm.org/D102306

commit 5ad2eeeadaf15856332f66ed7c244d52a86b0be7
Author: Artem Dergachev <artem.dergachev@gmail.com>
Date:   Tue May 11 16:44:49 2021 -0700

    [clang-tidy] bugprone-infinite-loop: React to ObjC ivars and messages.

    If the loop condition is a value of an instance variable, a property value,
    or a message result value, it's a good indication that the loop is not infinite
    and we have a really hard time proving the opposite so suppress the warning.

    Differential Revision: https://reviews.llvm.org/D102294

commit 46c6c08c9428a36bdf88f51b1a14164aa4cbb93e
Author: Artem Dergachev <artem.dergachev@gmail.com>
Date:   Mon May 10 20:09:32 2021 -0700

    [clang-tidy] bugprone-infinite-loop: forFunction() -> forCallable().

    Take advantage of the new ASTMatcher added in D102213 to fix massive false negatives of the infinite loop checker on Objective-C.

    Differential Revision: https://reviews.llvm.org/D102214

commit 6a079dfdc992706408f2bde84c48bf76e52c4311
Author: Artem Dergachev <artem.dergachev@gmail.com>
Date:   Tue May 11 20:22:58 2021 -0700

    [ASTMatchers] Add forCallable(), a generalization of forFunction().

    The new matcher additionally covers blocks and Objective-C methods.

    This matcher actually makes sure that the statement truly belongs
    to that declaration's body. forFunction() incorrectly reported that
    a statement in a nested block belonged to the surrounding function.

    forFunction() is now deprecated due to the above footgun, in favor of
    forCallable(functionDecl()) when only functions need to be considered.

    Differential Revision: https://reviews.llvm.org/D102213

commit dd98ea528c0c23f5fee6d3dbafc261b81cca9f0d
Author: Artem Dergachev <artem.dergachev@gmail.com>
Date:   Tue May 11 20:21:26 2021 -0700

    [ASTMatchers] NFC: Fix formatting around forFunction().

    Differential Revision: https://reviews.llvm.org/D102303

commit 0d8f91d2a9994619bb62c548a81eb605f0e768f7
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 21:22:38 2021 +0300

    [NFC] Delete two newly-added test cases

    Failing on bots in unobvious ways.

commit 6829bd3ed0515e17c84c5e72fe1742bd20ee61e5
Author: peter klausler <pklausler@nvidia.com>
Date:   Wed May 12 12:10:28 2021 -0700

    [flang] (NFC) Expose internal idiom as utility API

    Add overloads to AsGenericExpr() in Evaluate/tools.h to take care
    of wrapping an untyped DataRef or bare Symbol in a typed Designator
    wrapped up in a generic Expr<SomeType>.  Use the new overloads to
    replace a few instances of code that was calling TypedWrapper<>()
    with a dynamic type.

    This new tool will be useful in lowering to drive some code that
    works with typed expressions (viz., list-directed I/O list items)
    when starting with only a bare Symbol (viz., NAMELIST).

    Differential Revision: https://reviews.llvm.org/D102352

commit ecc4e9e8f4cb7581cbc447bc838943176715695c
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 21:16:44 2021 +0300

    [NFC] Try to fix CodeGenCXX/thunk-wrong-return-type.cpp test

commit 8ec9fd483949ca3b23053effcac226dcc56e7a95
Author: cynecx <me@cynecx.net>
Date:   Thu May 13 19:05:11 2021 +0100

    Support unwinding from inline assembly

    I've taken the following steps to add unwinding support from inline assembly:

    1) Add a new `unwind` "attribute" (like `sideeffect`) to the asm syntax:

    ```
    invoke void asm sideeffect unwind "call thrower", "~{dirflag},~{fpsr},~{flags}"()
        to label %exit unwind label %uexit
    ```

    2.) Add Bitcode writing/reading support + LLVM-IR parsing.

    3.) Emit EHLabels around inline assembly lowering (SelectionDAGBuilder + GlobalISel) when `InlineAsm::canThrow` is enabled.

    4.) Tweak InstCombineCalls/InlineFunction pass to not mark inline assembly "calls" as nounwind.

    5.) Add clang support by introducing a new clobber: "unwind", which lower to the `canThrow` being enabled.

    6.) Don't allow unwinding callbr.

    Reviewed By: Amanieu

    Differential Revision: https://reviews.llvm.org/D95745

commit 9d3eb7885d916b22bc673334f71a10e3b2835174
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 21:09:45 2021 +0300

    [NFC] Try to fix CodeGenCXX/thunk-wrong-this.cpp test

commit 54310fc176fde539b15f3cc95d4a3555df446ff6
Author: Stefan Pintilie <stefanp@ca.ibm.com>
Date:   Thu May 13 09:58:59 2021 -0500

    [PowerPC] Add ROP Protection to prologue and epilogue

    Added hashst to the prologue and hashchk to the epilogue.
    The hash for the prologue and epilogue must always be stored as the first
    element in the local variable space on the stack.

    Reviewed By: nemanjai, #powerpc

    Differential Revision: https://reviews.llvm.org/D99377

commit 50e0b2985e43baf61617c9734df71e949113f911
Author: peter klausler <pklausler@nvidia.com>
Date:   Wed May 12 12:07:51 2021 -0700

    [flang] Implement DOT_PRODUCT in the runtime

    API, implementation, and basic tests for the transformational
    reduction intrinsic function DOT_PRODUCT in the runtime support
    library.

    Differential Revision: https://reviews.llvm.org/D102351

commit 7c57a9bd7d4c976b7a824472c427433359200e02
Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
Date:   Fri Apr 30 15:23:47 2021 -0700

    Modules: Simplify how DisableGeneratingGlobalModuleIndex is set, likely NFC

    DisableGeneratingGlobalModuleIndex was being set by
    CompilerInstance::findOrCompileModuleAndReadAST most of (but not all of)
    the times it returned `nullptr` as a "normal" failure. Pull that up to
    the caller, CompilerInstance::loadModule, to simplify the code. This
    resolves a number of FIXMEs added during the refactoring in
    5cca622310c10fdf6f921b6cce26f91d9f14c762.

    The extra cases where this is set are all some version of a fatal error,
    and the only client of the field, shouldBuildGlobalModuleIndex, seems
    to be unreachable in that case. Even if there is some corner case where
    this has an effect, it seems like the right/consistent behaviour.

    Differential Revision: https://reviews.llvm.org/D101672

commit 16d03818412415c56efcd482d18c0cbdf712524c
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 18:20:37 2021 +0300

    Return "[CGCall] Annotate `this` argument with alignment"

    The original change was reverted because it was discovered
    that clang mishandles thunks, and they receive wrong
    attributes for their this/return types - the ones for the function
    they will call, not the ones they have.

    While i have tried to fix this in https://reviews.llvm.org/D100388
    that patch has been up and stuck for a month now,
    with little signs of progress.

    So while it will be good to solve this for real,
    for now we can simply avoid introducing the bug,
    by not annotating this/return for thunks.

    This reverts commit 6270b3a1eafaba4279e021418c5a2c5a35abc002,
    relanding 0aa0458f1429372038ca6a4edc7e94c96cd9a753.

commit a624cec56d4bf61c1f3cb7daf2d27dac59c56fa4
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 14:48:26 2021 +0300

    [Clang][Codegen] Do not annotate thunk's this/return types with align/deref/nonnull attrs

    As it was discovered in post-commit feedback
    for 0aa0458f1429372038ca6a4edc7e94c96cd9a753,
    we handle thunks incorrectly, and end up annotating
    their this/return with attributes that are valid
    for their callees, not for thunks themselves.

    While it would be good to fix this properly,
    and keep annotating them on thunks,
    i've tried doing that in https://reviews.llvm.org/D100388
    with little success, and the patch is stuck for a month now.

    So for now, as a stopgap measure, subj.

commit 70aa4623de9fe2f609eab8969d7ef76b4c80084b
Author: Roman Lebedev <lebedev.ri@gmail.com>
Date:   Thu May 13 14:46:41 2021 +0300

    [NFC][Clang][Codegen] Add tests with wrong attributes on this/return of thunks

    From https://reviews.llvm.org/D100388

commit 1011d4ed60d9d32d53e20cbe72e47c9eecb84f49
Author: David Green <david.green@arm.com>
Date:   Thu May 13 18:31:01 2021 +0100

    [ARM] Constrain CMPZ shift combine to a single use

    We currently prefer t2CMPrs over t2CMPri when the node contains a shift.
    This can introduce more nodes if the shift has multiple uses though, as
    value from the shift will be needed anyway, and in the case of a t2CMPri
    compared with zero will more readily be removed entirely.

    Differential Revision: https://reviews.llvm.org/D101688

commit f93e9c12bf482dbfe3d4d00fcf8bbc251500dd99
Author: Jonas Devlieghere <jonas@devlieghere.com>
Date:   Thu May 13 10:12:00 2021 -0700

    [lldb] Fixup indirect symbols as they are signed.

    This fixes a bunch of test failures in Apple Silicon (arm64e).

commit ce12b52de2fb3f319ff18effc4ea9ff4d369f328
Author: Jonas Devlieghere <jonas@devlieghere.com>
Date:   Thu May 13 09:41:09 2021 -0700

    [lldb] Fixup more code addresses

    The Swift async task pointers are signed on arm64e and we need to fixup
    the addresses in the CFA and DWARF expressions.

commit 23e9146fba298d38142337b615e17067fb8ccb91
Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
Date:   Fri Apr 30 15:09:09 2021 -0700

    Modules: Rename ModuleBuildFailed => DisableGeneratingGlobalModuleIndex, NFC

    Rename CompilerInstance's ModuleBuildFailed field to
    DisableGeneratingGlobalModuleIndex, which more precisely describes its
    role. Otherwise, it's hard to suss out how it's different from
    ModuleLoader::HadFatalFailure, and what sort of code simplifications are
    safe.

    Differential Revision: https://reviews.llvm.org/D101670

commit cd0eeb52ad37d8f55407c548f93f42a0d5b2d08b
Author: Weiwei Li <weiwei.li1@huawei.com>
Date:   Thu May 13 13:06:53 2021 -0400

    [mlir][spirv] Define spv.ImageQuerySize operation

    Support OpImageQuerySize in spirv dialect

    co-authored-by: Alan Liu <alanliu.yf@gmail.com>

    Reviewed By: antiagainst

    Differential Revision: https://reviews.llvm.org/D102029

commit 45212dec01b9be90596d8d6fa7586ce8c84e2622
Author: Valeriy Savchenko <vsavchenko@apple.com>
Date:   Tue May 11 17:30:02 2021 +0300

    [analyzer][solver] Prevent use of a null state

    rdar://77686137

    Differential Revision: https://reviews.llvm.org/D102240

commit 7f607ac6af0e2ee8a7d721d3ba427536deffcd3f
Author: zoecarver <z.zoelec2@gmail.com>
Date:   Thu May 13 10:09:15 2021 -0700

    [pstl] Use logical operator for loop condition in tests

    Fix a probable typo in two PSTL tests that causes warnings with GCC.

    Patch by Jonathan Wakely (jwakely).

    Reviewed By: zoecarver

    Differential Revision: https://reviews.llvm.org/D102327

commit 7c2afd5899df876eaf5ffb485194dc58e92daf89
Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
Date:   Fri Apr 30 14:14:03 2021 -0700

    Modules: Remove ModuleLoader::OtherUncachedFailure, NFC

    5cca622310c10fdf6f921b6cce26f91d9f14c762 refactored
    CompilerInstance::loadModule, splitting out
    findOrCompileModuleAndReadAST, but was careful to avoid making any
    functional changes. It added ModuleLoader::OtherUncachedFailure to
    facilitate this and left behind FIXMEs asking why certain failures
    weren't cached.

    After a closer look, I think we can just remove this and simplify the
    code. This changes the behaviour of the following (simplified) code from
    CompilerInstance::loadModule, causing a failure to be cached more often:

    ```
      if (auto MaybeModule = MM.getCachedModuleLoad(*Path[0].first))
        return *MaybeModule;
      if (ModuleName == getLangOpts().CurrentModule)
        return MM.cacheModuleLoad(PP.lookupModule(...));
      ModuleLoadResult Result = findOrCompileModuleAndReadAST(...);
      if (Result.isNormal()) // This will be 'true' more often.
        return MM.cacheModuleLoad(..., Module);
      return Result;
    ```

    `MM` here is a ModuleMap owned by the Preprocessor. Here are the cases
    where `findOrCompileModuleAndReadAST` starts returning a "normal" failed
    result:
    - Emitted `diag::err_module_not_found`, where there's no module map
      found.
    - Emitted `diag::err_module_build_disabled`, where implicitly building
      modules is disabled.
    - Emitted `diag::err_module_cycle`, which detects module cycles in the
      implicit modules build system.
    - Emitted `diag::err_module_not_built`, which avoids building a module
      in this CompilerInstance if another one tried and failed already.
    - `compileModuleAndReadAST()` was called and failed to build.

    The four errors are all fatal, and last item also reports a fatal error,
    so it this extra caching has no functionality change... but even if it
    did, it seems fine to cache these failed results within a ModuleMap
    instance (note that each CompilerInstance has its own Preprocessor and
    ModuleMap).

    Differential Revision: https://reviews.llvm.org/D101667

commit 98e4fd0701d0c65229db876ce338c723231d8cb4
Author: zoecarver <z.zoelec2@gmail.com>
Date:   Tue May 11 11:14:26 2021 -0700

    [libcxx][ranges] Fix `ranges::empty` when begin, end, and empty members are provided.

    Before this commit, we'd get a compilation error because the operator() overload was ambiguous.

    Differential Revision: https://reviews.llvm.org/D102263

commit 9469ff15b77905245e26fe7f166fc127d813a0c0
Author: Lei Huang <lei@ca.ibm.com>
Date:   Mon May 10 15:20:16 2021 -0500

    [PowerPC] Add clang option -m[no-]prefixed

    Add user-facing front end option to turn off power10 prefixed instructions.

    Reviewed By: nemanjai

    Differential Revision: https://reviews.llvm.org/D102191

commit 10de21720989166a6b51cbf48b21efacbb913f23
Author: Jon Chesterfield <jonathanchesterfield@gmail.com>
Date:   Thu May 13 17:31:57 2021 +0100

    [libomptarget][amdgpu] Fix truncation error for partial wavefront

    [libomptarget][amdgpu] Fix truncation error for partial wavefront

    The partial barrier implementation involves one wavefront resetting and N-1
    waiting. This change future proofs against launching with a number of threads
    that is not a multiple of the wavefront size.

    Reviewed By: jdoerfert

    Differential Revision: https://reviews.llvm.org/D102407

commit b049870d3b47a93b0c53f3ad69b11c4731b39d7f
Author: Jon Chesterfield <jonathanchesterfield@gmail.com>
Date:   Thu May 13 17:31:35 2021 +0100

    [libomptarget][amdgpu] Convert an assert to print and offload_fail

    [libomptarget][amdgpu] Convert an assert to print and offload_fail

    The kernel launched is supposed to be present in the binary, but a not yet
    diagnosed bug means it is missing for some of the qmcpack test cases. Changing
    from assert to print and offload_fail should help diagnose that and similar bugs.

    Reviewed By: jdoerfert

    Differential Revision: https://reviews.llvm.org/D102378

commit 3f2891db6dd5684ee743055c0e86d0d3dd66c90b
Author: Jacques Pienaar <jpienaar@google.com>
Date:   Thu May 13 09:13:47 2021 -0700

    [mlir] Add python test for shape dialect

    Add basic test for shape.const_shape op as start.

    Differential Revision: https://reviews.llvm.org/D102341

commit 2ed7db0d206b6af2fffa4cb2704264b76ca61266
Author: Joe Ellis <joe.ellis@arm.com>
Date:   Thu May 13 15:50:06 2021 +0000

    [InstSimplify] Remove redundant {insert,extract}_vector intrinsic chains

    This commit removes some redundant {insert,extract}_vector intrinsic
    chains by implementing the following patterns as instsimplifies:

       (insert_vector _, (extract_vector X, 0), 0) -> X
       (extract_vector (insert_vector _, X, 0), 0) -> X

    Reviewed By: peterwaller-arm

    Differential Revision: https://reviews.llvm.org/D101986

commit 34ed3e63378e34f93ada56a19cebc68cf1498092
Author: Michael Kruse <llvm-project@meinersbur.de>
Date:   Thu May 13 11:04:59 2021 -0500

    [OpenMP] Test unified shared memory tests only on systems that support it.

    Add a `REQUIRES: unified_shared_memory` option to tests that use `#pragma omp requires unified_shared_memory`.

    For CUDA, the feature tag is derived from LIBOMPTARGET_DEP_CUDA_ARCH which itself is derived using [[ https://cmake.org/cmake/help/latest/module/FindCUDA.html#commands | cuda_select_nvcc_arch_flags ]]. The latter determines which compute capability the GPU in the system supports. To ensure that this is the CUDA arch being used, we could also set the `-Xopenmp-target -march=` flag.
    In the absence of an NVIDIA GPU, LIBOMPTARGET_DEP_CUDA_ARCH will be 35. That is, in that case we are assuming unified_shared_memory is not available. CUDA plugin testing could be disabled entirely in this case, but this currently depends on `LIBOMPTARGET_CAN_LINK_LIBCUDA OR LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA`, not on whether the hardware is actually available.

    For all other targets, nothing changes and we are assuming unified shared memory is available. This might need refinement if not the case.

    This tries to fix the [[ http://meinersbur.de:8011/#/builders/143 | OpenMP Offloading Buildbot ]] that, although brand-new, only has a Pascal-generation (sm_61) GPU installed. Hence, tests that require unified shared memory are currently failing. I wish I had known in advance.

    Reviewed By: protze.joachim, tianshilei1992

    Differential Revision: https://reviews.llvm.org/D101498

commit 8f98356bb53dca07a86bf098556d446e0d5af6fe
Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>
Date:   Wed May 12 11:35:12 2021 -0700

    [AMDGPU] Only allow global fp atomics with unsafe option

    Previously we were allowing to use FP atomics without
    -amdgpu-unsafe-fp-atomics option if a scope is less then
    system. This is not safe just as well if we have UC memory.

    This change only allows global and flat FP atomics with
    the unsafe option. Consequentially that makes a check for
    denorm mode redundant since we skip it with the unsafe
    option and do not have a way to produce these instructions
    without it anyway.

    Differential Revision: https://reviews.llvm.org/D102347

commit 6a67e05a26eb5f58665bd6d063b9f389e7dd28a7
Author: Aaron En Ye Shi <enye.shi@gmail.com>
Date:   Wed May 12 19:53:47 2021 +0000

    [HIP] Add __builtin_amdgcn_groupstaticsize

    Differential Revision: https://reviews.llvm.org/D102403

commit 8fa168fc50ba4f63b79773c947ef5b3e43d5c02f
Author: Zarko Todorovski <zarko@ca.ibm.com>
Date:   Thu May 13 10:44:40 2021 -0400

    Parse vector bool when stdbool.h and altivec.h are included

    Currently when including stdbool.h and altivec.h declaration of `vector bool` leads to
    errors due to `bool` being expanded to '_Bool`. This patch allows the parser
    to recognize `_Bool`.

    Reviewed By: hubert.reinterpretcast, Everybody0523

    Differential Revision: https://reviews.llvm.org/D102064

commit b1a074951ff78bf06a2d944c01ca0a0fcd63dd33
Author: Bradley Smith <bradley.smith@arm.com>
Date:   Tue May 4 11:18:34 2021 +0100

    [AArch64][SVE] Fix missed immediate selection due to mishandling of signedness

    The complex selection pattern for add/sub shifted immediates is
    incorrect in it's handling of incoming constant values, in that it
    does not properly anticipate the values to be signed extended to
    32-bits.

    Co-authored-by: Graham Hunter <graham.hunter@arm.com>

    Differential Revision: https://reviews.llvm.org/D101833

commit cf194da1bbf79d392688dba0c74875829e9873f2
Author: Tobias Gysi <gysit@google.com>
Date:   Thu May 13 14:24:33 2021 +0000

    [mlir][linalg] Remove IndexedGenericOp support from FusionOnTensors...

    after introducing the IndexedGenericOp to GenericOp canonicalization (https://reviews.llvm.org/D101612).

    Differential Revision: https://reviews.llvm.org/D102163

commit 0f24163870e1a633c1d79377fdd188fe03769dd8
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 13:55:47 2021 +0900

    [mlir] Replace vector-to-scf with progressive-vector-to-scf

    Depends On D102388

    Reviewed By: nicolasvasilache

    Differential Revision: https://reviews.llvm.org/D102101

commit f358c372094599bf2a9246a0d2145cd949b4c62d
Author: Tobias Gysi <gysit@google.com>
Date:   Thu May 13 13:14:47 2021 +0000

    [mlir][linalg] Remove IndexedGenericOp support from DropUnitDims...

    after introducing the IndexedGenericOp to GenericOp canonicalization (https://reviews.llvm.org/D101612).

    Differential Revision: https://reviews.llvm.org/D102235

commit fe9101c3d8db4d054aade400efae45857f0840da
Author: Paul C. Anagnostopoulos <paul@windfall.com>
Date:   Tue May 11 12:50:09 2021 -0400

    [TableGen] Make the NUL character invalid in .td files

    Now uses tr instead of sed.

    Differential Revision: https://reviews.llvm.org/D102254

commit 395607af3cb80f25ee05420ea5ae0ad0be948533
Author: Juneyoung Lee <aqjune@gmail.com>
Date:   Sun Nov 29 04:26:44 2020 +0900

    Reapply [ConstantFold] Fold more operations to poison

    This was reverted to mitigate mitigate miscompiles caused by
    the logical and/or to bitwise and/or fold. Reapply it now that
    the underlying issue has been fixed by D101191.

    -----

    This patch folds more operations to poison.

    Alive2 proof: https://alive2.llvm.org/ce/z/mxcb9G (it does not contain tests about div/rem because they fold to poison when raising UB)

    Reviewed By: nikic

    Differential Revision: https://reviews.llvm.org/D92270

commit d020dd2b21be85b60f935980ab8e93caee7a661a
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 16:50:15 2021 +0900

    [mlir] Migrate vector-to-loops.mlir to ProgressiveVectorToSCF

    Create a copy of vector-to-loops.mlir and adapt the test for
    ProgressiveVectorToSCF. Fix a small bug in getExtractOp() triggered by
    this test.

    Differential Revision: https://reviews.llvm.org/D102388

commit 2b20dee59bc8829182235964b02777d54f53bb62
Author: Krzysztof Parzyszek <kparzysz@quicinc.com>
Date:   Thu May 13 08:36:07 2021 -0500

    Fix section title underlining in the release notes

commit 92260d7a186425510e96b7036b467a6889d08d97
Author: Oliver Stannard <oliver.stannard@linaro.org>
Date:   Thu May 13 14:25:40 2021 +0100

    Revert "[CMake][ELF] Add -fno-semantic-interposition and -Bsymbolic-functions"

    This reverts commit 3bf1acab5b454ad7fb2074b34663108b53620695.

    This is causing the test `gcov-shared-flush.c' to fail on the 2-stage
    aarch64 buildbots (https://lab.llvm.org/buildbot/#/builders/7/builds/2720).

commit 4dea3487315ed2870134c303c550152965a0580b
Author: Krzysztof Parzyszek <kparzysz@quicinc.com>
Date:   Thu May 13 08:25:04 2021 -0500

    Add entry about Hexagon V68 support to the release notes

commit b1509d067e426bb8451bba789e34c4e65a168aba
Author: Jinsong Ji <jji@us.ibm.com>
Date:   Thu May 13 13:24:45 2021 +0000

    [AIX] XFAIL CodeGen/Generic/externally_available.ll

        Globals with “available_externally” linkage should never be emitted into the
        object file corresponding to the LLVM module.

        However, AIX system assembler default print error for undefined reference .
        so AIX chose to emit the available externally symbols into .s,
        so that users won't run into errors in situations like:

        clang -target powerpc-ibm-aix -xc -<<<$'extern inline
        __attribute__((__gnu_inline__)) void foo() {}\nvoid bar() { foo(); }' -O
        -Xclang -disable-llvm-passes

    Reviewed By: hubert.reinterpretcast

    Differential Revision: https://reviews.llvm.org/D102377

commit bf068e1077a44fcb52fdf2aeb8f03f80517b64ab
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 21:57:49 2021 +0900

    [mlir] Do not use pass labels in unrolled ProgressiveVectorToSCF

    Do not rely on pass labels to detect if the pattern was already applied in the past (which allows for more some extra optimizations to avoid extra InsertOps and ExtractOps). Instead, check if these optimizations can be applied on-the-fly.

    This also fixes a bug, where vector.insert and vector.extract ops sometimes disappeared in the middle of the pass because they get folded away, but the next application of the pattern expected them to be there.

    Differential Revision: https://reviews.llvm.org/D102206

commit 9310840cc249ae1aec427948fb09b8056e7094c0
Author: Nico Weber <thakis@chromium.org>
Date:   Thu May 13 08:53:11 2021 -0400

    [gn build] (manually) port 92f9852fc99b, clang-repl

commit e07753c8814dba100dcae44e2b47947b340ad0e8
Author: Georgy Komarov <jubnzv@gmail.com>
Date:   Wed May 12 20:23:05 2021 +0300

    [clang-tidy] Fix test that requires Windows platofrm

    This commit fixes the cppcoreguidelines-pro-type-vararg test when it
    runs on a Windows host, but the toolchain is targeted a non-Windows
    platform.

    Reviewed By: njames93

    Differential Revision: https://reviews.llvm.org/D102337

commit 15051f0b4a2e0a0af9da7cd5e5cfaabb9f6aaa3d
Author: Stefan Pintilie <stefanp@ca.ibm.com>
Date:   Thu May 13 05:49:19 2021 -0500

    [PowerPC] Handle inline assembly clobber of link regsiter

    This patch adds the handling of clobbers of the link register LR for inline
    assembly.

    This patch is to fix:
    https://bugs.llvm.org/show_bug.cgi?id=50147

    Reviewed By: nemanjai, #powerpc

    Differential Revision: https://reviews.llvm.org/D101657

commit bdada7546e6b4a189a22c7ba9ce2d1b507b9c22e
Author: Florian Hahn <flo@fhahn.com>
Date:   Thu May 13 12:57:39 2021 +0100

    [VPlan] Adjust assert in splitBlock to allow splitting at end.

    SplitAt should only be dereferenced in the assert if it does not point
    to the end of the block. This fixes a crash in the added test case.

commit ba0ec1be2916eae1798ad4c56480f471a65f7ce9
Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date:   Thu May 13 13:27:01 2021 +0100

    [X86] X86ExpandPseudo.cpp - try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. NFCI.

commit 4956655640c19190264b07740499e56ccb33c61f
Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date:   Thu May 13 13:23:19 2021 +0100

    [X86] X86InstrInfo.cpp - try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. NFCI.

commit 9dfc4ac41cedd8d7a79d7954b5a54ab33cfca05d
Author: Simon Pilgrim <llvm-dev@redking.me.uk>
Date:   Thu May 13 13:19:13 2021 +0100

    [X86] VZeroUpperInserter::insertVZeroUpper - avoid DebugLoc creation by embedding in the BuildMI calls. NFCI.

    Try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies.

commit ffc157ea825f75c7b143fdaf23283194c5d829cf
Author: Florian Hahn <flo@fhahn.com>
Date:   Thu May 13 13:22:18 2021 +0100

    [Passes] Use regex to match GlobalsAA line in test.

    On some platforms/compiler combinations, it appears the output is
    slightly different. Update the test to use a regex, as is done at other
    places in the new-pm-*default.ll tests to address buildbot failures.

commit 860b37526ae188d02e2dbf68a006eb26f936b5eb
Author: Florian Hahn <flo@fhahn.com>
Date:   Thu May 13 12:53:05 2021 +0100

    [Passes] Run GlobalsAA before LICM during LTO in new PM.

    This patch adjusts the LTO pipeline in the new PM to run GlobalsAA
    before LICM to match the legacy PM.

    This fixes a regression where the new PM failed to vectorize loops that
    require hoisting/sinking by LICM depending on GlobalsAA info.

    Reviewed By: aeubanks

    Differential Revision: https://reviews.llvm.org/D102345

commit 797e580db9837839ab11711733b5de52249f187c
Author: Fraser Cormack <fraser@codeplay.com>
Date:   Thu May 13 12:35:03 2021 +0100

    [RISCV][NFC] Simplify test run lines

    Several tests had -verify-machineinstrs twice, and several tests were
    explicitly specifying the default FileCheck prefix of CHECK.

commit 3eaf2358556d377ae5a8f2c942d92af1c1521cfc
Author: Florian Hahn <flo@fhahn.com>
Date:   Thu May 13 11:59:41 2021 +0100

    [Passes] Use MemorySSA for LICM during LTO.

    Split off from D102345 to commit this separately from other changes in
    the patch. This aligns the behavior of the new PM with the legacy PM
    for LTO, with respect to running LICM.

    Together with the remaining changes in D102345, this fixes new PM
    regressions where we fail to vectorize loops that are vectorized with
    the legacy PM.

commit 4624412367f9b591fe90ecec8feed7209cd222ac
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Thu May 13 10:31:59 2021 +0000

    [clang-repl] Fix ClangReplInterpreterTests unittest dependency.

commit 0326d4667ab116588e6f987ceed151e709d263c2
Author: David Spickett <david.spickett@linaro.org>
Date:   Thu May 13 11:11:43 2021 +0100

    [Utils] Use whoami to get username for arcanist warning message

    959eec1fddc83c90c208789f20cb6573b2a20642 changed the message
    to show the local username with "$user" but this is not always set.

    Some systems will have USER/USERNAME/LOGNAME, so just use "whoami"
    instead.

commit 39e4676ca798d9aba58823515ac9d48eb64863be
Author: Nemanja Ivanovic <nemanja.i.ibm@gmail.com>
Date:   Wed May 12 12:18:52 2021 -0500

    [PowerPC] Provide doubleword vector predicate form comparisons on Power7

    There are two reasons this shouldn't be restricted to Power8 and up:
    1. For XL compatibility
    2. Because clang will expand comparison operators to these intrinsics*

    *Without this patch, the following causes a selection error:

    int test(vector signed long a, vector signed long b) {
      return a < b;
    }

    This patch provides the handling for the intrinsics in the back
    end and removes the Power8 guards from the predicate functions
    (vec_{all|any}_{eq|ne|gt|ge|lt|le}).

commit e2759f110b6e9a33db449ebdf428480f46db67b8
Author: Florian Hahn <flo@fhahn.com>
Date:   Thu May 13 09:32:41 2021 +0100

    [SCEV] Apply guards to max with non-unitary steps.

    We already apply loop-guards when computing the maximum with unitary
    steps. This extends the code to also do so when dealing with non-unitary
    steps.

    This allows us to infer a tighter maximum in some cases.

    Reviewed By: nikic

    Differential Revision: https://reviews.llvm.org/D102267

commit fd184c062c1a1b4727ddf0452ebab11fb8834880
Author: Bruno Cardoso Lopes <bruno.cardoso@gmail.com>
Date:   Thu May 13 00:35:22 2021 -0700

    [TSAN] Honor failure memory orders in AtomicCAS

    LLVM has lifted strong requirements for CAS failure memory orders in 431e3138a and 819e0d105e84.

    Add support for honoring them in `AtomicCAS`.

    https://github.com/google/sanitizers/issues/970

    Differential Revision: https://reviews.llvm.org/D99434

commit b2186a69c169c7e39c2a769ba859f656aa4cef1b
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Thu May 13 08:06:52 2021 +0000

    [clang-repl] Add final set of missing library dependencies.

commit 8a86787847d92c0b428171d9de748c1cf91b3159
Author: Kristina Bessonova <kbessonova@accesssoftek.com>
Date:   Wed May 12 14:32:43 2021 +0200

    [libcxx] NFC. Fix misprint unodered -> unordered

    Differential Revision: https://reviews.llvm.org/D102354

commit afee09751d2d744a753ef4d3e8d83857dcd0f682
Author: Jason Molenda <jason@molenda.com>
Date:   Thu May 13 00:46:21 2021 -0700

    [NFC] Add GetInferiorAddrSize method, unify code to compute

    MachProcess.mm has a sequence to get the address size in
    the inferior in three places; and I'm about to add a fourth
    in a future patch.  Not a fan.

commit 107d19eb017ff6734986af077eb2e9f6600114a9
Author: Jingu Kang <jingu.kang@arm.com>
Date:   Thu May 13 08:22:26 2021 +0100

    Revert "[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch"

    This reverts commit 88b259c01463c08ac2575b4432c07ea7751946b5.

    It needs to fix below bugs.

    https://bugs.llvm.org/show_bug.cgi?id=50279
    https://bugs.llvm.org/show_bug.cgi?id=50302

commit 12537ab77227db8f2b42e6172b24313d8f442e97
Author: Serge Pavlov <sepavloff@gmail.com>
Date:   Thu May 13 13:44:10 2021 +0700

    [FPEnv][X86] Implement lowering of llvm.set.rounding

    Differential Revision: https://reviews.llvm.org/D74730

commit 6045cb89e5e8223eea4d7f9c3a3e0d8d25ff909f
Author: serge-sans-paille <sguelton@redhat.com>
Date:   Mon May 10 15:56:22 2021 +0200

    Use an allow list on reserved macro identifiers

    The allow list is based on various official sources (see in-code comment).

    This fixes https://bugs.llvm.org/show_bug.cgi?id=50248

    Differential Revision: https://reviews.llvm.org/D102168

commit 3f4c5185926ad2a07a642b8b0b7a4accffeb7e36
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Thu May 13 07:18:01 2021 +0000

    [clang-repl] Add exhaustive list of libInterpreter dependencies.

    This patch should appease the bots building with -DBUILD_SHARED_LIBS=On,
    resolving the regression introduced in 92f9852fc99b.

commit 92f9852fc99b0a18e8d1329341f36f1708343f05
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Thu May 13 05:41:44 2021 +0000

    [clang-repl] Recommit "Land initial infrastructure for incremental parsing"

    Original commit message:

      In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have
      mentioned our plans to make some of the incremental compilation facilities
      available in llvm mainline.

      This patch proposes a minimal version of a repl, clang-repl, which enables
      interpreter-like interaction for C++. For instance:

      ./bin/clang-repl
      clang-repl> int i = 42;
      clang-repl> extern "C" int printf(const char*,...);
      clang-repl> auto r1 = printf("i=%d\n", i);
      i=42
      clang-repl> quit

      The patch allows very limited functionality, for example, it crashes on invalid
      C++. The design of the proposed patch follows closely the design of cling. The
      idea is to gather feedback and gradually evolve both clang-repl and cling to
      what the community agrees upon.

      The IncrementalParser class is responsible for driving the clang parser and
      codegen and allows the compiler infrastructure to process more than one input.
      Every input adds to the “ever-growing” translation unit. That model is enabled
      by an IncrementalAction which prevents teardown when HandleTranslationUnit.

      The IncrementalExecutor class hides some of the underlying implementation
      details of the concrete JIT infrastructure. It exposes the minimal set of
      functionality required by our incremental compiler/interpreter.

      The Transaction class keeps track of the AST and the LLVM IR for each
      incremental input. That tracking information will be later used to implement
      error recovery.

      The Interpreter class orchestrates the IncrementalParser and the
      IncrementalExecutor to model interpreter-like behavior. It provides the public
      API which can be used (in future) when using the interpreter library.

      Differential revision: https://reviews.llvm.org/D96033

commit 60da33c2d4b2cd744c70259088b2ab89eb858f33
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 15:04:40 2021 +0900

    [mlir] Support masks in TransferOpReduceRank and TransferReadPermutationLowering

    These two patterns allow for more efficient codegen in VectorToSCF.

    Differential Revision: https://reviews.llvm.org/D102222

commit 9bf17619750494ee971c66782039d4102d805c07
Author: LLVM GN Syncbot <llvmgnsyncbot@gmail.com>
Date:   Thu May 13 05:32:35 2021 +0000

    [gn build] Port d8b37de8a478

commit d8b37de8a478c1b1532e45b0bfd82ecf1c964d9a
Author: Max Kazantsev <mkazantsev@azul.com>
Date:   Wed May 12 14:36:24 2021 +0700

    [GC][NFC] Move GCStrategy from CodeGen to IR

    We want it to be available in analyzes so that we could use the
    CodeGen notion in middle-end passes (for example, to check if
    a GC may free some particular pointer).

    This is a preparatory patch that simply moves the files around.

    Note: if this causes some build issues, this patch must just be reverted.

    Differential Revision: https://reviews.llvm.org/D100557
    Reviewed By: reames

commit 2f21a272af69321555cdc2794664b5eba8fc3276
Author: Lang Hames <lhames@gmail.com>
Date:   Wed May 12 20:56:07 2021 -0700

    [JITLink] Expose x86-64 pointer jump stub block construction.

    This can be useful for clients who want to define their own symbol for the
    stub, or re-use some existing symbol.

commit 4b0f5edd36c685333985698d1a288d2eb641b910
Author: Lang Hames <lhames@gmail.com>
Date:   Wed May 12 20:48:42 2021 -0700

    [JITLink] Add a transferDefinedSymbol operation.

    The transferDefinedSymbol operation updates a Symbol's target block, offset,
    and size. This can be convenient when you want to redefine the content of some
    symbol(s) pointing at a block, while retaining the original block in the graph.

commit 0c443e92d3b9bc5a25214f2c8418b72501a15a00
Author: Jason Molenda <jason@molenda.com>
Date:   Wed May 12 22:15:55 2021 -0700

    Add some warnings when debugserver is running in translation

    A debugserver launched x86_64 cannot control an arm64/arm64e
    process on an Apple Silicon system.  Warn when this situation
    has happened and return an error for the most common case of
    attach.  I think there will be refinements to this in the
    future, but start out by making it easy to spot the problem
    when it happens.

    rdar://76630595

commit c1359ef07e8240b4350802b4998aedc1239a91d0
Author: Chuanqi Xu <yedeng.yd@linux.alibaba.com>
Date:   Thu May 13 13:05:05 2021 +0800

    [Coroutines] Salvege Debug.values

    Summary: The previous implementation of coro-split didn't collect values
    used by dbg instructions into the spills which made a log debug info
    unavailable with optimization on.
    This patch tries to collect these uses which are used by dbg.values. In
    this way, the debugbility of coroutine could be as powerful as normal
    functions with optimization on.

    To avoid enlarging the coroutine frame, this patch only collects
    `dbg.value` whose value is already in the coroutine frame. This decision
    may make some debug info getting unavailable. But if we are with
    optimization on, the performance issue should be considered first. And
    this patch would make the debugbility of coroutine to be better only
    without changing the layout of the frame.

    Test-plan: check-llvm

    Reviewed By: aprantl, lxfind

    Differential Revision: https://reviews.llvm.org/D97673

commit 3f8aafd7902722cc2039c7ef3d6747f8d49f81a6
Author: Rob Suderman <rob.suderman@gmail.com>
Date:   Wed May 12 21:47:55 2021 -0700

    [mlir][tosa] Fix tosa.cast semantics to perform rounding/clipping

    Rounding to integers requires rounding (for floating points) and clipping
    to the min/max values of the destination range. Added this behavior and
    updated tests appropriately.

    Reviewed By: sjarus, silvas

    Differential Revision: https://reviews.llvm.org/D102375

commit f6907152db3d70606817ffe28274c6a90b331bbc
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Thu May 13 04:43:01 2021 +0000

    Revert "[clang-repl] Land initial infrastructure for incremental parsing"

    This reverts commit 44a4000181e1a25027e87f2ae4e71cb876a7a275.

    We are seeing build failures due to missing dependency to libSupport and
    CMake Error at tools/clang/tools/clang-repl/cmake_install.cmake
    file INSTALL cannot find

commit 6e5b8f489a27901de4b9dfa152da02dbca13ec31
Author: Chuanqi Xu <yedeng.yd@linux.alibaba.com>
Date:   Thu May 13 12:35:37 2021 +0800

    [Coroutines] Enable printing coroutine frame when dbg info is available

    Summary: This patch tries to build debug info for coroutine frame in the
    middle end. Although the coroutine frame is constructed and maintained by
    the compiler and the programmer shouldn't care about the coroutine frame
    by the design of C++20 coroutine,
    a lot of programmers told me that they want to see the layout of the
    coroutine frame strongly. Although C++ is designed as an abstract layer
    so that the programmers shouldn't care about the actual memory in bits,
    many experienced C++ programmers  are familiar with assembler and
    debugger to see the memory layout in fact, After I was been told they
    want to see the coroutine frame about 3 times, I think it is an actual
    and desired demand.

    However, the debug information is constructed in the front end and
    coroutine frame is constructed in the middle end. This is a natural and
    clear gap. So I could only try to construct the debug information in the
    middle end after coroutine frame constructed. It is unusual, but we are
    in consensus that the approch is the best one.

    One hard part is we need construct the name for variables since there
    isn't a map from llvm variables to DIVar. Then here is the strategy this
    patch uses:
    - The name `__resume_fn `, `__destroy_fn` and `__coro_index ` are
      constructed by the patch.
    - Then the name `__promise` comes from the dbg.variable of corresponding
      dbg.declare of PromiseAlloca, which shows highest priority to
    construct the debug information for the member of coroutine frame.
    - Then if the member is struct, we would try to get the name of the llvm
      struct directly. Then replace ':' and '.' with '_' to make it
    printable for debugger.
    - If the member is a basic type like integer or double, we would try to
      emit the corresponding name.
    - Then if the member is a Pointer Type, we would add `Ptr` after
      corresponding pointee type.
    - Otherwise, we would name it with 'UnknownType'.

    Reviewered by: lxfind, aprantl, rjmcall, dblaikie

    Differential Revision: https://reviews.llvm.org/D99179

commit ab2c499d3a2ed3d3e13d96e456c57fb35a114b31
Author: Anton Afanasyev <anton.a.afanasyev@gmail.com>
Date:   Tue Mar 16 10:23:13 2021 +0300

    [SLP] Add insertelement instructions to vectorizable tree

    Add new type of tree node for `InsertElementInst` chain forming vector.
    These instructions could be either removed, or replaced by shuffles during
    vectorization and we can add this node to cost model, so naturally estimating
    their cost, getting rid of `CompensateCost` tricks and reducing further work
    for InstCombine. This fixes PR40522 and PR35732 in a natural way. Also this
    patch is the first step towards revectorization of partially vectorization
    (to fix PR42022 completely). After adding inserts to tree the next step is
    to add vector instructions there (for instance, to merge `store <2 x float>`
    and `store <2 x float>` to `store <4 x float>`).

    Fixes PR40522 and PR35732.

    Differential Revision: https://reviews.llvm.org/D98714

commit cd9090031c83ee857f82c3344b6efd97185c928e
Author: Anton Afanasyev <anton.a.afanasyev@gmail.com>
Date:   Fri Mar 19 11:09:58 2021 +0300

    [SLP][Test] Fix and precommit tests for D98714

commit 00a0595b253f22f5138eb0ceaf892dbe8e670453
Author: Anton Afanasyev <anton.a.afanasyev@gmail.com>
Date:   Fri Mar 19 11:09:58 2021 +0300

    [SLP][Test] Fix and precommit tests for D98714

commit 44a4000181e1a25027e87f2ae4e71cb876a7a275
Author: Vassil Vassilev <v.g.vassilev@gmail.com>
Date:   Wed May 12 20:48:03 2021 +0000

    [clang-repl] Land initial infrastructure for incremental parsing

    In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have
    mentioned our plans to make some of the incremental compilation facilities
    available in llvm mainline.

    This patch proposes a minimal version of a repl, clang-repl, which enables
    interpreter-like interaction for C++. For instance:

    ./bin/clang-repl
    clang-repl> int i = 42;
    clang-repl> extern "C" int printf(const char*,...);
    clang-repl> auto r1 = printf("i=%d\n", i);
    i=42
    clang-repl> quit

    The patch allows very limited functionality, for example, it crashes on invalid
    C++. The design of the proposed patch follows closely the design of cling. The
    idea is to gather feedback and gradually evolve both clang-repl and cling to
    what the community agrees upon.

    The IncrementalParser class is responsible for driving the clang parser and
    codegen and allows the compiler infrastructure to process more than one input.
    Every input adds to the “ever-growing” translation unit. That model is enabled
    by an IncrementalAction which prevents teardown when HandleTranslationUnit.

    The IncrementalExecutor class hides some of the underlying implementation
    details of the concrete JIT infrastructure. It exposes the minimal set of
    functionality required by our incremental compiler/interpreter.

    The Transaction class keeps track of the AST and the LLVM IR for each
    incremental input. That tracking information will be later used to implement
    error recovery.

    The Interpreter class orchestrates the IncrementalParser and the
    IncrementalExecutor to model interpreter-like behavior. It provides the public
    API which can be used (in future) when using the interpreter library.

    Differential revision: https://reviews.llvm.org/D96033

commit 2a51e9ff2e06d5d7096f826014916b4cc02269fc
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 13:12:30 2021 +0900

    [mlir] Support memref layout maps in vector transfer ops

    Differential Revision: https://reviews.llvm.org/D102042

commit 9b77be5583d2da03f2ccd7319d33a2daedf8b1b3
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 12:57:45 2021 +0900

    [mlir] Unrolled progressive-vector-to-scf.

    Instead of an SCF for loop, these pattern generate fully unrolled loops with no temporary buffer allocations.

    Differential Revision: https://reviews.llvm.org/D101981

commit 864adf399e58a6bfd823136fc2cbcfe9dff5b4a8
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 12:53:15 2021 +0900

    [mlir] Allow empty position in vector.insert and vector.extract

    Such ops are no-ops and are folded to their respective `source`/`vector` operand.

    Differential Revision: https://reviews.llvm.org/D101879

commit c52cbe63e42fff8c1a95921effd35d7bb59301d3
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 11:57:10 2021 +0900

    [mlir] Fix masked vector transfer ops with broadcasts

    Broadcast dimensions of a vector transfer op have no corresponding dimension in the mask vector. E.g., a 2-D TransferReadOp, where one dimension is a broadcast, can have a 1-D `mask` attribute.

    This commit also adds a few additional transfer op integration tests for various combinations of broadcasts, masking, dim transposes, etc.

    Differential Revision: https://reviews.llvm.org/D101745

commit a0ca4c46ca35957a38a6023fa84afda2fc9ba0ec
Author: Chen Zheng <czhengsz@cn.ibm.com>
Date:   Sun May 9 22:04:02 2021 -0400

    [Debug-Info] add -gstrict-dwarf support in backend

    Reviewed By: dblaikie, probinson

    Differential Revision: https://reviews.llvm.org/D100826

commit 6555e53ab0f2bca3dc30f5ab3a2d6872d50b6ff8
Author: Matthias Springer <springerm@google.com>
Date:   Thu May 13 11:55:00 2021 +0900

    Revert "[mlir] Fix masked vector transfer ops with broadcasts"

    This reverts commit c9087788f7e41285445729127dd07ff7f82e3fc0.

    Accidentally pushed old version of the commit.

commit c9087788f7e41285445729127dd07ff7f82e3fc0
Author: Matthias Springer <springerm@google.com>
Date:   Mon May 3 18:03:19 2021 +0900

    [mlir] Fix masked vector transfer ops with broadcasts

    Broadcast dimensions of a vector transfer op have no corresponding dimension in the mask vector. E.g., a 2-D TransferReadOp, where one dimension is a broadcast, can have a 1-D `mask` attribute.

    This commit also adds a few additional transfer op integration tests for various combinations of broadcasts, masking, dim transposes, etc.

    Differential Revision: https://reviews.llvm.org/D101745

commit ce6cc87ce9e96eaa5e5ef0c1f5dc07b41381996d
Author: Yaxun (Sam) Liu <yaxun.liu@amd.com>
Date:   Wed May 12 18:29:40 2021 -0400

    [clang] Minor fix for MarkVarDeclODRUsed

    Merge two if as follow up of https://reviews.llvm.org/D102270

commit 017d7a9e14245e549999c5e3b8bd7398fcf79410
Author: Adrian Prantl <aprantl@apple.com>
Date:   Wed May 12 18:43:34 2021 -0700

    Rename human-readable name for DW_LANG_Mips_Assembler

    The Mips in DW_LANG_Mips_Assembler is a vendor name not an
    architecture name and in lack of a proper generic DW_LANG_assembler,
    some assemblers emit DWARF using this tag. Due to a warning I recently
    introduced users will now be greeted with

      This version of LLDB has no plugin for the mipsassem language. Inspection of frame variables will be limited.

    By renaming this to just "Assembler" this error message will make more sense.

    Differential Revision: https://reviews.llvm.org/D101406

    rdar://77214764

commit e1aa528d3aaf5fcf9c50d1e34b39dbde1e63801d
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed May 12 18:29:26 2021 -0700

    Handle unexpanded packs appearing in type-constraints.

    For a type-constraint in a lambda signature, this makes the lambda
    contain an unexpanded pack; for requirements in a requires-expressions
    it makes the requires-expression contain an unexpanded pack; otherwise
    it's invalid.

commit 2f9d8b08ea658b612065cbf7d4b0fbd7f28bb36a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed May 12 15:25:52 2021 -0700

    PR50306: When instantiating a generic lambda with a constrained 'auto',
    properly track that it has constraints.

    Previously an instantiation of a constrained generic lambda would behave
    as if unconstrained because we incorrectly cached a "has no constraints"
    value that we computed before the constraints from 'auto' parameters
    were attached.

commit e0acfed7ed5173b437868f75fc394084487e390a
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed May 12 14:19:23 2021 -0700

    Clean up handling of constrained parameters in lambdas.

    No functionality change intended.

commit 4c88cfb1dc79227be78f8dade966934384914e5e
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed May 12 13:25:52 2021 -0700

    Add test for substitutability of variable templates in closure type
    mangling.

commit 10c779d2065f7e216660f1687244269afcee13b1
Author: Pushpinder Singh <Pushpinder.Singh@amd.com>
Date:   Wed May 12 11:14:36 2021 +0000

    [AMDGPU][OpenMP] Emit textual IR for -emit-llvm -S

    Previously clang would print a binary blob into the bundled file
    for amdgcn. With this patch, it will instead print textual IR as
    expected.

    Reviewed By: JonChesterfield, ronlieb

    Differential Revision: https://reviews.llvm.org/D102065

    Change-Id: I10c0127ab7357787769fdf9a2edd4b3071e790a1

commit 6732a5328cf03872d53827d3e0e283fcf16b551a
Author: Peter Collingbourne <peter@pcc.me.uk>
Date:   Wed May 12 15:29:41 2021 -0700

    scudo: Require fault address to be in bounds for UAF.

    The bounds check that we previously had here was suitable for secondary
    allocations but not for UAF on primary allocations, where it is likely
    to result in false positives. Fix it by using a different bounds check
    for UAF that requires the fault address to be in bounds.

    Differential Revision: https://reviews.llvm.org/D102376

commit 46c17429bc86dc5ccddb5512b77bd1ede39c9ccd
Author: Christopher Di Bella <cjdb@google.com>
Date:   Sun May 2 02:21:28 2021 +0000

    [libcxx] modifies `_CmpUnspecifiedParam` ignore types outside its domain

    D85051's honeypot solution was a bit too aggressive swallowed up the
    comparison types, which made comparing objects of different ordering
    types ambiguous.

    Depends on D101707.

    Differential Revision: https://reviews.llvm.org/D101708

commit 58d12332a4730226d0a640136f06f3bd0861f1a5
Author: Aart Bik <ajcbik@google.com>
Date:   Wed May 12 14:51:16 2021 -0700

    [mlir][sparse][capi][python] add sparse tensor passes

    First set of "boilerplate" to get sparse tensor
    passes available through CAPI and Python.

    Reviewed By: stellaraccident

    Differential Revision: https://reviews.llvm.org/D102362

commit bd00106d1e77e4de769ce0d143c97a076f25c92b
Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>
Date:   Wed May 12 14:18:16 2021 -0700

    [AMDGPU] Refactor shouldExpandAtomicRMWInIR(). NFC.

    This is logic simplification for better readability.

    Differential Revision: https://reviews.llvm.org/D102371

commit b7911e80d6926f9280ceb23d4e86e25c29370904
Author: MaheshRavishankar <ravishankarm@google.com>
Date:   Wed May 12 16:06:02 2021 -0700

    [mlir][Linalg] Add interface methods to get lhs and rhs of contraction

    Differential Revision: https://reviews.llvm.org/D102301

commit e7d26aceca071d67168062b2f7784c56234b0cb3
Author: Justin Bogner <mail@justinbogner.com>
Date:   Wed May 12 15:29:29 2021 -0700

    Change the context instruction for computeKnownBits in LoadStoreVectorizer pass

    This change enables cases for which the index value for the first
    load/store instruction in a pair could be a function argument. This
    allows using llvm.assume to provide known bits information in such
    cases.

    Patch by Viacheslav Nikolaev. Thanks!

    Differential Revision: https://reviews.llvm.org/D101680

commit e5bdacba2e185034979fddd8bff2695bfcdd3056
Author: Greg Clayton <gclayton@fb.com>
Date:   Wed May 12 13:20:31 2021 -0700

    Optimize GSymCreator::finalize.

    The algorithm removing duplicates from the Funcs list used to have
    amortized quadratic time complexity because it was potentially
    removing each entry using std::vector::erase individually. This
    patch is now using a erase-remove idiom with an adapted
    removeIfBinary algorithm.

    Probably this was made under the assumption that these removals are
    rare, but there are cases where the case of duplicate entries is
    occurring frequently. In these cases, the actual runtime was very
    poor, taking hours to process a single binary of around 1 GiB size
    including debug info. Another factor contributing to that is the
    frequent output of the warning, which is now removed.

    It seems this is particularly an issue with GCC-compiled binaries,
    rather than clang-built binaries.

    Reviewed By: clayborg

    Differential Revision: https://reviews.llvm.org/D102219

commit fb3a00c327df78eaa534e53ac6f07112e0585121
Author: Eugene Zhulenev <ezhulenev@google.com>
Date:   Wed May 12 14:30:09 2021 -0700

    [mlir] Fix ssa values naming bug

    Address comments in https://reviews.llvm.org/D102226 to fix the bug + style violations

    Differential Revision: https://reviews.llvm.org/D102368

commit cd01430ff13b5441bc71e6dc3c4e688052f7be82
Author: Sam Clegg <sbc@chromium.org>
Date:   Tue May 11 15:16:00 2021 -0700

    [lld][WebAssembly] Allow data symbols to extend past end of segment

    This fixes a bug with string merging with string symbols that contain
    NULLs, as is the case in the `merge-string.s` test.

    The bug only showed when we run with `--relocatable` and then try read
    the resulting object back in.  In this case we would end up with string
    symbols that extend past the end of the segment in which they live.

    The problem comes from the fact that sections which are flagged as
    string mergable assume that all strings are NULL terminated.  The
    merging algorithm will drop trailing chars that follow a NULL since they
    are essentially unreachable.  However, the "size" attribute (in the
    symbol table) of such a truncated symbol is not updated resulting a
    symbol size that can overlap the end of the segment.

    I verified that this can happen in ELF too given the right conditions
    and the its harmless enough.  In practice Strings that contain embedded
    null should not be part of a mergable section.

    Differential Revision: https://reviews.llvm.org/D102281

commit 3041b16f7322a0392810e4a14b13cacac1929ad8
Author: Sam Clegg <sbc@chromium.org>
Date:   Mon May 10 14:58:47 2021 -0700

    [WebAssembly] Add TLS data segment flag: WASM_SEG_FLAG_TLS

    Previously the linker was relying solely on the name of the segment
    to imply TLS.

    Differential Revision: https://reviews.llvm.org/D102202

commit ba38b72ec2833bf8c54829a0fd7a8c968e6260d4
Author: Heejin Ahn <aheejin@gmail.com>
Date:   Wed May 12 13:19:30 2021 -0700

    [WebAssembly] Allow Wasm EH with Emscripten SjLj

    We explicitly made it error out in D101403, out of a good intention that
    the error message will make people less confusing. Turns out, we weren't
    failing all cases of wasm EH + SjLj; only a few cases were failing and
    our client was able to get around by fixing source code, but now we made
    it fail for all cases, even the cases that previously succeeded fail,
    which we didn't intend. This reverts that change.

    Reviewed By: tlively

    Differential Revision: https://reviews.llvm.org/D102364

commit 9c345407b4999e62e51667927f531b891363569b
Author: Craig Topper <craig.topper@sifive.com>
Date:   Wed May 12 12:38:06 2021 -0700

    [RISCV] Remove RISCVII:VSEW enum. Make encodeVYPE operate directly on SEW.

    The VSEW encoding isn't a useful value to pass around. It's better
    to use SEW or log2(SEW) directly. The only real ugliness is that
    the vsetvli IR intrinsics use the VSEW encoding, but it's easy
    enough to decode that when the intrinsic is processed.

commit 5bb7e81c64bd29edd1c9ebadd4e4717919def0bf
Author: Richard Smith <richard@metafoo.co.uk>
Date:   Wed May 5 18:56:58 2021 -0700

    Fix bad mangling of <data-member-prefix> for a closure in the initializer of a variable at global namespace scope.

    This implements the direction proposed in
    https://github.com/itanium-cxx-abi/cxx-abi/pull/126.

    Differential Revision: https://reviews.llvm.org/D101968

commit 29ac15ab380b6d9853d4cdc9c220107e90375cb9
Author: River Riddle <riddleriver@gmail.com>
Date:   Wed May 12 13:02:09 2021 -0700

    [mlir-lsp-server][NFC] Add newline between Protocol JSON serialization methods and class definitions.

commit b3911cdfc89f3b560fc00048d6f99280268fa63c
Author: River Riddle <riddleriver@gmail.com>
Date:   Wed May 12 13:01:59 2021 -0700

    [mlir-lsp-server] Add support for sending diagnostics to the client

    This allows for diagnostics emitted during parsing/verification to be surfaced to the user by the language client, as opposed to just being emitted to the logs like they are now.

    Differential Revision: https://reviews.llvm.org/D102293

commit 30b7dfafdb620420ad3498aae01130bc7e2fb9cd
Author: Shoaib Meenai <smeenai@fb.com>
Date:   Wed May 12 12:59:23 2021 -0700

    [flang] Fix standalone builds

    Flang's CMake modules directory was being added to the CMake module path
    twice, and AddFlang was being included after the first addition. Remove
    the unnecessary first addition and move the AddFlang include down to the
    second one. This way, it occurs after LLVM's CMake modules have been
    included for a standalone build, so it can make use of those modules.

commit 08ba9ce1ef7214623d4104e72d817c73644a0884
Author: Erich Keane <erich.keane@intel.com>
Date:   Tue May 11 06:40:48 2021 -0700

    Suppress Deferred Diagnostics in discarded statements.

    It doesn't really make sense to emit language specific diagnostics
    in a discarded statement, and suppressing these diagnostics results in a
    programming pattern that many users will feel is quite useful.

    Basically, this makes sure we only emit errors from the 'true' side of a
    'constexpr if'.

    It does this by making the ExprEvaluatorBase type have an opt-in option
    as to whether it should visit discarded cases.

    Differential Revision: https://reviews.llvm.org/D102251

commit 4b014352308f7244b86438fff7c61c632934a1ff
Author: Suraj Sudhir <Suraj.Sudhir@arm.com>
Date:   Wed May 12 12:39:25 2021 -0700

    [mlir][tosa] Remove tosa.identityn operator

    Removes the identityn operator from TOSA MLIR definition.
    Removes TosaToLinAlg mappings

    Reviewed By: rsuderman

    Differential Revision: https://reviews.llvm.org/D102329

commit a8053399cde847dfce88d7d1fa2a2099f3a58c40
Author: Fangrui Song <i@maskray.me>
Date:   Wed May 12 12:38:27 2021 -0700

    [ELF][AVR] Add explicit relocation types to getRelExpr

commit 7e0768329ca347e37c7bdb0da16b51cb3e7b7d8b
Author: Martin Storsjö <martin@martin.st>
Date:   Sun May 9 23:27:35 2021 +0300

    [LLD] [COFF] Fix including the personality function for DWARF EH when linking with --gc-sections

    Since c579a5b1d92a9bc2046d00ee2d427832e0f5ddec we don't traverse
    .eh_frame when doing GC. But the exception handling personality
    function needs to be included, and is only referenced from within
    .eh_frame.

    Differential Revision: https://reviews.llvm.org/D102138

commit 6bd3d8a17cef9108a338ada9b3dbed201bf9c158
Author: Martin Storsjö <martin@martin.st>
Date:   Mon May 3 00:13:51 2021 +0300

    [libcxx] [test] Fix fs.op.last_write_time for Windows

    Don't use stat and lstat on Windows; lstat is missing, stat only provides
    the modification times with second granularity (and does the wrong thing
    regarding symlinks). Instead do a minimal reimplementation using the
    native windows APIs.

    Differential Revision: https://reviews.llvm.org/D101731

commit 77997f28d5954fa2417806586f2c5c9d1a0ffeef
Author: Shoaib Meenai <smeenai@fb.com>
Date:   Wed May 12 12:14:20 2021 -0700

    [cmake] Fix typo in function name

    Not sure how my local testing didn't trigger this path. Should fix
    https://lab.llvm.org/buildbot/#/builders/132/builds/5494

commit c273f5ef7d3f5ac05f67ec899e25830cd9543e56
Author: Mark de Wever <koraq@xs4all.nl>
Date:   Wed May 12 17:46:24 2021 +0200

    [libc++][nfc] remove duplicated __to_unsigned.

    Both `<type_traits>` and `<charconv>` implemented this function with
    different names and a slightly different behavior. This removes the
    version in `<charconv>` and improves the version in `<typetraits>`.

    - The code can be used again in C++11.
    -  The original claimed C++14 support, but `[[nodiscard]]` is not
       available in  C++14.
    - Adds `_LIBCPP_INLINE_VISIBILITY`.

    Reviewed By: zoecarver, #libc, Quuxplusone

    Differential Revision: https://reviews.llvm.org/D102332

commit a8f7dee1dffbf8c18acbcc7b1f6d659bf808798e
Author: Nikita Popov <nikita.ppv@gmail.com>
Date:   Tue May 11 23:01:29 2021 +0200

    [InstCombine] Support one-hot merge for logical and/or

    If a logical and/or is used, we need to be careful not to propagate
    a potential poison value from the RHS by inserting a freeze
    instruction. Otherwise it works the same way as bitwise and/or.

    This is intended to address the regression reported at
    https://reviews.llvm.org/D101191#2751002.

    Differential Revision: https://reviews.llvm.org/D102279

commit 99d63ccff04b672694f8a2b3eed024b873dc163d
Author: Pratyush Das <reikdas@gmail.com>
Date:   Wed May 12 17:28:41 2021 +0000

    Add type information to integral template argument if required.

    Non-comprehensive li…
@cor3ntin cor3ntin added plenary-approved Papers approved for inclusion in their target vehicle by plenary vote. tentatively-ready-for-plenary Reviewed between meetings; ready for a vote. and removed tentatively-ready-for-plenary Reviewed between meetings; ready for a vote. labels Jun 7, 2021
@wg21bot
Copy link
Collaborator Author

wg21bot commented Oct 26, 2021

Adopted 2021-06.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e C++23 Targeted at C++23 IS Ship vehicle: IS LWG Library plenary-approved Papers approved for inclusion in their target vehicle by plenary vote.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants