- Feb 02, 2022
-
-
David Blaikie authored
This reverts commit ab475633. Breaks some cases, including this: namespace { template <typename> struct a {}; } // namespace class c { c(); }; class b { b(); a<c> ax; }; b::b() {} c::c() {} By producing a reference to a type unit for "c" but not producing the type unit.
-
Kirill Stoimenov authored
This reverts commit cf730d8c. It turned out that D118184 is causing segfaults in some situations. Reviewed By: vitalybuka, kda Differential Revision: https://reviews.llvm.org/D118739
-
Bixia Zheng authored
Move the functions that retrieve the supporting C library, compile an MLIR module and build a JIT execution engine to mlir_pytaco_utils. Add a function to create an MLIR sparse tensor from a file and return a pointer to the MLIR sparse tensor as well as the shape of the sparse tensor. Add unit tests. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D118496
-
Fangrui Song authored
-
Hongtao Yu authored
This reverts commit 057e784b.
-
Konstantin Varlamov authored
-
Sander de Smalen authored
For some reason we limited the epilogue VF to be fixed-width, but there is not necessarily a reason for doing so. If the main VF=vscale x 16, the epilogue VF could be either fixed-width, or a scalable VF upto vscale x 8. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D118688
-
Jameson Nash authored
This reverts commit ab3b8985 but disables the new test if the user has disabled support for building it.
-
Konstantin Varlamov authored
-
Anna Thomas authored
The code paths analyzed (all constructor invocations of fusion candidate) pass in a non-null DT. Adding this assert as requested in D118472 before converting this to a reference argument.
-
Anna Thomas authored
Cleanup code in peelLoop API. We already have usage of DT without guarding against a null DT, so this change constant folds the remaining null DT checks. Also make the argument a reference so that it is clear the argument is a nonnull DT. Extracted from D118472.
-
Nikolas Klauser authored
There is no practical difference between `_VSTD` and `std` so we should just remove `_VSTD`. This is the first step. Reviewed By: ldionne, #libc Spies: jeroen.dobbelaere, wmaxey, EricWF, lebedev.ri, __simt__, dim, mgrang, sstefan1, wenlei, smeenai, libcxx-commits, #libc_vendors Differential Revision: https://reviews.llvm.org/D117811
-
Aaron Ballman authored
-
Rainer Orth authored
Unfortunately, the `sanitizer_common` tests are disabled on many targets that are supported by `sanitizer_common`, making it easy to miss issues with that support. This patch enables SPARC testing. Beside the enabling proper, the patch fixes (together with D91607 <https://reviews.llvm.org/D91607>) the failures of the `symbolize_pc.cpp`, `symbolize_pc_demangle.cpp`, and `symbolize_pc_inline.cpp` tests. They lack calls to `__builtin_extract_return_addr`. When those are added, they `PASS` when compiled with `gcc`. `clang` incorrectly doesn't implement a non-default `__builtin_extract_return_addr` on several targets, SPARC included. Because `__builtin_extract_return_addr(__builtin_return_addr(0))` is quite a mouthful and I'm uncertain if the code needs to compile with msvc which appparently has it's own `_ReturnAddress`, I've introduced `__sanitizer_return_addr` to hide the difference and complexity. Because on 32-bit SPARC `__builtin_extract_return_addr` differs when the calling function returns a struct, I've added a testcase for that. There are a couple more tests failing on SPARC that I will deal with separately. Tested on `sparcv9-sun-solaris2.11`, `amd64-pc-solaris2.11`, and `x86_64-pc-linux-gnu`. Differential Revision: https://reviews.llvm.org/D91608
-
Mark de Wever authored
In D117811 @Quuxplusone pointed out the friend declarations don't need to be qualified. Removing the qualification should avoid needing to add a GCC work-around when changing _VSTD to std. Reviewed By: Quuxplusone, philnik, #libc, ldionne Differential Revision: https://reviews.llvm.org/D118719
-
Fangrui Song authored
-
Florian Hahn authored
Further extend test coverage added in 216d1a72
-
Hongtao Yu authored
Cleaning up data structures that are not used after a certain point. This further brings down peak memory usage by 15% for a large benchmark. Before: note: Before parsePerfTraces note: VM: 40.73 GB RSS: 39.18 GB note: Before parseAndAggregateTrace note: VM: 40.73 GB RSS: 39.18 GB note: After parseAndAggregateTrace note: VM: 88.93 GB RSS: 87.97 GB note: Before generateUnsymbolizedProfile note: VM: 88.95 GB RSS: 87.99 GB note: After generateUnsymbolizedProfile note: VM: 93.50 GB RSS: 92.53 GB note: After computeSizeForProfiledFunctions note: VM: 101.13 GB RSS: 99.36 GB note: After generateProbeBasedProfile note: VM: 215.61 GB RSS: 210.88 GB note: After postProcessProfiles note: VM: 237.48 GB RSS: 212.50 GB After: note: Before parsePerfTraces note: VM: 40.73 GB RSS: 39.18 GB note: Before parseAndAggregateTrace note: VM: 40.73 GB RSS: 39.18 GB note: After parseAndAggregateTrace note: VM: 88.93 GB RSS: 87.96 GB note: Before generateUnsymbolizedProfile note: VM: 88.95 GB RSS: 87.97 GB note: After generateUnsymbolizedProfile note: VM: 93.50 GB RSS: 92.51 GB note: After computeSizeForProfiledFunctions note: VM: 93.50 GB RSS: 92.53 GB note: After generateProbeBasedProfile note: VM: 164.87 GB RSS: 163.55 GB note: After postProcessProfiles note: VM: 182.28 GB RSS: 179.43 GB Reviewed By: wenlei, wlei Differential Revision: https://reviews.llvm.org/D118677
-
Sanjay Patel authored
-
Sanjay Patel authored
D118644
-
Daniel Resnick authored
Exposes mlir::DialectRegistry to the C API as MlirDialectRegistry along with helper functions. A hook has been added to MlirDialectHandle that inserts the dialect into a registry. A future possible change is removing mlirDialectHandleRegisterDialect in favor of using mlirDialectHandleInsertDialect, which it is now implemented with. Differential Revision: https://reviews.llvm.org/D118293
-
Stanislav Mekhanoshin authored
MemorySSA considers any atomic a def to any operation it dominates just like a barrier or fence. That is correct from memory state perspective, but not required for the no-clobber metadata since we are not using it for reordering. Skip such atomics during the scan just like a barrier if it does not alias with the load. Differential Revision: https://reviews.llvm.org/D118661
-
Louis Dionne authored
https://bugs.chromium.org/p/llvm/issues/detail?id=19 rdar://87912416 Differential Revision: https://reviews.llvm.org/D118134
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D118067
-
Florian Hahn authored
-
David Green authored
This reverts commit 100763a8 as it was making incorrect assumptions about implicit zero_extends.
-
Arthur O'Dwyer authored
If this is a SFINAE context, then continuing to look up names (in particular, to treat a non-function as a function, and then do ADL) might too-eagerly complete a type that it's not safe to complete right now. We should just say "okay, that's a substitution failure" and not do any more work than absolutely required. Fixes #52970. Differential Revision: https://reviews.llvm.org/D117603
-
Arthur O'Dwyer authored
Bug #52905 was originally papered over in a different way, but I believe this is the actually proper fix, or at least closer to it. We need to detect placeholder types as close to the front-end as possible, and cause them to fail constraints, rather than letting them persist into later stages. Fixes #52905. Fixes #52909. Fixes #53075. Differential Revision: https://reviews.llvm.org/D118552
-
Arthur O'Dwyer authored
https://cplusplus.github.io/LWG/issue3589 Differential Revision: https://reviews.llvm.org/D117961
-
Florian Mayer authored
setjmp can return twice, but PostDominatorTree is unaware of this. as such, it overestimates postdominance, leaving some cases (see attached compiler-rt) where memory does not get untagged on return. this causes false positives later in the program execution. this is a crude workaround to unblock use-after-scope for now, in the longer term PostDominatorTree should bemade aware of returns_twice function, as this may cause problems elsewhere. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D118647
-
Valentin Clement authored
This patch lowers STOP statement without arguments and ERROR STOP. STOP statement with arguments lowering will come in later patches ince it requires some expression lowering to be added. STOP statement is lowered to a runtime call. Also makes sure we are creating a constant in the MLIR arith constant. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan, schweitz Differential Revision: https://reviews.llvm.org/D118697 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Peter Klausler authored
Apply part of a pending patch for GCC 11 warnings, and rework a piece of code, to dodge warnings on flag from GCC 11 build bots exposed by a recent patch. Applying without review to get bots working again; changes also tested against GCC 9.3.0.
-
Stanislav Mekhanoshin authored
Currently we cannot convert a vector load into scalar if there is dominating barrier or fence. It is considered a clobbering memory access to prevent memory operations reordering. While reordering is not possible the actual memory is not being clobbered by a barrier or fence and we can still use a scalar load for a uniform pointer. The solution is not to bail on a first clobbering access but traverse MemorySSA to the root excluding barriers and fences. Differential Revision: https://reviews.llvm.org/D118419
-
Jeremy Morse authored
Bypass this loop if it would do nothing -- if there are no register masks to be examined, there's no point looking at each location to see if the location has been def'd. Awkwardly, this was responsible for almost an entire half a percent of performance improvement on CTMark. Differential Revision: https://reviews.llvm.org/D118613
-
Jeremy Morse authored
In certain circumstances with things like autogenerated code and asan, you can end up with thousands of Values live at the same time, causing a large working set and a lot of information spilled to the stack. Unfortunately InstrRefBasedLDV doesn't cope well with this and consumes a lot of memory when there are many many stack slots. See the reproducer in D116821. It seems very unlikely that a developer would be able to reason about hundreds of live named local variables at the same time, so a huge working set and many stack slots is an indicator that we're likely analysing autogenerated or instrumented code. In those cases: gracefully degrade by setting an upper bound on the amount of stack slots to track. This limits peak memory consumption, at the cost of dropping some variable locations, but in a rare scenario where it's unlikely someone is actually going to use them. In terms of the patch, this adds a cl::opt for max number of stack slots to track, and has the stack-slot-numbering code optionally return None. That then filters through a number of code paths, which can then chose to not track a spill / restore if it touches an untracked spill slot. The added test checks that we drop variable locations that are on the stack, if we set the limit to zero. Differential Revision: https://reviews.llvm.org/D118601
-
Matt Morehouse authored
Fixes a compile error when the `clang::musttail` attribute is used. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D118712
-
Chris Bieneman authored
These test cases all rely on a default target being specified. Adding the requirement gets the tests properly skipped when LLVM_DEFAULT_TARGET_TRIPLE is unset.
-
Shubham Sandeep Rastogi authored
Change namespace llvm::swift to namespace llvm::binaryformat because of clashes with the apple/llvm-project repository The namespace llvm::swift is causing errors to pop up in the apple/llvm-project build when cherry-picking 4ce1f3d4 into apple/llvm-project Differential Review: https://reviews.llvm.org/D118716
-
Chris Bieneman authored
llvm-as does everything this test requires, but doesn't depend on a target being registered. This gets the test passing when LLVM_DEFAUL_TARGET_TRIPLE is unset.
-
Anna Thomas authored
We have an instCombine rule to remove identical consecutive fences. We can extend this to remove weaker fences when we have consecutive stronger fence. As stated in the LangRef, a fence with a stronger ordering also implies ordering weaker than itself: "A fence which has seq_cst ordering, in addition to having both acquire and release semantics specified above, participates in the global program order of other seq_cst operations and/or fences." Reviewed-By: reames Differential Revision: https://reviews.llvm.org/D118607
-