|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3 |
|
| #
aabeb5eb |
| 26-Apr-2022 |
Kirill Stoimenov <[email protected]> |
Revert "[demangler] Simplify OutputBuffer initialization"
Reverting due to a bot failure: https://lab.llvm.org/buildbot/#/builders/5/builds/22738
This reverts commit 5b3ca24a35e91bf9c19af856e7f92c6
Revert "[demangler] Simplify OutputBuffer initialization"
Reverting due to a bot failure: https://lab.llvm.org/buildbot/#/builders/5/builds/22738
This reverts commit 5b3ca24a35e91bf9c19af856e7f92c69b17f989e.
show more ...
|
|
Revision tags: llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2 |
|
| #
5b3ca24a |
| 28-Feb-2022 |
Nathan Sidwell <[email protected]> |
[demangler] Simplify OutputBuffer initialization
Every non-testcase use of OutputBuffer contains code to allocate an initial buffer (using either 128 or 1024 as initial guesses). There's now no need
[demangler] Simplify OutputBuffer initialization
Every non-testcase use of OutputBuffer contains code to allocate an initial buffer (using either 128 or 1024 as initial guesses). There's now no need to do that, given recent changes to the buffer extension heuristics -- it allocates a 1k(ish) buffer on first need.
Just pass in a buffer (if any) to the constructor. Thus the OutputBuffer's ownership of the buffer starts at its own lifetime start. We can reduce the lifetime of this object in several cases.
That new constructor takes a 'size_t *' for the size argument, as all uses with a non-null buffer are passing through a malloc'd buffer from their own caller in this manner.
The buffer reset member function is never used, and is deleted.
The original buffer initialization code would return a failure code if that first malloc failed. Existing code either ignored that, called std::terminate with a FIXME, or returned an error code.
But that's not foolproof anyway, as a subsequent buffer extension failure ends up calling std::terminate. I am working on addressing that unfortunate failure mode in a manner more consistent with the C++ ABI design.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D122604
show more ...
|
| #
201c4b9c |
| 08-Apr-2022 |
Nathan Sidwell <[email protected]> |
[demangler] Rust demangler buffer return
The rust demangler has some odd buffer handling code, which will copy the demangled string into the provided buffer, if it will fit. Otherwise it uses the al
[demangler] Rust demangler buffer return
The rust demangler has some odd buffer handling code, which will copy the demangled string into the provided buffer, if it will fit. Otherwise it uses the allocated buffer it made. But the length of the incoming buffer will have come from a previous call, which was the length of the demangled string -- not the buffer size. And of course, we're unconditionally allocating a temporary buffer in the first place. So we don't actually get buffer reuse, and we get a memcpy in somecases.
However, nothing in LLVM ever passes in a non-null pointer. Neither does anything pass in a status pointer that is then made use of. The only exercise these have is in the test suite.
So let's just make the rust demangler have the same API as the dlang demangler.
Reviewed By: tmiasko
Differential Revision: https://reviews.llvm.org/D123420
show more ...
|
| #
51f6caf2 |
| 28-Feb-2022 |
Nathan Sidwell <[email protected]> |
[demangler][NFC] Rename SwapAndRestore to ScopedOverride
The demangler has a utility class 'SwapAndRestore'. That name is confusing. It's not swapping anything, and the restore part happens at the o
[demangler][NFC] Rename SwapAndRestore to ScopedOverride
The demangler has a utility class 'SwapAndRestore'. That name is confusing. It's not swapping anything, and the restore part happens at the object's destruction. What it's actually doing is allowing a override of some value that is dynamically accessible within the lifetime of a lexical scope. Thus rename it to ScopedOverride, and tweak it's member variable names.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D122606
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
2e97236a |
| 22-Oct-2021 |
Luís Ferreira <[email protected]> |
[Demangle] Rename OutputStream to OutputString
This patch is a refactor to implement prepend afterwards. Since this changes a lot of files and to conform with guidelines, I will separate this from t
[Demangle] Rename OutputStream to OutputString
This patch is a refactor to implement prepend afterwards. Since this changes a lot of files and to conform with guidelines, I will separate this from the implementation of prepend. Related to the discussion in https://reviews.llvm.org/D111414 , so please read it for more context.
Reviewed By: #libc_abi, dblaikie, ldionne
Differential Revision: https://reviews.llvm.org/D111947
show more ...
|
| #
c8c2b462 |
| 01-Oct-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse non-ASCII identifiers
Rust allows use of non-ASCII identifiers, which in Rust mangling scheme are encoded using Punycode.
The encoding deviates from the standard by using an
[Demangle][Rust] Parse non-ASCII identifiers
Rust allows use of non-ASCII identifiers, which in Rust mangling scheme are encoded using Punycode.
The encoding deviates from the standard by using an underscore as the separator between ASCII part and a base-36 encoding of non-ASCII characters (avoiding hypen-minus in the symbol name). Other than that, the encoding follows the standard, and the decoder implemented here in turn follows the one given in RFC 3492.
To avoid an extra intermediate memory allocation while decoding Punycode, the interface of OutputStream is extended with an insert method.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D104366
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3 |
|
| #
6cc6ada1 |
| 23-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Hide implementation details NFC
Move content of the "public" header into the implementation file.
This also renames two enumerations that were previously used through `rust_demangl
[Demangle][Rust] Hide implementation details NFC
Move content of the "public" header into the implementation file.
This also renames two enumerations that were previously used through `rust_demangle::` scope, to avoid breaking a build bot with older version of GCC that rejects uses of enumerator through `E::A` if there is a variable with the same name as enumeration `E` in the scope.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D104362
show more ...
|
| #
2a5bb9c8 |
| 18-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse dot suffix
Allow mangled names to include an arbitrary dot suffix, akin to vendor specific suffix in Itanium mangling.
Primary motivation is a support for symbols renamed dur
[Demangle][Rust] Parse dot suffix
Allow mangled names to include an arbitrary dot suffix, akin to vendor specific suffix in Itanium mangling.
Primary motivation is a support for symbols renamed during ThinLTO import / promotion (ThinLTO is the default configuration for optimized builds in rustc).
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D104358
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc2 |
|
| #
f9a79356 |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse const backreferences
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103848
|
| #
44d63c57 |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse type backreferences
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103847
|
| #
82b7e822 |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse path backreferences
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103459
|
| #
43929ccc |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse instantiating crate
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103460
|
| #
619a65e5 |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse dyn-trait-assoc-binding
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103364
|
| #
1499afa0 |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse dyn-trait
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103361
|
| #
89615a5e |
| 07-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse dyn-bounds
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D103151
|
| #
a67a234e |
| 02-Jun-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse binders
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102729
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
75cc1cf0 |
| 22-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse function signatures
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102581
|
| #
e4fa6c95 |
| 22-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse references
Reviewed By: dblaikie
Part of https://reviews.llvm.org/D102580
|
| #
6aac5633 |
| 22-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse raw pointers
Reviewed By: dblaikie
Part of https://reviews.llvm.org/D102580
|
| #
57f40886 |
| 19-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Speculative fix for bot build failure
> error: ‘InType’ is not a class, namespace, or enumeration
|
| #
774de7a0 |
| 18-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse tuples
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102579
|
| #
a84c65c2 |
| 18-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse slice type
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102578
|
| #
b42400cc |
| 18-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse array type
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102573
|
| #
06833297 |
| 18-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse named types
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102571
|
| #
f933f7fb |
| 15-May-2021 |
Tomasz Miąsko <[email protected]> |
[Demangle][Rust] Parse trait definitions
Part of https://reviews.llvm.org/D102549
|