Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4 |
|
#
fa0cf3d3 |
| 13-Nov-2024 |
Daniel Paoliello <danpao@microsoft.com> |
[llvm][aarch64] Fix Arm64EC name mangling algorithm (#115567)
Arm64EC uses a special name mangling mode that adds `$$h` between the
symbol name and its type. In MSVC's name mangling `@` is used to
[llvm][aarch64] Fix Arm64EC name mangling algorithm (#115567)
Arm64EC uses a special name mangling mode that adds `$$h` between the
symbol name and its type. In MSVC's name mangling `@` is used to
separate the name and type BUT it is also used for other purposes, such
as the separator between paths in a fully qualified name.
The original algorithm was quite fragile and made assumptions that
didn't hold true for all MSVC mangled symbols, so instead of trying to
improve this algorithm we are now using the demangler to indicate where
the insertion point should be (i.e., to parse the fully-qualified name
and return the current string offset).
Also fixed `isArm64ECMangledFunctionName` to search for `@$$h` since the
`$$h` must always be after a `@`.
Fixes #115231
show more ...
|
Revision tags: llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1 |
|
#
8280651a |
| 18-Sep-2024 |
Max Winkler <max.enrico.winkler@gmail.com> |
[llvm] [Demangle] Fix MSVC demangling for placeholder return types (#106178)
Properly demangle `_T` and `_P` return type manglings for MSVC 1920+.
Also added a unit test for `@` return type that is
[llvm] [Demangle] Fix MSVC demangling for placeholder return types (#106178)
Properly demangle `_T` and `_P` return type manglings for MSVC 1920+.
Also added a unit test for `@` return type that is used when mangling
non-template auto placeholder return type function.
Tested the output against the undname shipped with MSVC 19.40.
show more ...
|
Revision tags: 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 |
|
#
d1dc4169 |
| 04-Jul-2024 |
Max Winkler <max.enrico.winkler@gmail.com> |
Fix MSVC 1920+ auto NTTP mangling for pointers to members (#97007)
Fixes https://github.com/llvm/llvm-project/issues/70899.
This is a continuation of
https://github.com/llvm/llvm-project/pull/92
Fix MSVC 1920+ auto NTTP mangling for pointers to members (#97007)
Fixes https://github.com/llvm/llvm-project/issues/70899.
This is a continuation of
https://github.com/llvm/llvm-project/pull/92477 for pointers to member
data and pointers to member functions.
The mangled name must be prefixed with `$M <mangled-type>` for the
deduced type of the nttp parameter.
show more ...
|
#
ef067cf4 |
| 27-Jun-2024 |
Max Winkler <max.enrico.winkler@gmail.com> |
Fix MSVC Demangling with auto NTTP mangled names for function pointer, pointer to data and integral types (#96590)
As cited here, https://github.com/llvm/llvm-project/pull/92477, undname
needs upda
Fix MSVC Demangling with auto NTTP mangled names for function pointer, pointer to data and integral types (#96590)
As cited here, https://github.com/llvm/llvm-project/pull/92477, undname
needs updating to support the new auto NTTP name mangling.
In short the deduced type of the auto NTTP parameter is mangled as `$M
<type> <nttp-param>`. However the deduced type is not printed for the
undecorated name so the `$M <type>` is parsed but simply ignored when
stringifying the generated AST.
show more ...
|
Revision tags: 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 |
|
#
8bb9414f |
| 13-Jul-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] use std::string_view::data rather than &*std::string_view::begin
To fix expensive check builds that were failing when using MSVC's std::string_view::iterator::operator*, I added a few exp
[Demangle] use std::string_view::data rather than &*std::string_view::begin
To fix expensive check builds that were failing when using MSVC's std::string_view::iterator::operator*, I added a few expressions like &*std::string_view::begin. @nico pointed out that this is literally the same thing and more clearly expressed as std::string_view::data.
Link: https://github.com/llvm/llvm-project/issues/63740
Reviewed By: #libc_abi, ldionne, philnik, MaskRay
Differential Revision: https://reviews.llvm.org/D154876
show more ...
|
#
6641d2b7 |
| 11-Jul-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[MicrosoftDemangle] fix warn-trailing false positive
A follow up to commit 6bad76c7ae93 ("[Demangle] fix windows tests") based on @thakis' report.
Fixes: #63740
Reviewed By: thakis
Differential R
[MicrosoftDemangle] fix warn-trailing false positive
A follow up to commit 6bad76c7ae93 ("[Demangle] fix windows tests") based on @thakis' report.
Fixes: #63740
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D154875
show more ...
|
Revision tags: llvmorg-16.0.6 |
|
#
db98ac08 |
| 05-Jun-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] convert microsoftDemangle to take a std::string_view
This should be last of the "bottom-up conversions" of various demanglers to accept std::string_view. After this, D149104 may be revis
[Demangle] convert microsoftDemangle to take a std::string_view
This should be last of the "bottom-up conversions" of various demanglers to accept std::string_view. After this, D149104 may be revisited.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D152176
show more ...
|
Revision tags: llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3 |
|
#
c2709fcb |
| 21-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] remove unused params of microsoftDemangle
No call sites use these parameters, so drop them.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148940
|
#
6bad76c7 |
| 20-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] fix windows tests
My reland of https://reviews.llvm.org/D148546 has caused a few windows demangler tests to fail when run with -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON on windows.
I have a snea
[Demangle] fix windows tests
My reland of https://reviews.llvm.org/D148546 has caused a few windows demangler tests to fail when run with -DLLVM_ENABLE_EXPENSIVE_CHECKS=ON on windows.
I have a sneaking suspicion that MSVC's std::string_view::iterator::operator* may be missing a nullptr check.
Link: https://lab.llvm.org/buildbot/#/builders/42/builds/9723/steps/7/logs/stdio
Reviewed By: ayzhao
Differential Revision: https://reviews.llvm.org/D148852
show more ...
|
#
7c59e800 |
| 20-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
Reland: [Demangle] replace use of llvm::StringView w/ std::string_view
This reverts commit d81cdb49d74064e88843733e7da92db865943509.
This refactoring was waiting on converting LLVM to C++17.
Leave
Reland: [Demangle] replace use of llvm::StringView w/ std::string_view
This reverts commit d81cdb49d74064e88843733e7da92db865943509.
This refactoring was waiting on converting LLVM to C++17.
Leave StringView.h and cleanup around for subsequent cleanup.
Additional fixes for missing std::string_view conversions for MSVC.
Reviewed By: MaskRay, DavidSpickett, ayzhao
Differential Revision: https://reviews.llvm.org/D148546
show more ...
|
Revision tags: llvmorg-16.0.2 |
|
#
d81cdb49 |
| 15-Apr-2023 |
Fangrui Song <i@maskray.me> |
Revert D148384 "[Demangle] replace use of llvm::StringView w/ std::string_view"
This reverts commit 3e559509b426b6aae735a7f57dbdaed1041d2622 and e0c4ffa796b553fa78c638a9584c05ac21fe07d5.
This still
Revert D148384 "[Demangle] replace use of llvm::StringView w/ std::string_view"
This reverts commit 3e559509b426b6aae735a7f57dbdaed1041d2622 and e0c4ffa796b553fa78c638a9584c05ac21fe07d5.
This still breaks Windows builds.
In addition, `#include <llvm/ADT/StringViewExtras.h>` in llvm/include/llvm/Demangle/ItaniumDemangle.h is a library layering violation (LLVMDemangle is the lowest LLVM library and cannot depend on LLVMSupport).
show more ...
|
#
e0c4ffa7 |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] fix windows build
Fixes diagnostics reported against https://reviews.llvm.org/D148384
https://lab.llvm.org/buildbot/#/builders/127/builds/46749/steps/4/logs/stdio
Reviewed By: MaskRay
[Demangle] fix windows build
Fixes diagnostics reported against https://reviews.llvm.org/D148384
https://lab.llvm.org/buildbot/#/builders/127/builds/46749/steps/4/logs/stdio
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148392
show more ...
|
#
3e559509 |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[Demangle] replace use of llvm::StringView w/ std::string_view
This refactoring was waiting on converting LLVM to C++17.
Leave StringView.h and cleanup around for subsequent cleanup.
Reviewed By:
[Demangle] replace use of llvm::StringView w/ std::string_view
This refactoring was waiting on converting LLVM to C++17.
Leave StringView.h and cleanup around for subsequent cleanup.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148384
show more ...
|
#
5e53e1bb |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[StringView] remove consumeFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have.
This could be moved to the nascent llvm/ADT/
[StringView] remove consumeFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have.
This could be moved to the nascent llvm/ADT/StringViewExtras.h, but the use is highly localized to one TU. Move this to be a static function there.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148375
show more ...
|
#
ee6abfc5 |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[StringView] remove popFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have.
llvm::StringView::popFront is similar to std::st
[StringView] remove popFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have.
llvm::StringView::popFront is similar to std::string_view::remove_prefix but with a reference to std::string_view::front taken first.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148363
show more ...
|
#
0f9f03af |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[StringView] remove ctor incompatible with std::string_view
Towards replacing llvm::StringView with std::string_view, remove ctor that std::string_view doesn't have an analog for.
Reviewed By: eric
[StringView] remove ctor incompatible with std::string_view
Towards replacing llvm::StringView with std::string_view, remove ctor that std::string_view doesn't have an analog for.
Reviewed By: erichkeane, MaskRay
Differential Revision: https://reviews.llvm.org/D148353
show more ...
|
#
f198e0b5 |
| 14-Apr-2023 |
Nick Desaulniers <ndesaulniers@google.com> |
[StringView] remove dropFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have. llvm::StringView::dropFront is semantically simi
[StringView] remove dropFront
Towards converting our use of llvm::StringView to std::string_view, remove a method that std::string_view doesn't have. llvm::StringView::dropFront is semantically similar to std::string_view::substr but with the input clamped to the size. No code was relying on clamping other than the rust demangler, which I fixed in https://reviews.llvm.org/D148272. Removing this method makes it easier to switch over code later.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D148348
show more ...
|
#
3ece37b3 |
| 13-Apr-2023 |
Fangrui Song <i@maskray.me> |
[Demangle] Remove uses of llvm::itanium_demangle::StringView::{dropBack,dropFront}. NFC
Make it easier to migrate StringView to std::string_view.
|
Revision tags: 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, working, 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, 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 |
|
#
d3b10150 |
| 28-Feb-2022 |
Nathan Sidwell <nathan@acm.org> |
[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.
Some adjustment to a couple of uses is needed, due to the lazy buffer creation of this patch.
a) the Microsoft demangler can demangle empty strings to nothing, which it then memoizes. We need to avoid the UB of passing nullptr to memcpy.
b) a unit test checks insertion of no characters into an empty buffer. We need to avoid UB when converting that to std::string.
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 ...
|
#
bf1e96d6 |
| 09-Jun-2022 |
Zequan Wu <zequanwu@google.com> |
[MicrosoftDemangle] Set error to true when returning nullptr.
|
#
aabeb5eb |
| 26-Apr-2022 |
Kirill Stoimenov <kstoimenov@google.com> |
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 ...
|
#
5b3ca24a |
| 28-Feb-2022 |
Nathan Sidwell <nathan@acm.org> |
[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 ...
|
#
1066e397 |
| 01-Mar-2022 |
Nathan Sidwell <nathan@acm.org> |
[demangler] Add StringView conversion operator
The OutputBuffer class tries to present a NUL-terminated string API to consumers. But several of them would prefer a StringView. In particular the Mi
[demangler] Add StringView conversion operator
The OutputBuffer class tries to present a NUL-terminated string API to consumers. But several of them would prefer a StringView. In particular the Microsoft demangler, juggles between NUL-terminated and StringView, which is confusing.
This adds a StringView conversion, and adjusts the Demanglers that can benefit from that.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D120990
show more ...
|
#
d1587c38 |
| 24-Mar-2022 |
Nathan Sidwell <nathan@acm.org> |
[llvm] Fix string copy confusion
The microsoft demangler makes copies of the demangled strings, but has some confusion between StringView representation (sans NUL), and C-strings (with NUL). Here w
[llvm] Fix string copy confusion
The microsoft demangler makes copies of the demangled strings, but has some confusion between StringView representation (sans NUL), and C-strings (with NUL). Here we also have a use of strcpy, which happens to work because the incoming string view happens to have a trailing NUL. But a simple memcpy excluding the NUL is sufficient.
Reviewed By: dblaikie, erichkeane
Differential Revision: https://reviews.llvm.org/D122391
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 <contact@lsferreira.net> |
[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 ...
|