- Aug 15, 2023
-
-
Mikhail R. Gadelha authored
This patch moves the storage from inside the libc's optional class to its own set of class, so we can support non-trivially destructible objects. These new classes check if the class is or isn't non trivially destructible and instantiate the correct base class, i.e., we explicitly call the destructor if an object is not trivially destructible. The motivation is to support cpp::optional<UInt<128>> (used by UInt<T>::div), which is used when a platform does not support native int128_t types (e.g., riscv32). The code here is a trimmed-down version of llvm::optional. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D150211
-
Matt Arsenault authored
Preserves flags and metadata like the other cases.
-
David Blaikie authored
Turned out we were making overly simple assumptions about which sections (& section flags) would be used when emitting a global into a custom section. This lead to sections with read-only flags being used for globals of struct types with mutable members. Fixed by porting the codegen function with the more nuanced handling/checking for mutable members out of codegen for use in the sema code that does this initial checking/mapping to section flags. Differential Revision: https://reviews.llvm.org/D156726
-
Matt Arsenault authored
OpenCL loses fast math information by going through libcall wrappers around intrinsics. Do this to preserve call site flags which are lost when inlining. It's not safe in general to propagate flags during inline, so avoid dealing with this by just special casing some of the useful calls.
-
Alex Lorenz authored
It's failing on the Darwin CI: https://green.lab.llvm.org/green/ since it was introduced by https://reviews.llvm.org/D157552 and the failure hasn't been resolved yet Previous fix attempt (beae3152) did not resolve the failure, so marking it as unsupported again. rdar://113765281
-
Aart Bik authored
Consistent order of ops and related methods. Also, renamed SpGEMMGetSizeOp to SpMatGetSizeOp since this is a general utility for sparse matrices, not specific to GEMM ops only. Reviewed By: Peiming Differential Revision: https://reviews.llvm.org/D157922
-
Jacek Caban authored
Reviewed By: jhenderson, MaskRay Differential Revision: https://reviews.llvm.org/D149095
-
Craig Topper authored
I think after making G_SEXT_INREG legal this isn't needed. At the very least its not tested anymore. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D157678
-
Craig Topper authored
If we lower, we need to legalize the wide shifts which is costly. This will improve the tests from https://reviews.llvm.org/D157415 too Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D157677
-
Alex Langford authored
As stated on Discourse*, these methods have been deprecated. I am removing their implementation. They will now do nothing and return a value indicating failure (where appropriate). Due to the LLDB project's commitment to ABI stability at the SB API layer, we cannot remove these symbols completely. Discourse link: https://discourse.llvm.org/t/do-you-use-the-threading-functionality-in-sbhostos/71973
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Stanislav Mekhanoshin authored
This is not an FP32 operation. Differential Revision: https://reviews.llvm.org/D157909
-
Alex Langford authored
These were useful primarily for the Python 2 to 3 transition. Python 2 is no longer supported so these are no longer necessary. Differential Revision: https://reviews.llvm.org/D157759
-
Alexey Bataev authored
Fixed comparator for PHI nodes sorting to meet the criteria for strict weak ordering.
-
Roland Froese authored
Try to avoid some unprofitable predication on PPC. Recognize in the cost model that computing on i1 values will require extra mask or compare operation. Differential Revision: https://reviews.llvm.org/D155876
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157814
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157808
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157795
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157783
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157781
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D157775
-
Kelvin Li authored
Differential Revision: https://reviews.llvm.org/D157745
-
Ellis Hoag authored
We've seen `CompilationDatabaseTest.cpp` fail because the order of the files returned by `getAllFiles()` was in a different order than expected. Use `UnorderedElementsAreArray()` to handle different file orders. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D157904
-
Florian Hahn authored
Address post-commit simplification suggestion for 8a56179b: Store operator only for floating point inductions (i.e. the binary op is a FPMathOperator).
-
Justin Bogner authored
this is failing on bots, reverting to investigate. This reverts commit a16104e6.
-
Justin Bogner authored
This splits OptTable's "Flags" field into "Flags" and "Visibility", updates the places where we instantiate Option tables, and adds variants of the OptTable APIs that use Visibility mask instead of Include/Exclude flags. We need to do this to clean up a bunch of complexity in the clang driver's option handling - there's a whole slew of flags like CoreOption, NoDriverOption, and FlangOnlyOption there today to try to handle all of the permutations of flags that the various drivers need, but it really doesn't scale well, as can be seen by things like the somewhat recently introduced CLDXCOption. Instead, we'll provide an additive model for visibility that's separate from the other flags. For things like "HelpHidden", which is used as a "subtractive" modifier for option visibility, we leave that in "Flags" and handle it as a special case. Note that we don't actually update the users of the Include/Exclude APIs here or change the flags that exist in clang at all - that will come in a follow up that refactors clang's Options.td to use the increased flexibility this change allows. Differential Revision: https://reviews.llvm.org/D157149
-
Kelvin Li authored
Co-authored-by:
Paul Scoropan <1paulscoropan@gmail.com> Differential Revision: https://reviews.llvm.org/D157728
-
Zequan Wu authored
There may be some padding before or after counters.
-
Elizabeth Andrews authored
Differential Revision: https://reviews.llvm.org/D157885
-
Craig Topper authored
We already do this in getNode, but the undef might appear during another DAGCombine. While here remove code for handling noop truncates. getNode checks the types and won't a noop truncate. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D157910
-
Philip Reames authored
In a recent series of refactorings (described here: https://discourse.llvm.org/t/riscv-transition-in-vector-pseudo-structure-policy-variants/71295), I greatly increased the number of IMPLICIT_DEF operands to our vector instructions. This has turned out to have an unexpected negative impact because MachineCSE does not CSE IMPLICIT_DEFs, and thus does not CSE any instruction with an IMPLICIT_DEF operand. SelectionDAG *does* CSE the same case, but that only covers the same block case, not the cross block case. This lead to the performance regression reported in https://github.com/llvm/llvm-project/issues/64282. This change is a slightly ugly hack to side step the issue. Instead of fixing the root cause (lack of CSE for IMPLICIT_DEF) or undoing the operand changes, we leave the extra operand in place, and use NoReg in place of IMPLICIT_DEF. I then convert back to IMPLICIT_DEF just before register allocation so that ProcessImplicitDefs and TwoAddressInstructions can do the normal transforms to Undef tied registers. We may end up backporting this into the 17.x release branch. Given how late in the release cycle this is landing, that's much less likely now, but still a possibility. Differential Revision: https://reviews.llvm.org/D156909
-
Kelvin Li authored
Differential Revision: https://reviews.llvm.org/D157768
-
Nico Weber authored
-
Joe Nash authored
Makes it easier to add GFX11 runline in future patch, which has significantly different output.
-
Justin Bogner authored
The -g flag has been selecting whether to emit dwarf or codeview based on the target ABI since 2018, so simply aliasing these flags does the right thing for clang-cl. This moves some code from Clang::ConstructJob to renderDebugOptions to make things a little clearer now that we don't need to keep track of whether we're doing codeview or not in multiple places, and also combines the duplicate handling of the cl vs clang handling of jmc flags as a result. This is mostly NFC, but some -cc1 flags may be rendered in a slightly different order because of the code that was moved around. Differential Revision: https://reviews.llvm.org/D157794
-
Elizabeth Andrews authored
Differential Revision: https://reviews.llvm.org/D157554
-