- Jul 25, 2022
-
-
Alex Zinenko authored
In the Transform dialect extensions, provide the separate mechanism to declare dependent dialects (the dialects the transform IR depends on) and the generated dialects (the dialects the payload IR may be transformed into). This allows the Transform dialect clients that are only constructing the transform IR to avoid loading the dialects relevant for the payload IR along with the Transform dialect itself, thus decreasing the build/link time. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D130289
-
Chuanqi Xu authored
specialization Previously in D120397, we've handled the linkage for function template and its specialization. But we forgot to handle it for class templates and their specialization. So we make it in the patch with the similar approach.
-
David Stuttard authored
Pal uses a different mechanism for user sgprs. Differential Revision: https://reviews.llvm.org/D129566
-
Saiyedul Islam authored
This patch extends the is_valid_binary routine to also check if the binary's target ID matches the one parsed from the system's runtime environment. This should allow us to only use the binary whose compute capability matches, allowing us to support basic multi-architecture binaries for AMDGPU. It also handles compatibility testing of target IDs of the image and the enviornment. Depends on D127432 Differential Revision: https://reviews.llvm.org/D127769
-
Matthias Springer authored
Load dialects that will be generated by the extension. (Except for BufferizationDialect and MemrefDialect which are loaded already.) Differential Revision: https://reviews.llvm.org/D130463
-
jacquesguan authored
This patch adds shouldScalarizeBinop to RISCV target in order to convert an extract element of a vector binary operation into an extract element followed by a scalar binary operation. Differential Revision: https://reviews.llvm.org/D129545
-
Nikita Popov authored
After D130366 the ptrtoint expression this used results in an error on 32-bit targets (the IR was already invalid previously, but only produced the error with -filetype=obj). Tweak the IR so it is correct for both 32-bit and 64-bit targets, and can thus continue working as a generic test.
-
Rajas Vanjape authored
https://reviews.llvm.org/D130023 added a memory leak in sparse_sampled_matmul.mlir This diff fixes the memory leak. Testing: Ran integration tests after building with -DLLVM_USE_SANITIZER=Address flag. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D130428
-
Adrian Kuegel authored
-
Sebastian Neubauer authored
Copying the folder keeps the original permissions by default. This creates problems when the source folder is read-only, e.g. in a packaging environment. Then, the copied folder in the build directory is read-only as well. Later on, other files are copied into that directory (in the build tree), failing when the directory is read-only. Fix that problem by copying the folder without keeping the original permissions. Follow-up to D130254. Differential Revision: https://reviews.llvm.org/D130338
-
Dmitry Vyukov authored
Prevent the following pathological behavior: Since memory access handling is not synchronized with DoReset, a thread running concurrently with DoReset can leave a bogus shadow value that will be later falsely detected as a race. For such false races RestoreStack will return false and we will not report it. However, consider that a thread leaves a whole lot of such bogus values and these values are later read by a whole lot of threads. This will cause massive amounts of ReportRace calls and lots of serialization. In very pathological cases the resulting slowdown can be >100x. This is very unlikely, but it was presumably observed in practice: https://github.com/google/sanitizers/issues/1552 If this happens, previous access sid+epoch will be the same for all of these false races b/c if the thread will try to increment epoch, it will notice that DoReset has happened and will stop producing bogus shadow values. So, last_spurious_race is used to remember the last sid+epoch for which RestoreStack returned false. Then it is used to filter out races with the same sid+epoch very early and quickly. It is of course possible that multiple threads left multiple bogus shadow values and all of them are read by lots of threads at the same time. In such case last_spurious_race will only be able to deduplicate a few races from one thread, then few from another and so on. An alternative would be to hold an array of such sid+epoch, but we consider such scenario as even less likely. Note: this can lead to some rare false negatives as well: 1. When a legit access with the same sid+epoch participates in a race as the "previous" memory access, it will be wrongly filtered out. 2. When RestoreStack returns false for a legit memory access because it was already evicted from the thread trace, we will still remember it in last_spurious_race. Then if there is another racing memory access from the same thread that happened in the same epoch, but was stored in the next thread trace part (which is still preserved in the thread trace), we will also wrongly filter it out while RestoreStack would actually succeed for that second memory access. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D130269
-
Dmitry Vyukov authored
We used to deduplicate based on the race address to prevent lots of repeated reports about the same race. But now we clear the shadow for the racy address in DoReportRace: // This prevents trapping on this address in future. for (uptr i = 0; i < kShadowCnt; i++) StoreShadow(&shadow_mem[i], i == 0 ? Shadow::kRodata : Shadow::kEmpty); It should have the same effect of not reporting duplicates (and actually better because it's automatically reset when the memory is reallocated). So drop the address deduplication code. Both simpler and faster. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D130240 -
Balázs Kéri authored
Avoid a crash if a function is imported that has auto return type that references to a template with an expression-type of argument that references into the function's body. Fixes issue #56047 Reviewed By: martong Differential Revision: https://reviews.llvm.org/D129640
-
jacquesguan authored
This patch adds constant folder for ExpOp which only supports single and double precision floating-point. Differential Revision: https://reviews.llvm.org/D130318
-
Fangrui Song authored
-
David Spickett authored
EXPENSIVE_CHECKS enables _GLIBCXX_DEBUG, which makes std::sort check that the compare function is implemented correctly. To do this it calls it with the first item as both sides. Which trips the assert here because we think they're 2 capture ranges that overlap, when it's just the same range twice. Check up front for the two sides being the same item (same address, not just ==). Reviewed By: kazu Differential Revision: https://reviews.llvm.org/D130282
-
Nikita Popov authored
When using a ptrtoint to a size larger than the pointer width in a global initializer, we currently create a ptr & low_bit_mask style MCExpr, which will later result in a relocation error during object file emission. This patch rejects the constant expression already during lowerConstant(), which results in a much clearer error message that references the constant expression at fault. This fixes https://github.com/llvm/llvm-project/issues/56400, for certain definitions of "fix". Differential Revision: https://reviews.llvm.org/D130366
-
Fangrui Song authored
-
Rosie Sumpter authored
This patch recognizes f16 immediates as legal and adds the necessary patterns. This allows the fadda folding introduced in 05d424d1 to be applied to the f16 cases. Differential Revision: https://reviews.llvm.org/D129989
-
Sam McCall authored
-
Peter Waller authored
The code in this `#if 0` block appears to be a net benefit. Put it behind a switch defaulting to off to support experimentation and as a request for comment. The codegen impact of enabling this that I'm currently persuing is that it allows PRE to take place more frequently, particularly in loops with second order recurrences. Preliminary experimental data: Across LNT on AArch64, 54 benchmarks are sped up by >1%, and 42 are regressed by >1%, the geomean (exec_time_enabled / exec_time_disabled) of these 96 "1% or greater significance" benchmarks is 0.991. For the full set of 770 benchmarks it's 0.998. There are two benchmarks which experience a >30% speedup, and the worst slowdown is ~12%, and for every benchmark with a slowdown there is a benckmark which is sped up by a greater factor. Differential Revision: https://reviews.llvm.org/D130241
-
Kazu Hirata authored
Flang C++ Style Guide tells us to use *X when the reference is protected by a presense test. However, (*X).foo() is a little harder to read, especially when X is a complicated expression. This patch slightly deviates from the guide (but retains the spirit) by using X->foo() instead. Differential Revision: https://reviews.llvm.org/D130413
-
Kazu Hirata authored
Flang C++ Style Guide tells us to use x.value() when no presence test is obviously protecting the reference. Since a failure in EXPECT_TRUE doesn't terminate a given test, I don't count it as "protection" here. Differential Revision: https://reviews.llvm.org/D130410
-
Nikita Popov authored
Update the GEP FAQ to use opaque pointers. This requires more than a syntactic change in some place, because some of the concerns just don't make sense anymore (trying to index past a ptr member in a struct for example). This also fixes uses of incorrect syntax to declare or reference globals. Differential Revision: https://reviews.llvm.org/D130353
-
Nikita Popov authored
Update LangRef examples to use opaque pointers in most places. I've retained typed pointers in a few cases where opaque pointers don't make much sense, e.g. pointer to pointer bitcasts. Differential Revision: https://reviews.llvm.org/D130356
-
Fangrui Song authored
-
Balázs Kéri authored
Support for functions wmemcpy, wcslen, wcsnlen is added to the checker. Documentation and tests are updated and extended with the new functions. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D130091
-
Cullen Rhodes authored
When lowering add(a, select(mask, b, splat(0))) the sel instruction can be removed by using predicated add/sub instructions. Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D129751
-
Cullen Rhodes authored
-
Fangrui Song authored
-
Max Kazantsev authored
Handle guards uniformly with assumes, rather than iterating through all block instructions in attempt to find them. Differential Revision: https://reviews.llvm.org/D129874 Reviewed By: nikic
-
Kazu Hirata authored
The last use was removed on May 3, 2017 in commit 2af5037d. This patch also removes isLateResultInstr and isEarlySourceInstr as they become dead once we remove isLateInstrFeedsEarlyInstr.
-
Kazu Hirata authored
Identified with modernize-use-override.
-
Fangrui Song authored
ch_reserved is uninitialized and the output is not deterministic. Fix it. Rewrite and improve compress-debug-sections-zlib.test.
-
Kazu Hirata authored
Identified with modernize-use-override.
-
Kazu Hirata authored
Identified with modernize-use-override.
-
Kazu Hirata authored
-
inclyc authored
report an error when encountering 'while' token parsing declarator ``` clang/test/Parser/while-loop-outside-function.c:3:1: error: while loop outside of a function while // expected-error {{while loop outside of a function}} ^ clang/test/Parser/while-loop-outside-function.c:7:1: error: while loop outside of a function while // expected-error {{while loop outside of a function}} ^ ``` Fixes: https://github.com/llvm/llvm-project/issues/34462 Differential Revision: https://reviews.llvm.org/D129573 -
Marius Hillenbrand authored
For arith.constant operations of integer type, the operation generates result names that include the value of the constant (i.e., the IntegerAttr that defines the constant's value). That code currently assumes integer widths of 64 bits or less and hits an assert with wider constants or would create truncated and potentially ambiguous names when built with assertions disabled. To enable printing arith.constant ops for arbitrarily wide integer types, change to use the IntegerAttr's function getValue() when generating result names. Also, add a regression test. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D129930
-
Fangrui Song authored
-