- Sep 17, 2020
-
-
Fangrui Song authored
I have noticed that a 374MiB powerpc64le 'ld.lld' requires 11 passes to link. There is a ThunkSection (whose parent OutputSection is ".text" of 169MiB) with 12867 thunks.
-
Vitaly Buka authored
Remove RegisterCount and let GetRegistersAndSP to resize buffer as needed. Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D87747
-
Stanislav Mekhanoshin authored
-
Lang Hames authored
-
Petr Hosek authored
This reverts commit c57df3dc which broke Windows sanitizer bots.
-
Petr Hosek authored
This moves the platform-specific parameter logic from asan into sanitizer_common so lsan can reuse it. Patch By: mcgrathr Differential Revision: https://reviews.llvm.org/D85930
-
Craig Topper authored
If we have an all ones mask, we can just a regular masked load. InstCombine already gets this in IR. But the all ones mask can appear after type legalization. Only avx512 test cases are affected because X86 backend already looks for element 0 and the last element being 1. It replaces this with an unmasked load and blend. The all ones mask is a special case of that where the blend will be removed. That transform is only enabled on avx2 targets. I believe that's because a non-zero passthru on avx2 already requires a separate blend so its more profitable to handle mixed constant masks. This patch adds a dedicated all ones handling to the target independent DAG combiner. I've skipped extending, expanding, and index loads for now. X86 doesn't use index so I don't know much about it. Extending made me nervous because I wasn't sure I could trust the memory VT had the right element count due to some weirdness in vector splitting. For expanding I wasn't sure if we needed different undef handling. Differential Revision: https://reviews.llvm.org/D87788
-
Craig Topper authored
We should be able to turn this into a unmasked load. X86 has an optimization to detect that the first and last element aren't masked and then turn the whole thing into an unmasked load and a blend. That transform is disabled on avx512 though. But if we know the blend isn't needed, then the unmasked load by itself should always be profitable.
-
Michael Kruse authored
MSVC tries to expand templates that are in the false-branch of a `if constexpr` construct. In this case, the condition checks whether a tuple has at least one element and then is trying to access it using `std::get<0>`, which fails when the tuple has 0 elements. The workaround is to extract that case into a separate method. This patch is part of the series to make flang compilable with MS Visual Studio <http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html>. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D87728
-
Philip Reames authored
I will be posting a patch which adds appropriate target support shortly; landing the tests so that the diffs are clear.
-
David Greene authored
Some compilers generation functions with '$' in their names, so recognize those functions. This also requires recognizing function names inside quotes in some contexts in order to escape certain characters. Differential Revision: https://reviews.llvm.org/D82995
-
LLVM GN Syncbot authored
-
Nikita Popov authored
Reapply after fixing SimplifyWithOpReplaced() to never return the original value, which would lead to an infinite loop in this transform. ----- For selects of the type X == Y ? A : B, check if we can simplify A by using the X == Y equality and replace the operand if that's possible. We already try to do this in InstSimplify, but will only fold if the result of the simplification is the same as B, in which case the select can be dropped entirely. Here the select will be retained, just one operand simplified. As we are performing an actual replacement here, we don't have problems with refinement / poison values. Differential Revision: https://reviews.llvm.org/D87480
-
Nikita Popov authored
If SimplifyWithOpReplaced() cannot simplify the value, null should be returned. Make sure this really does happen in all cases, including those where SimplifyBinOp() returns the original value. This does not matter for existing users, but does mattter for D87480, which would go into an infinite loop otherwise.
-
Nikita Popov authored
Test courtesy of bkramer for the infinite combine loop introduced by D87480.
-
Michael Liao authored
-
Nico Weber authored
-
Fanbo Meng authored
Aligned allocation is not supported on z/OS. This patch sets -faligned-alloc-unavailable as default in z/OS toolchain. Reviewed By: abhina.sreeskantharajan, hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D87611
-
Rahman Lavaee authored
Revert "[obj2yaml] - Match ".stack_size" with the original section name, and not the uniquified name." This reverts commit 14e55f82.
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D87782
-
Johannes Doerfert authored
The last (big) missing piece to get "math" working in OpenMP target regions (that I know of) was complex math functions, e.g., `std::sin(std::complex<double>)`. With this patch we overload the system template functions for these operations with versions that have been distilled from `libcxx/include/complex`. We use the same `omp begin/end declare variant` mechanism we use for other math functions before, except that we this time overload templates (via D85735). Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D85777
-
Johannes Doerfert authored
With this extension the effects of `omp begin declare variant` will be applied to template function declarations. The behavior is opt-in and controlled by the `extension(allow_templates)` trait. While generally useful, this will enable us to implement complex math function calls by overloading the templates of the standard library with the ones in libc++. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D85735
-
Johannes Doerfert authored
`std::isnan` and friends can be found in two variants in the wild, one returns `bool`, as the standard defines it, one returns `int`, as the C macros do. So far we kinda hoped the system versions of these functions will work for people, e.g. they are definitions that can be compiled for the target. We know that is not the case always so we leverage the `disable_implicit_base` OpenMP context extension to specialize both versions of these functions without causing an invalid redeclaration. Reviewed By: JonChesterfield, tra Differential Revision: https://reviews.llvm.org/D85879
-
Johannes Doerfert authored
This extension allows to declare variants in between `omp begin/end declare variant` that do not match the type of the existing function with that name. Without this extension we would not find a base function (with a compatible type), therefore create a new one, which would cause conflicting declarations. With this extension we will not create "missing" base functions, which basically renders these specializations harmless. They will be generated but never called. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D85878
-
Johannes Doerfert authored
Due to `omp begin/end declare variant`, OpenMP context selectors can be nested. This patch adds initial support for this so we can use it for target math variants. We should improve the detection of "equivalent" scores and user conditions, we should also revisit the data structures of the OMPTraitInfo object, however, both are not pressing issues right now. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D85877
-
Johannes Doerfert authored
Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D85876
-
Johannes Doerfert authored
Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D85875
-
Johannes Doerfert authored
-
Patrick Beard authored
Perform all error handling in ReadCode() Add :help text describing “< path”, add extra line before Commands Differential Revision: https://reviews.llvm.org/D87640
-
Rahman Lavaee authored
Without this patch, obj2yaml decodes the content of only one ".stack_size" section. Other sections are dumped with their full contents. Reviewed By: grimar, MaskRay Differential Revision: https://reviews.llvm.org/D87727
-
Matt Arsenault authored
This doesn't change the memory size and doesn't need to worry about non-power-of-2 sizes.
-
Nico Weber authored
If you want to build everything, building the default target via just `ninja` is better, but `ninja all` shouldn't give you compile errors -- this fixes that.
-
Amara Emerson authored
-
Michael Liao authored
- After loading builtin bitcode for linking, skip adding default function attributes on LLVM intrinsics as their attributes are well-defined and retrieved directly from internal definitions. Adding extra attributes on intrinsics results in inconsistent result when `-save-temps` is present. Also, that makes few optimizations conservative. Differential Revision: https://reviews.llvm.org/D87761
-
Zequan Wu authored
-
Saleem Abdulrasool authored
This extends semantic analysis of attributes for Swift interoperability by introducing the `swift_bridge` attribute. This attribute enables bridging Objective-C types to Swift specific types. This is based on the work of the original changes in https://github.com/llvm/llvm-project-staging/commit/8afaf3aad2af43cfedca7a24cd817848c4e95c0c Differential Revision: https://reviews.llvm.org/D87532 Reviewed By: Aaron Ballman
-
Matt Morehouse authored
Entropic has performed at least on par with vanilla scheduling on Clusterfuzz, and has shown a slight coverage improvement on FuzzBench: https://www.fuzzbench.com/reports/2020-08-31/index.html Reviewed By: Dor1s Differential Revision: https://reviews.llvm.org/D87476
-
Zequan Wu authored
Differential Revision: https://reviews.llvm.org/D86369
-
Michael Kitzan authored
https://reviews.llvm.org/D86393 Patch adds five new `GICombinerRules`, one for each of the following unary FP instrs: `G_FNEG`, `G_FABS`, `G_FPTRUNC`, `G_FSQRT`, and `G_FLOG2`. The combine rules perform the FP operation on the constant operand and replace the original instr with the result. Patch additionally adds new combiner tests for the AArch64 target to test these new combiner rules.
-