- Sep 17, 2020
-
-
Qiu Chaofan authored
llc would crash for (store (fptosi-f128-i32)) when -mcpu=pwr8, we should not generate FP_TO_(S|U)INT_IN_VSR for f128 types at this time. This patch fixes it. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D86686
-
Chen Zheng authored
-
Ryan Prichard authored
* When .eh_frame is located using .eh_frame_hdr (PT_GNU_EH_FRAME), the start of .eh_frame is known, but not the size. In this case, the unwinder must rely on a terminator present at the end of .eh_frame. Set dwarf_section_length to UINTPTR_MAX to indicate this. * Add a new field, text_segment_length, that the FrameHeaderCache uses to track the size of the PT_LOAD segment indicated by dso_base. * Compute ehSectionEnd by adding sectionLength to ehSectionStart, never to fdeHint. Fixes PR46829. Differential Revision: https://reviews.llvm.org/D87750
-
LLVM GN Syncbot authored
-
zhanghb97 authored
This patch provides C API for MLIR affine map. - Implement C API for AffineMap class. - Add Utils.h to include/mlir/CAPI/, and move the definition of the CallbackOstream to Utils.h to make sure mlirAffineMapPrint work correct. - Add TODO for exposing the C API related to AffineExpr and mutable affine map. Differential Revision: https://reviews.llvm.org/D87617
-
Andrew Litteken authored
This introduces the IRInstructionMapper, and the associated wrapper for instructions, IRInstructionData, that maps IR level Instructions to unsigned integers. Mapping is done mainly by using the "isSameOperationAs" comparison between two instructions. If they return true, the opcode, result type, and operand types of the instruction are used to hash the instruction with an unsigned integer. The mapper accepts instruction ranges, and adds each resulting integer to a list, and each wrapped instruction to a separate list. At present, branches, phi nodes are not mapping and exception handling is illegal. Debug instructions are not considered. The different mapping schemes are tested in unittests/Analysis/IRSimilarityIdentifierTest.cpp Differential Revision: https://reviews.llvm.org/D86968
-
Arthur Eubanks authored
Really it should be named print<alias-sets>, but for the sake of changing fewer tests, added a TODO to rename after NPM switch and test cleanup. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D87713
-
Richard Smith authored
Don't forget to define them if they're constexpr and used inside a template; we might try to evaluate a call to them before the template is instantiated.
-
Richard Smith authored
References to different declarations of the same entity aren't different values, so shouldn't have different representations. Recommit of e6393ee8 with fixed handling for weak declarations. We now look for attributes on the most recent declaration when determining whether a declaration is weak.
-
Alina Sbirlea authored
Renaming should include blocks with existing Phis. Resolves PR45927. Differential Revision: https://reviews.llvm.org/D87661
-
Craig Topper authored
Similar to what done in D87788 for MLOAD. Again I've skipped indexed, truncating, and compressing stores.
-
Daniel Kiss authored
Writing the .note.gnu.property manually is error prone and hard to maintain in the assembly files. The -mmark-bti-property is for the assembler to emit the section with the GNU_PROPERTY_AARCH64_FEATURE_1_BTI. To be used when C/C++ is compiled with -mbranch-protection=bti. This patch refactors the .note.gnu.property handling. Reviewed By: chill, nickdesaulniers Differential Revision: https://reviews.llvm.org/D81930 Reland with test dependency on aarch64 target.
-
Daniel Kiss authored
This reverts commit 95e43f84.
-
ogiroux authored
-
Shilei Tian authored
Under current configuration, the permission of `flang` after installation is 700. This could bring a problem for system administrators who build and install flang for other users, which only the user who builds LLVM can execute it, and others can not. In this patch, the explicit permission setting in the `install` command is removed, and let CMake determine what perssion to be used like other components. Reviewed By: DavidTruby Differential Revision: https://reviews.llvm.org/D87783
-
Michael Liao authored
-
Nico Weber authored
-
Daniel Kiss authored
Writing the .note.gnu.property manually is error prone and hard to maintain in the assembly files. The -mmark-bti-property is for the assembler to emit the section with the GNU_PROPERTY_AARCH64_FEATURE_1_BTI. To be used when C/C++ is compiled with -mbranch-protection=bti. This patch refactors the .note.gnu.property handling. Reviewed By: chill, nickdesaulniers Differential Revision: https://reviews.llvm.org/D81930
-
jasonliu authored
Summary: When running a large test in LLVM_ENABLE_EXPENSIVE_CHECKS=ON mode, buildbot could hit timeout. Disable the test when this mode is on. Also disable it for debug so that the test won't hang for too long. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D87794
-
Peter Steinfeld authored
According to section 9.4.1, paragraph 3, If the starting point is greater than the ending point, the substring has length zero But the compilers code for substring processing was failing a call to `CHECK()` in this case. I fixed this by just setting the number of items in the resulting string to 0 for this situation. Differential Revision: https://reviews.llvm.org/D87799
-
Daniel Kiss authored
Unwinding leaf function is useful in cases when the backtrace finds a leaf function for example when it caused a signal. This patch also add the support for the DW_CFA_undefined because it marks the end of the frames. Ryan Prichard provided code for the tests. Reviewed By: #libunwind, mstorsjo Differential Revision: https://reviews.llvm.org/D83573
-
Yaxun (Sam) Liu authored
PartialDiagnostic misses some functions compared to DiagnosticBuilder. This patch refactors DiagnosticBuilder and PartialDiagnostic, extracts the common functionality so that the streaming << operators are shared. Differential Revision: https://reviews.llvm.org/D84362
-
Jordan Rupprecht authored
Register the `faulthandler` module so we can see what lldb tests are doing when they misbehave (e.g. run under a test runner that sets a timeout). This will print a stack trace for the following signals: - `SIGSEGV`, `SIGFPE`, `SIGABRT`, `SIGBUS`, and `SIGILL` (via `faulthandler.enable()`) - `SIGTERM` (via `faulthandler.register(SIGTERM)`) [This is what our test runners sends when it times out]. The only signal we currently handle is `SIGINT` (via `unittest2.signals.installHandler()`) so there should be no overlap added by this patch. Because this import is not available until python3, and the `register()` method is not available on Windows, this is enabled defensively. This should have absolutely no effect when tests are passing (or even normally failing), but can be observed by running this while ninja is running: ``` kill -s SIGTERM $(ps aux | grep dotest.py | head -1 | awk '{print $2}') ``` Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D87637 -
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
-
Mircea Trofin authored
We have the Register type which precisely captures the role of this member. Storage-wise, it's an unsigned. This helps readability & maintainability. Differential Revision: https://reviews.llvm.org/D87768
-
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.
-