- Sep 17, 2020
-
-
Simon Pilgrim authored
Already included in LiveDebugVariables.h
-
Simon Pilgrim authored
Already included in DwarfExpression.h
-
Simon Pilgrim authored
Already included in ValueList.h
-
Kamil Rytarowski authored
Avoid fallbacking to software emulated compiler atomics, that are usually provided by libatomic, which is not always present. This fixes the test on NetBSD, which does not provide libatomic in base. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D87568
-
Simon Pilgrim authored
Already included in SafeStackLayout.h
-
jerryyin authored
Differential Revision: https://reviews.llvm.org/D87773
-
Simon Pilgrim authored
Move the include down to cpp files with an implicit dependency.
-
Yvan Roux authored
-
Florian Hahn authored
-
Kerry McLaughlin authored
This patch adds new ISD nodes, FCVTZS_MERGE_PASSTHRU & FCVTZU_MERGE_PASSTHRU, which are used to lower scalable vector FP_TO_SINT/FP_TO_UINT operations and the following intrinsics: - llvm.aarch64.sve.fcvtzu - llvm.aarch64.sve.fcvtzs Reviewed By: efriedma, paulwalker-arm Differential Revision: https://reviews.llvm.org/D87232
-
Georgii Rymar authored
When ELF header's `e_machine == 0`, we emit: ``` Machine: EM_NONE ``` We can avoid doing this, because yaml2obj sets the `e_machine` field to `EM_NONE` by default. Differential revision: https://reviews.llvm.org/D87829
-
Georgii Rymar authored
We have an issue with `ELFDumper<ELFT>::getSymbolSectionName`: 1) It is used deeply for both LLVM/GNU styles and might return LLVM-style only values to describe symbols: "Undefined", "Processor Specific", "Absolute", etc. 2) `getSymbolSectionName` is used by `getFullSymbolName` and these special values might appear in instead of symbol names in many places. This occurs for unnamed section symbols. It was not noticed because for most cases I've found it is unexpected to have an unnamed section symbol. This patch documents the existent behavior, adds tests and FIXMEs. Differential revision: https://reviews.llvm.org/D87763
-
Sanjay Patel authored
This is one (small) part of improving PR41312: https://llvm.org/PR41312 As shown there and in the smaller tests here, if we have some member of the reduction values that does not match the others, we want to push it to the end (bring the matching members forward and together). In the regression tests, we have 5 candidates for the 4 slots of the reduction. If the one "wrong" compare is grouped with the others, it prevents forming the ideal v4i1 compare reduction. Differential Revision: https://reviews.llvm.org/D87772
-
Jessica Clarke authored
D79916 changed the behaviour from -O2 to -O1 but the documentation was not updated to reflect this.
-
Simon Pilgrim authored
All of these forward declarations are fully defined in headers that are directly included.
-
Mikael Holmen authored
gcc 7.4 warns about it.
-
mydeveloperday authored
https://bugs.llvm.org/show_bug.cgi?id=47461 The following change {D80940} caused a regression in code which ifdef's around the try and catch block cause incorrect brace placement around the catch ``` try { } catch (...) { // This is not a small function bar = 1; } } ``` The brace after the catch will be placed on a newline Reviewed By: curdeius Differential Revision: https://reviews.llvm.org/D87291
-
Simon Pilgrim authored
Already included in MetadataLoader.h
-
Simon Pilgrim authored
Use forward declarations where possible, move includes down to SymbolizableObjectFile.cpp and avoid duplicate includes.
-
Sam Parker authored
Run update script on one test and add another.
-
David Spickett authored
This reverts commit c687af0c due to a test failure on Windows.
-
David Green authored
-
Simon Pilgrim authored
Already included in DwarfStringPool.h
-
Simon Pilgrim authored
Use forward declarations where possible, move includes down to DwarfFile.cpp and avoid duplicate includes.
-
David Green authored
-
Alex Zinenko authored
C API test uses FileCheck comments inside C code and needs to temporarily switch off clang-format to prevent it from messing with FileCheck directives. A recently landed commit forgot to turn it back on after a block of FileCheck comments. Fix that.
-
Nico Weber authored
-
Vincent Zhao authored
`swapId` used to be a static function in `AffineStructures.cpp`. This diff makes it accessible from the external world by turning it into a member function of `FlatAffineConstraints`. This will be very helpful for other projects that need to manipulate the content of `FlatAffineConstraints`. Differential Revision: https://reviews.llvm.org/D87766
-
Simon Pilgrim authored
Avoid unnecessary copies.
-
Simon Pilgrim authored
Method implementation no longer exists.
-
Simon Pilgrim authored
Method implementation no longer exists.
-
Jakub Lichman authored
ConvOp vectorization supports now only convolutions of static shapes with dimensions of size either 3(vectorized) or 1(not) as underlying vectors have to be of static shape as well. In this commit we add support for convolutions of any size as well as dynamic shapes by leveraging existing matmul infrastructure for tiling of both input and kernel to sizes accepted by the previous version of ConvOp vectorization. In the future this pass can be extended to take "tiling mask" as a user input which will enable vectorization of user specified dimensions. Differential Revision: https://reviews.llvm.org/D87676
-
Cullen Rhodes authored
This patch adds support for implicit casting between GNU vectors and SVE vectors when `__ARM_FEATURE_SVE_BITS==N`, as defined by the Arm C Language Extensions (ACLE, version 00bet5, section 3.7.3.3) for SVE [1]. This behavior makes it possible to use GNU vectors with ACLE functions that operate on VLAT. For example: typedef int8_t vec __attribute__((vector_size(32))); vec f(vec x) { return svasrd_x(svptrue_b8(), x, 1); } Tests are also added for implicit casting between GNU and fixed-length SVE vectors created by the 'arm_sve_vector_bits' attribute. This behavior makes it possible to use VLST with existing interfaces that operate on GNUT. For example: typedef int8_t vec1 __attribute__((vector_size(32))); void f(vec1); #if __ARM_FEATURE_SVE_BITS==256 && __ARM_FEATURE_SVE_VECTOR_OPERATORS typedef svint8_t vec2 __attribute__((arm_sve_vector_bits(256))); void g(vec2 x) { f(x); } // OK #endif The `__ARM_FEATURE_SVE_VECTOR_OPERATORS` feature macro indicates interoperability with the GNU vector extension. This is the first patch providing support for this feature, which once complete will be enabled by the `-msve-vector-bits` flag, as the `__ARM_FEATURE_SVE_BITS` feature currently is. [1] https://developer.arm.com/documentation/100987/latest Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D87607 -
David Spickett authored
Previously when <addr> in "memory region <addr>" didn't parse correctly, we'd print an error then also ask lldb-server for a region containing LLDB_INVALID_ADDRESS. (lldb) memory region not_an_address error: invalid address argument "not_an_address"... error: Server returned invalid range Only send the command to lldb-server if the address parsed correctly. (lldb) memory region not_an_address error: invalid address argument "not_an_address"... Reviewed By: labath Differential Revision: https://reviews.llvm.org/D87694
-
Rainer Orth authored
On Solaris/x86, several hundred 32-bit tests `FAIL`, all in the same way: env ASAN_OPTIONS=halt_on_error=false ./halt_on_error_suppress_equal_pcs.cpp.tmp Segmentation Fault (core dumped) They segfault during startup: Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0x080f21f0 in __sanitizer::internal_mmap(void*, unsigned long, int, int, int, unsigned long long) () at /vol/llvm/src/llvm-project/dist/compiler-rt/lib/sanitizer_common/sanitizer_solaris.cpp:65 65 int prot, int flags, int fd, OFF_T offset) { 1: x/i $pc => 0x80f21f0 <_ZN11__sanitizer13internal_mmapEPvmiiiy+16>: movaps 0x30(%esp),%xmm0 (gdb) p/x $esp $3 = 0xfeffd488 The problem is that `movaps` expects 16-byte alignment, while 32-bit Solaris/x86 only guarantees 4-byte alignment following the i386 psABI. This patch updates `X86Subtarget::initSubtargetFeatures` accordingly, handles Solaris/x86 in the corresponding testcase, and allows for some variation in address alignment in `compiler-rt/test/ubsan/TestCases/TypeCheck/vptr.cpp`. Tested on `amd64-pc-solaris2.11` and `x86_64-pc-linux-gnu`. Differential Revision: https://reviews.llvm.org/D87615 -
Douglas Yung authored
The test added in this commit is failing on Windows bots: http://lab.llvm.org:8011/builders/llvm-clang-win-x-armv7l/builds/1269 This reverts commit f9e6d1ed and follow-up commit 6859d95e.
-
Roman Lebedev authored
[NFC] EliminateDuplicatePHINodes(): small-size optimization: if there are <= 32 PHI's, O(n^2) algo is faster (geomean -0.08%) This is functionally equivalent to the old implementation. As per https://llvm-compile-time-tracker.com/compare.php?from=5f4e9bf6416e45eba483a4e5e263749989fdb3b3&to=4739e6e4eb54d3736e6457249c0919b30f6c855a&stat=instructions this is a clear geomean compile-time regression-free win with overall geomean of `-0.08%` 32 PHI's appears to be the sweet spot; both the 16 and 64 performed worse: https://llvm-compile-time-tracker.com/compare.php?from=5f4e9bf6416e45eba483a4e5e263749989fdb3b3&to=c4efe1fbbfdf0305ac26cd19eacb0c7774cdf60e&stat=instructions https://llvm-compile-time-tracker.com/compare.php?from=5f4e9bf6416e45eba483a4e5e263749989fdb3b3&to=e4989d1c67010d3339d1a40ff5286a31f10cfe82&stat=instructions If we have more PHI's than that, we fall-back to the original DenseSet-based implementation, so the not-so-fast cases will still be handled. However compile-time isn't the main motivation here. I can name at least 3 limitations of this CSE: 1. Assumes that all PHI nodes have incoming basic blocks in the same order (can be fixed while keeping the DenseMap) 2. Does not special-handle `undef` incoming values (i don't see how we can do this with hashing) 3. Does not special-handle backedge incoming values (maybe can be fixed by hashing backedge as some magical value) Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D87408
-
Jay Foad authored
When splitting a live interval with subranges, only insert copies for the lanes that are live at the point of the split. This avoids some unnecessary copies and fixes a problem where copying dead lanes was generating MIR that failed verification. The test case for this is test/CodeGen/AMDGPU/splitkit-copy-live-lanes.mir. Without this fix, some earlier live range splitting would create %430: %430 [256r,848r:0)[848r,2584r:1) 0@256r 1@848r L0000000000000003 [848r,2584r:0) 0@848r L0000000000000030 [256r,2584r:0) 0@256r weight:1.480938e-03 ... 256B undef %430.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %20.sub1:vreg_128, implicit $exec ... 848B %430.sub0:vreg_128 = V_AND_B32_e32 %92:sreg_32, %20.sub1:vreg_128, implicit $exec ... 2584B %431:vreg_128 = COPY %430:vreg_128 Then RAGreedy::tryLocalSplit would split %430 into %432 and %433 just before 848B giving: %432 [256r,844r:0) 0@256r L0000000000000030 [256r,844r:0) 0@256r weight:3.066802e-03 %433 [844r,848r:0)[848r,2584r:1) 0@844r 1@848r L0000000000000030 [844r,2584r:0) 0@844r L0000000000000003 [844r,844d:0)[848r,2584r:1) 0@844r 1@848r weight:2.831776e-03 ... 256B undef %432.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %20.sub1:vreg_128, implicit $exec ... 844B undef %433.sub0:vreg_128 = COPY %432.sub0:vreg_128 { internal %433.sub2:vreg_128 = COPY %432.sub2:vreg_128 848B } %433.sub0:vreg_128 = V_AND_B32_e32 %92:sreg_32, %20.sub1:vreg_128, implicit $exec ... 2584B %431:vreg_128 = COPY %433:vreg_128 Note that the copy from %432 to %433 at 844B is a curious bundle-without-a-BUNDLE-instruction that SplitKit creates deliberately, and it includes a copy of .sub0 which is not live at this point, and that causes it to fail verification: *** Bad machine code: No live subrange at use *** - function: zextload_global_v64i16_to_v64i64 - basic block: %bb.0 (0x7faed48) [0B;2848B) - instruction: 844B undef %433.sub0:vreg_128 = COPY %432.sub0:vreg_128 - operand 1: %432.sub0:vreg_128 - interval: %432 [256r,844r:0) 0@256r L0000000000000030 [256r,844r:0) 0@256r weight:3.066802e-03 - at: 844B Using real bundles with a BUNDLE instruction might also fix this problem, but the current fix is less invasive and also avoids some unnecessary copies. https://bugs.llvm.org/show_bug.cgi?id=47492 Differential Revision: https://reviews.llvm.org/D87757 -
Jay Foad authored
This is a pre-commit for D87757 "[SplitKit] Only copy live lanes".
-
Sjoerd Meijer authored
As @efriedma pointed out in D86301, this "not equal to 0 check" of get.active.lane.mask's second operand needs to live here in Lint and not the Verifier. Differential Revision: https://reviews.llvm.org/D87228
-