- May 19, 2022
-
-
Martin Storsjö authored
Fix a couple minor details in the existing logic for calculating saved registers and stack adjustment. Synthesize the corresponding prologues and epilogues and print them. (This supersedes the previous printout of one single list of stored registers; as there's lots of minor nuance differences in how registers are pushed/popped in various corner cases, it's better to print the full prologue/epilogue instead of trying to condense it into one single list.) Print the raw values of the fields Reg, R, L (LinkRegister) and C (Chaining) instead of only printing the derived values. Differential Revision: https://reviews.llvm.org/D125644
-
LLVM GN Syncbot authored
-
Michael Jones authored
Fix typo in previous commit Differential Revision: https://reviews.llvm.org/D125913
-
Petr Hosek authored
We want to build libunwind, libc++abi and libc++ as universal libraries supporting both x86_64 and arm64 architectures. Differential Revision: https://reviews.llvm.org/D125908
-
Mark de Wever authored
Use a specialized buffer wrapper to limit the number of insertions in the buffer. After the limit has been reached the buffer only needs to count the number of insertions to return the buffer size required to store the entire output. Depends on D110498 Reviewed By: #libc, Mordante Differential Revision: https://reviews.llvm.org/D110499
-
Yusra Syeda authored
Differential Revision: https://reviews.llvm.org/D125725
-
Mark de Wever authored
This optimizes the __format_arg_store type to allow a more efficient storage of the basic_format_args. It stores the data in two arrays: - A struct with the tag of the exposition only variant's type and the offset of the element in the data array. Since this array only depends on the type information it's calculated at compile time and can be shared by different instances of this class. - The arguments converted to the types used in the exposition only variant of basic_format_arg. This means the packed data can be directly copied to an element of this variant. The new code uses rvalue reference arguments in preparation for P2418. The handle class also has some changes to prepare for P2418. The real changed for P2418 will be done separately, but these parts make it easier to implement that paper. Some parts of existing test code are removed since they were no longer valid after the changes, but new tests have been added. Implements parts of: - P2418 Add support for std::generator-like types to std::format Completes: - LWG3473 Normative encouragement in non-normative note Depends on D121138 Reviewed By: #libc, vitaut, Mordante Differential Revision: https://reviews.llvm.org/D121514
-
Mark de Wever authored
This formatter isn't in the list of required formatters in [format.formatter.spec]/2.2 For each charT, the string type specializations template<> struct formatter<charT*, charT>; template<> struct formatter<const charT*, charT>; template<size_t N> struct formatter<const charT[N], charT>; template<class traits, class Allocator> struct formatter<basic_string<charT, traits, Allocator>, charT>; template<class traits> struct formatter<basic_string_view<charT, traits>, charT>; Since remove_cvref_t<const charT[N]> is charT[N] the formatter is required by [format.functions]/25 Preconditions: formatter<remove_cvref_t<Ti>, charT> meets the BasicFormatter requirements ([formatter.requirements]) for each Ti in Args. Depends on D120921 Reviewed By: #libc, Mordante Differential Revision: https://reviews.llvm.org/D121138 -
LLVM GN Syncbot authored
-
Mark de Wever authored
The concept is based on P2286R2 Formatting Ranges. It will be used to optimise the storage of __format_arg_store as required by LWG-3473. Depends on D120916 Reviewed By: #libc, Mordante Differential Revision: https://reviews.llvm.org/D120921
-
Alex Brachet authored
-
Alex Brachet authored
Differential Revision: https://reviews.llvm.org/D125806
-
Martin Storsjö authored
There's an inconsistency regarding the epilogs of packed ARM64 unwind info with homed parameters; according to the documentation (and according to common sense), the epilog wouldn't have a series of nop instructions matching the stp x0-x7 in the prolog - however in practice, RtlVirtualUnwind still seems to behave as if the epilog does have the mirrored nops from the prolog. In practice, MSVC doesn't seem to produce packed unwind info with homed parameters, which might be why this inconsistency hasn't been noticed. Thus, to play it safe, avoid creating such packed unwind info with homed parameters. (LLVM's current behaviour matches the current runtime behaviour of RtlVirtualUnwind, but if it later is bug fixed to match the documentation, such unwind information would be incorrect.) See https://github.com/llvm/llvm-project/issues/54879 for further discussion on the matter. Differential Revision: https://reviews.llvm.org/D125876
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D125878
-
Martin Storsjö authored
(In the case of libunwind, the cmake option is called LIBUNWIND_HIDE_SYMBOLS, but it has the same effect as LIBCXX_HERMETIC_STATIC_LIBRARY and LIBCXXABI_HERMETIC_STATIC_LIBRARY.) Previously, the same issue was dealt with by setting a project wide define (_LIBUNWIND_HIDE_SYMBOLS, _LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS and _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) if only building a static library. If building both static and shared at the same time, this wasn't set, and the static library would contain dllexport directives. The LIB*_HERMETIC_STATIC_LIBRARY and LIBUNWIND_HIDE_SYMBOLS cmake options only apply the defines to the static library in the build, even if building both static and shared at the same time. (This could only be done use after the object libraries were enabled, as a shared libcxx needs libcxxabi object files built with dllexports included.) This allows removing inelegant code for deciding how to build the libcxxabi static library and a TODO comment that suggested that users should need to start setting an option, which they shouldn't need to. Finally, this gets rid of two XFAILs in tests. Differential Revision: https://reviews.llvm.org/D125715
-
Craig Topper authored
This will remove masks on the shift amount. We usually get this with SimplifyDemandedBits in DAGCombine, but that's restricted to cases where the AND has a single use. selectShiftMaskXLen does not have that restriction.
-
Craig Topper authored
If the masking AND has multiple users we fail to remove it.
-
Mogball authored
The current behaviour of `useDefaultTypePrinterParser` and `useDefaultAttributePrinterParser` is that they are set by default, but the dialect generator only generates the declarations for the parsing and printing hooks if it sees dialect types and attributes. Same goes for the definitions generated by the AttrOrTypeDef generator. This can lead to confusing and undesirable behaviour if the dialect generator doesn't see the definitions of the attributes and types, for example, if they are sensibly separated into different files: `Dialect.td`, `Ops.td`, `Attributes.td`, and `Types.td`. Now, these bits are unset by default. Setting them will always result in the dialect generator emitting the declarations for the parsing hooks. And if the AttrOrTypeDef generator sees it set, it will generate the default implementations. Reviewed By: rriddle, stellaraccident Differential Revision: https://reviews.llvm.org/D125809
-
Nico Weber authored
Needed to link llvm-debuginfod-find after eafa0530.
-
Jim Ingham authored
should not receive as exceptions (some will get converted to BSD signals instead). This is really the only stable way to ensure that a Mach exception gets converted to it's equivalent BSD signal. For programs that rely on BSD signal handlers, this has to happen or you can't even get the program to invoke the signal handler when under the debugger. This builds on a previous solution to this problem which required you start debugserver with the -U flag. This was not very discoverable and required lldb be the one to launch debugserver, which is not always the case. Differential Revision: https://reviews.llvm.org/D125434
-
Petr Hosek authored
This partially reverts commit 9cddfe30, specifically passthrough for CMAKE_OSX_* since this can lead to build passing through internal variables when it's not intended.
-
Daniel Thornburgh authored
This allows llvm-debuginfod-find to locate binaries in local build ID directories configured via --debug-file-directory, the same flag used for this purpose by llvm-symbolizer. This provides a consistent lookup semantics between the two tools when configured the same way, in particular when debug binaries may be located either locally or remotely. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D125864
-
Aaron Ballman authored
New diagnostics were added for unreachable generic selection expression associations in ca75ac5f, but it did not account for a difference in behavior between C and C++ regarding lvalue to rvalue conversions. So we would issue diagnostics about a selection being unreachable and then reach it. This corrects the diagnostic behavior in that case. Differential Revision: https://reviews.llvm.org/D125882
-
Fangrui Song authored
getNewMemBuffer has called memset. Reviewed By: alexander-shaposhnikov Differential Revision: https://reviews.llvm.org/D125833
-
Nathan James authored
Fixes https://github.com/llvm/llvm-project/issues/55557 Reviewed By: LegalizeAdulthood Differential Revision: https://reviews.llvm.org/D125877
-
Craig Topper authored
This function tries to match (a >> 8) | (a << 8) as (bswap a) >> 16. If the SRL isn't masked and the high bits aren't demanded, we still need to ensure that bits 23:16 are zero. After the right shift they will be in bits 15:8 which is where the important bits from the SHL end up. It's only a bswap if the OR on bits 15:8 only takes the bits from the SHL. Fixes PR55484. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D125641
-
Mehdi Amini authored
-
Mehdi Amini authored
-
- May 18, 2022
-
-
Daniel Kiss authored
Program may set the RA_SIGN_STATE pseudo register by expressions. Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value of the register which leads to runtime errors on PAC enabled systems. In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions. [1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1 [2] https://github.com/ARM-software/abi-aa/pull/129 Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D123692 Reland: test moved because it depends on exceptions.
-
Bixia Zheng authored
Add a test. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D125834
-
LLVM GN Syncbot authored
-
David Spickett authored
This does 2 things: * Moves it after the short options. Which makes sense given it's a niche, default off option. (if 2 files for one option seems a bit much, I am going to reuse them for "memory find" later) * Fixes the use of repeated commands. For example: memory read buf --show-tags <shows tags> memory read <shows tags> Added tests for the repetition and updated existing help tests. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D125089 -
LLVM GN Syncbot authored
-
Florian Hahn authored
-
Sam McCall authored
This reverts commit ca875539.
-
Nikita Popov authored
-
Philip Reames authored
As theorized, it does look like opnew is not getting inferred inaccessiblemmemonly.
-
Kito Cheng authored
- Use `Overloaded` rather than `Mangled`. - Use `Prototype` or `Desc` rather than `Seq`, it's not just a string sequence. - `Prototype` for those PrototypeDescriptor will used to evaluate as argument type. - `Desc` for those PrototypeDescriptor will used to evaluate as part of function name. Reviewed By: khchen Differential Revision: https://reviews.llvm.org/D125886
-
David Green authored
The Arm test had a incorrect check line with the wrong offset. From the look of the code it should be -400*4 = 0xFFFFF9C0 = 4294965696
-
AndreyChurbanov authored
Currently the library ignores requested wait policy in the presence of tasking. Threads always actively spin. The patch fixes this problem making the wait policy passive if this explicitly requested by user. Differential Revision: https://reviews.llvm.org/D123044
-