- Jul 24, 2020
-
-
Amy Kwan authored
This patch aims to implement the low order vector multiply, divide and modulo instructions available on Power10. The patch involves legalizing the ISD nodes MUL, UDIV, SDIV, UREM and SREM for v2i64 and v4i32 vector types in order to utilize the following instructions: - Vector Multiply Low Doubleword: vmulld - Vector Modulus Word/Doubleword: vmodsw, vmoduw, vmodsd, vmodud - Vector Divide Word/Doubleword: vdivsw, vdivsd, vdivuw, vdivud Differential Revision: https://reviews.llvm.org/D82510
-
Petr Hosek authored
This reverts commit 1d09ecf3 since it breaks sanitizer bots.
-
Peter Collingbourne authored
This guarantees that we will detect a buffer overflow or underflow that overwrites an adjacent block. This spatial guarantee is similar to the temporal guarantee that we provide for immediate use-after-free. Enabling odd/even tags involves a tradeoff between use-after-free detection and buffer overflow detection. Odd/even tags make it more likely for buffer overflows to be detected by increasing the size of the guaranteed "red zone" around the allocation, but on the other hand use-after-free is less likely to be detected because the tag space for any particular chunk is cut in half. Therefore we introduce a tuning setting to control whether odd/even tags are enabled. Differential Revision: https://reviews.llvm.org/D84361
-
Eric Christopher authored
level loops.
-
Petr Hosek authored
Rather than handling zlib handling manually, use find_package from CMake to find zlib properly. Use this to normalize the LLVM_ENABLE_ZLIB, HAVE_ZLIB, HAVE_ZLIB_H. Furthermore, require zlib if LLVM_ENABLE_ZLIB is set to YES, which requires the distributor to explicitly select whether zlib is enabled or not. This simplifies the CMake handling and usage in the rest of the tooling. This is a reland of abb00753 with all followup changes and fixes that should address issues that were reported in PR44780. Differential Revision: https://reviews.llvm.org/D79219
-
Matt Morehouse authored
Support fast16labels in `dfsan_has_label`, and print an error for all other API functions. For `dfsan_dump_labels` we return silently rather than crashing since it is also called from the atexit handler where it is undefined behavior to call exit() again. Reviewed By: kcc Differential Revision: https://reviews.llvm.org/D84215
-
Amara Emerson authored
-
Tobias Hieta authored
Differential Revision: https://reviews.llvm.org/D81385
-
Sidharth Baveja authored
This patch adds the ability to peel off iterations of the first loop in loop fusion. This can allow for both loops to have the same trip count, making it legal for them to be fused together. Here is a simple scenario peeling can be used in loop fusion: for (i = 0; i < 10; ++i) a[i] = a[i] + 3; for (j = 1; j < 10; ++j) b[j] = b[j] + 5; Here is we can make use of peeling, and then fuse the two loops together. We can peel off the 0th iteration of the loop i, and then combine loop i and j for i = 1 to 10. a[0] = a[0] +3; for (i = 1; i < 10; ++i) { a[i] = a[i] + 3; b[i] = b[i] + 5; } Currently peeling with loop fusion is only supported for loops with constant trip counts and a single exit point. Both unguarded and guarded loops are supported. Reviewed By: bmahjour (Bardia Mahjour), MaskRay (Fangrui Song) Differential Revision: https://reviews.llvm.org/D82927 -
David Green authored
Similar to 8fa824d7 but this time for MLA patterns, this selects predicated vmlav/vmlava/vmlalv/vmlava instructions from vecreduce.add(select(p, mul(x, y), 0)) nodes. Differential Revision: https://reviews.llvm.org/D84102
-
Jonas Devlieghere authored
ConstString is essentially trivially copyable yet it has a user defined copy constructor that copies its one member pointer. Remove it so it qualifies as trivial in the eyes of the compiler. This also fixes two unused variable warnings now that the compiler knows that the constructor has no side-effects. Differential revision: https://reviews.llvm.org/D84440
-
Steven Wu authored
Summary: The upgrading path from old ModuleFlag based linker options to the new NamedMetadata based linker option in in materializeMetadata() which gets called once for the module and once for every GV. The linker options are getting dup'ed every time and it can create massive amount of the linker options in the object file that gets created from old bitcode. Fix the problem by checking if the new option exists or not before upgrade again. rdar://64543389 Reviewers: pcc, t.p.northover, dexonsmith, arphaman Reviewed By: arphaman Subscribers: hiraditya, jkorous, ributzka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83688
-
Nikita Popov authored
-
Tarindu Jayatilaka authored
Added LoadInstCount, StoreInstCount, MaxLoopDepth, LoopCount Reviewed By: jdoerfert, mtrofin Differential Revision: https://reviews.llvm.org/D82283
-
Matt Arsenault authored
If the operand index exceeded the limit of unsigned char, it wrapped and would point to the wrong operand. Increase the size of the operand index field to avoid this, and also don't bother trying to fold into implicit operands.
-
Tue Ly authored
-
Tue Ly authored
Summary: Add implementations of fmax, fmaxf, and fmaxl. Reviewers: sivachandra Subscribers: mgorny, tschuett, libc-commits, ecnelises Tags: #libc-project Differential Revision: https://reviews.llvm.org/D84385
-
Peter Collingbourne authored
Differential Revision: https://reviews.llvm.org/D84454
-
Mitch Phillips authored
Summary: Allows other-language libFuzzer derivatives to invoke the driver. Patch By: Ian Eldred Pudney <ipudney@google.com> Reviewers: morehouse, kcc Reviewed By: morehouse Subscribers: #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D84425
-
Amara Emerson authored
On AArch64 we generate redundant G_SEXTs or G_SEXT_INREGs because of this. Differential Revision: https://reviews.llvm.org/D81993
-
Nikita Popov authored
Forgot to actually use the return value of the function.
-
Tarindu Jayatilaka authored
A printer pass and a lit test case was added. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D82523
-
Nikita Popov authored
This adds the llvm.abs(), llvm.umin(), llvm.umax(), llvm.smin(), and llvm.smax() intrinsics specified in D81829. For SelectionDAG, the ISD opcodes and all the legalization and lowering already exist, so this just wires them up to the intrinsic in the SDAG builder and adds rudimentary tests. For GlobalISel only the min/max intrinsics are wired up, as llvm.abs() will require the addition of a G_ABS op, and corresponding legalization support. Differential Revision: https://reviews.llvm.org/D84125
-
Roman Lebedev authored
Add LangRef specification for the llvm.abs, llvm.umin, llvm.umax, llvm.smin, and llvm.smax integer intrinsics. Link to RFC: https://lists.llvm.org/pipermail/llvm-dev/2020-June/142257.html Proposed alive2 implementation: https://github.com/AliveToolkit/alive2/pull/353 Differential Revision: https://reviews.llvm.org/D81829
-
Tarindu Jayatilaka authored
this separates `analyze` logic from `FunctionPropertiesAnalysis` Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D82521
-
Matt Arsenault authored
-
Nikita Popov authored
Non-feasible control-flow edges are currently removed by replacing the branch condition with a constant and then calling ConstantFoldTerminator. This happens in a rather roundabout manner, by inspecting the users (effectively: predecessors) of unreachable blocks, and further complicated by the need to explicitly materialize the condition for "forced" edges. I would like to extend SCCP to discard switch conditions that are non-feasible based on range information, but this is incompatible with the current approach (as there is no single constant we could use.) Instead, this patch explicitly removes non-feasible edges. It currently only needs to handle the case where there is a single feasible edge. The llvm_unreachable() branch will need to be implemented for the aforementioned switch improvement. Differential Revision: https://reviews.llvm.org/D84264
-
Matt Arsenault authored
The only case that I know doesn't work is the implicit sret case when the return type doesn't fit in the return registers.
-
clementval authored
-
MaheshRavishankar authored
The `makeTiledViews` did not use the sizes of the tiled views based on the result of the loop bound inference computation. This manifested as an error in computing tile sizes with convolution where not all the result expression of concatenated affine maps are simple AffineDimExpr. Differential Revision: https://reviews.llvm.org/D84366
-
Louis Dionne authored
This avoids issues when building the dylib for deployment targets that don't support aligned allocation, where Clang normally triggers an error to warn users their code would break at runtime when back-deployed. Since we're building the dylib itself, which contains the aligned allocation functions, we don't want to trigger that error. Differential Revision: https://reviews.llvm.org/D84418
-
Matt Morehouse authored
This reverts commit 19d9c039 due to buildbot failure.
-
Nikita Popov authored
As long as RenamedOp is not guaranteed to be accurate, we cannot assert here and should just return false. This was already done for the other conditions in this function. Fixes https://bugs.llvm.org/show_bug.cgi?id=46814.
-
Simon Pilgrim authored
-
Dokyung Song authored
Summary: libFuzzer's interceptor support added in 831ae45e currently only works on Linux. This patch disables the test cases added as part of that commit on non-Linux platforms. Reviewers: morehouse, hctim Subscribers: #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D84434
-
Gui Andrade authored
Differential Revision: https://reviews.llvm.org/D82680
-
Simon Pilgrim authored
Also remove some unnecessary forward declarations in RegionInfo.h.
-
Gui Andrade authored
These functions expect the caller to always pass shadows over TLS. Differential Revision: https://reviews.llvm.org/D84351
-
Louis Dionne authored
The dylib and the static archive should really be built using the same Standard, it was just an oversight.
-
Raphael Isemann authored
Summary: The `string_escape` encoding used here was removed in Python 3 which makes the test crash during tearDown: ``` File "lldb/third_party/Python/module/unittest2/unittest2/case.py", line 386, in run self.tearDown() File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py", line 124, in tearDown self._pump_queues.verify_queues_empty() File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 55, in verify_queues_empty _dump_queue(self.packet_queue()) File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 28, in _dump_queue print(codecs.encode(the_queue.get(True), "string_escape")) LookupError: unknown encoding: string_escape ``` Just replace it with `repr` which should work in both Python versions. Reviewers: labath, JDevlieghere Reviewed By: labath, JDevlieghere Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D84017
-