-
Notifications
You must be signed in to change notification settings - Fork 96
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
ABI updates for C++20 lambda-expression features: #85
Open
zygoloid
wants to merge
6
commits into
itanium-cxx-abi:main
Choose a base branch
from
zygoloid:template-param-depth-and-lambda-sig
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
ABI updates for C++20 lambda-expression features: #85
zygoloid
wants to merge
6
commits into
itanium-cxx-abi:main
from
zygoloid:template-param-depth-and-lambda-sig
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* include declarations for explicitly-specified template parameters in the lambda-sig mangling * add mangling for template parameters at different depths (possible via generic lambdas in unevaluated operands and via template template parameters in lambda-sigs) Fixes itanium-cxx-abi#31.
zygoloid
force-pushed
the
template-param-depth-and-lambda-sig
branch
from
September 6, 2019 00:06
84616bc
to
3ebf3e6
Compare
llvm-git-migration
pushed a commit
to llvm/llvm-project
that referenced
this pull request
Sep 6, 2019
This implements demangling support for the mangling extensions specified in itanium-cxx-abi/cxx-abi#85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). llvm-svn: 371273
dtzWill
pushed a commit
to llvm-mirror/libcxxabi
that referenced
this pull request
Sep 6, 2019
This implements demangling support for the mangling extensions specified in itanium-cxx-abi/cxx-abi#85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@371273 91177308-0d34-0410-b5e6-96231b3b80d8
unevaluated operands and therefore in function signatures).
zygoloid
force-pushed
the
template-param-depth-and-lambda-sig
branch
2 times, most recently
from
September 9, 2019 21:31
9aba465
to
1a6ce4e
Compare
arguments and default member initializers.
zygoloid
force-pushed
the
template-param-depth-and-lambda-sig
branch
from
September 9, 2019 22:13
1a6ce4e
to
9618b59
Compare
jrtc27
pushed a commit
to CTSRD-CHERI/llvm-project
that referenced
this pull request
Oct 5, 2019
This implements demangling support for the mangling extensions specified in itanium-cxx-abi/cxx-abi#85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). llvm-svn: 371273
phanikishoreg
pushed a commit
to gwsystems/wasmception-libcxxabi
that referenced
this pull request
Apr 1, 2020
This implements demangling support for the mangling extensions specified in itanium-cxx-abi/cxx-abi#85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). git-svn-id: http://llvm.org/svn/llvm-project/libcxxabi/trunk@371273 91177308-0d34-0410-b5e6-96231b3b80d8
This was referenced Apr 14, 2020
ianlancetaylor
added a commit
to ianlancetaylor/demangle
that referenced
this pull request
Mar 31, 2021
conr2d
pushed a commit
to haderech/libcxxabi
that referenced
this pull request
Aug 27, 2021
This implements demangling support for the mangling extensions specified in itanium-cxx-abi/cxx-abi#85, much of which is implemented in Clang r359967 and r371004. Specifically, this provides demangling for: * <template-param-decl> in <lambda-sig> * <template-param> with non-zero level * lambda-expression literals (not emitted by Clang yet) * nullptr literals * string literals (The final two seem unrelated, but handling them was necessary in order to disambiguate between lambda expressions and the other forms of literal for which we have a type but no value.) When demangling a <lambda-sig>, we form template parameters with no corresponding argument, so we cannot substitute in the argument in the demangling. Instead we invent synthetic names for the template parameters (eg, '[]<typename $T>($T *x)'). llvm-svn: 371273
Jelisacooper4
approved these changes
Dec 22, 2021
rjmccall
added a commit
to rjmccall/cxx-abi
that referenced
this pull request
May 15, 2023
This includes the material from itanium-cxx-abi#47 (non-type template arguments), itanium-cxx-abi#63 (class constants), and the template-param-decl portions of itanium-cxx-abi#85 (C++20 lambda-expressions). @zygoloid gets credit for most of this, although I've made a few substantive changes from his suggestions.
zygoloid
commented
Jun 28, 2023
…aring in its initializer.
This was referenced Jun 28, 2023
zygoloid
commented
Jun 28, 2023
…ears in the signature of a function template.
rjmccall
added a commit
to rjmccall/cxx-abi
that referenced
this pull request
Nov 2, 2023
This includes the material from itanium-cxx-abi#47 (non-type template arguments), itanium-cxx-abi#63 (class constants), and the template-param-decl portions of itanium-cxx-abi#85 (C++20 lambda-expressions). @zygoloid gets credit for most of this, although I've made a few substantive changes from his suggestions.
Is it possible to merge this pull request? LLVM already implements the mangling grammar documented here. |
copybara-service bot
pushed a commit
to abseil/abseil-cpp
that referenced
this pull request
Feb 16, 2024
…ubstitutions These were described in itanium-cxx-abi/cxx-abi#85 and implemented by LLVM. PiperOrigin-RevId: 607555558 Change-Id: I9991ac88c1fcf63b25b93d93977a83ca343cdb5d
Ping. |
netkex
pushed a commit
to netkex/abseil-cpp
that referenced
this pull request
Apr 3, 2024
…ubstitutions These were described in itanium-cxx-abi/cxx-abi#85 and implemented by LLVM. PiperOrigin-RevId: 607555558 Change-Id: I9991ac88c1fcf63b25b93d93977a83ca343cdb5d
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
include declarations for explicitly-specified template parameters in
the lambda-sig mangling
add mangling for template parameters at different depths (possible
via generic lambdas in unevaluated operands and via template template
parameters in lambda-sigs)
Fixes #31, #157, #165.