- Feb 23, 2021
-
-
Stanislav Mekhanoshin authored
This is too expensive even for debug builds. It doubles scheduling time if enabled. Differential Revision: https://reviews.llvm.org/D97232
-
Arthur Eubanks authored
This drops check-llvm under -DLLVM_ENABLE_LTO=Thin from 13m to 10m20s on Windows and 20m to 15m35s on Linux. Reviewed By: hans Differential Revision: https://reviews.llvm.org/D96618
-
Craig Topper authored
An i64 AssertZExt from a type smaller than i32 has at least 33 leading zeros which mean it has at least 33 sign bits. Since we have a couple patterns that use two sexti32, I've switched to a ComplexPattern so tablegen didn't have to generate 9 different permutations. As noted in the FIXME, maybe we should just call computeNumSignBits, but we don't have tests that benefit from that yet. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D97130
-
James Y Knight authored
Previously, the definition was so-marked, but the declaration was not. This resulted in LLVM's dwarf emission treating the function as being external, and incorrectly emitting DW_AT_external. Differential Revision: https://reviews.llvm.org/D96044
-
Jessica Paquette authored
Match a G_SHUFFLE_VECTOR with a mask that allows it to be represented as a G_INSERT_VECTOR_ELT and a G_EXTRACT_VECTOR_ELT. This ports `isINSMask` from AArch64ISelLowering and the portion of `AArch64TargetLowering::LowerVECTOR_SHUFFLE` which handles the equivalent transformation. This provides more opportunities for matching DUP. We don't have all of the necessary combines to actually make DUP out of these yet, but this is better for size than the full TBL expansion for G_SHUFFLE_VECTOR. This is a -0.1% code size improvement on CTMark/Bullet at -Os. IR example: https://godbolt.org/z/sdcevT Differential Revision: https://reviews.llvm.org/D97214
-
Craig Topper authored
The result will have the same sign as the dividend unless the result is 0. The magnitude of the result will always be less than or equal to the dividend. So the result will have at least as many sign bits as the dividend. Previously we would do this if the divisor was a positive constant, but that isn't required. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D97170
-
Peter Collingbourne authored
This patch enhances the secondary allocator to be able to detect buffer overflow, and (on hardware supporting memory tagging) use-after-free and buffer underflow. Use-after-free detection is implemented by setting memory page protection to PROT_NONE on free. Because this must be done immediately rather than after the memory has been quarantined, we no longer use the combined allocator quarantine for secondary allocations. Instead, a quarantine has been added to the secondary allocator cache. Buffer overflow detection is implemented by aligning the allocation to the right of the writable pages, so that any overflows will spill into the guard page to the right of the allocation, which will have PROT_NONE page protection. Because this would require the secondary allocator to produce a header at the correct position, the responsibility for ensuring chunk alignment has been moved to the secondary allocator. Buffer underflow detection has been implemented on hardware supporting memory tagging by tagging the memory region between the start of the mapping and the start of the allocation with a non-zero tag. Due to the cost of pre-tagging secondary allocations and the memory bandwidth cost of tagged accesses, the allocation itself uses a tag of 0 and only the first four pages have memory tagging enabled. Differential Revision: https://reviews.llvm.org/D93731
-
Shafik Yaghmour authored
Currently TypePrinter lumps anonymous classes and unnamed classes in one group "anonymous" this is not correct and can be confusing in some contexts. Differential Revision: https://reviews.llvm.org/D96807
-
Sam McCall authored
This allows modules to do work on non-TUScheduler background threads. Differential Revision: https://reviews.llvm.org/D96755
-
Sam McCall authored
blockUntilIdle of a parent can't always be correctly implemented as return ChildA.blockUntilIdle() && ChildB.blockUntilIdle() The problem is that B can schedule work on A while we're waiting on it. I believe this is theoretically possible today between CDB and background index. Modules open more possibilities and it's hard to reason about all of them. I don't have a perfect fix, and the abstraction is too good to lose. this patch: - calls out why we block on workscheduler first, and asserts correctness - documents the issue - reduces the practical possibility of spuriously returning true significantly This function is ultimately only for testing, so we're driving down flake rate. Differential Revision: https://reviews.llvm.org/D96856
-
Petr Hosek authored
__start_/__stop_ references retain C identifier name sections such as __llvm_prf_*. Putting these into a section group disables this logic. The ELF section group semantics ensures that group members are retained or discarded as a unit. When a function symbol is discarded, this allows allows linker to discard counters, data and values associated with that function symbol as well. Note that `noduplicates` COMDAT is lowered to zero-flag section group in ELF. We only set this for functions that aren't already in a COMDAT and for those that don't have available_externally linkage since we already use regular COMDAT groups for those. Differential Revision: https://reviews.llvm.org/D96757
-
Amara Emerson authored
Differential Revision: https://reviews.llvm.org/D97086
-
Amara Emerson authored
We don't yet have working codegen for the resulting unmerges, and if we did it would probably be horrible. Differential Revision: https://reviews.llvm.org/D97035
-
Nico Weber authored
/reproduce: now works correctly with: - /call-graph-ordering-file: - /def: - /natvis: - /order: - /pdbstream: I went through all instances of MemoryBuffer::getFile() and made sure everything that didn't already do so called takeBuffer(). For natvis, that wasn't possible since DebugInfo/PDB wants to take owernship of the natvis buffer. For that case, I'm manually adding the tar file entry. /natvis: and /pdbstream: is slightly awkward, since createResponseFile() always adds these flags to the response file but createPDB() (which ultimately adds the files referenced by the flags) is only called if /debug is also passed. So when using /natvis: without /debug with /reproduce:, lld won't warn, but when linking using the response file from the archive, it won't find the natvis file since it's not in the tar. This isn't a new issue though, and after this patch things at least work with using /natvis: _with_ debug with /reproduce:. (Same for /pdbstream:) Dif...
-
Heejin Ahn authored
Fixing catch unwind mismatches can sometimes invalidate existing branch destinations. This CL remaps those destinations after placing try-delegates. Fixes https://github.com/emscripten-core/emscripten/issues/13515. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D97178
-
Heejin Ahn authored
This adds support for serialization of `WasmEHFuncInfo`, in the form of <Source BB Number, Unwind destination BB number>. To make YAML mapping work, we needed to make a copy of the existing `SrcToUnwindDest` map within `yaml::WebAssemblyMachineFunctionInfo`. It was hard to add EH MIR tests for CFGStackify because `WasmEHFuncInfo` could not be read from test MIR files. This adds the serialization support for that to make EH MIR tests easier. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D97174
-
https://reviews.llvm.org/D97006Geoffrey Martin-Noble authored
Differential Revision: https://reviews.llvm.org/D97220
-
Zequan Wu authored
Differential Revision: https://reviews.llvm.org/D97098
-
LLVM GN Syncbot authored
-
Heejin Ahn authored
This renames variable and method names in `WasmEHFuncInfo` class to be simpler and clearer. For example, unwind destinations are EH pads by definition so it doesn't necessarily need to be included in every method name. Also I am planning to add the reverse mapping in a later CL, something like `UnwindDestToSrc`, so this renaming will make meanings clearer. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D97173
-
Melanie Blower authored
This patch responds to a comment from @vitalybuka in D96203: suggestion to do the change incrementally, and start by modifying this file name. I modified the file name and made the other changes that follow from that rename. Reviewers: vitalybuka, echristo, MaskRay, jansvoboda11, aaron.ballman Differential Revision: https://reviews.llvm.org/D96974
-
Craig Topper authored
This should fix the issue reported in D96972. I don't have a good test case for this without those changes. Differential Revision: https://reviews.llvm.org/D97082
-
Heejin Ahn authored
Currently exception.mir runs LateEHPrepare and CFGStackify, but some tests I'm planning to add shouldn't be run with LateEHPrepare, because it is convenient to only run CFGStackify when testing things like unwind mismatches and it is easier to add tests that are in phase right before CFGStackify. This splits existing exception.mir into two files; cfg-stackify-eh.mir will only run CFGStackify. Note that `eh_label_tests` tests both LateEHPrepare and CFGStackify, so it is still in exception.mir. `rethrow_arg_tests` has been converted to the post-LateEHPrepare form to be moved into cfg-stackify-eh.mir, like removing `CATCHRET` and such, because it does not really test anything in LateEHPrepare. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D97175
-
Alexey Bataev authored
Pointer operand of scatter loads does not remain scalar in the tree (it gest vectorized) and thus must not be marked as the scalar that remains scalar in vectorized form. Differential Revision: https://reviews.llvm.org/D96818
-
Geoffrey Martin-Noble authored
The config option for this changed in https://secure.phabricator.com/D21313 (or when that was rolled out). I'm leaving the old config option, which may be in use by people with older versions of arc. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D97215
-
Louis Dionne authored
The implementation of tuple's constructors and assignment operators currently diverges from the way the Standard specifies them, which leads to subtle cases where the behavior is not as specified. In particular, a class derived from a tuple-like type (e.g. pair) can't be assigned to a tuple with corresponding members, when it should. This commit re-implements the assignment operators (BUT NOT THE CONSTRUCTORS) in a way much closer to the specification to get rid of this bug. Most of the tests have been stolen from Eric's patch https://reviews.llvm.org/D27606. As a fly-by improvement, tests for noexcept correctness have been added to all overloads of operator=. We should tackle the same issue for the tuple constructors in a future patch - I'm just trying to make progress on fixing this long-standing bug. PR17550 rdar://15837420 Differential Revision: https://reviews.llvm.org/D50106
-
Heejin Ahn authored
- Fix `preds` comments - Delete nonexistent attributes in instructions (They used to exist in clang-generated files, but I removed most of them to make the tests tidy. We have only `nounwind` and `noreturn` left here.) - Add missing `Function Attrs` comments in function declarations None of these affect test function semantics or test results for now. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D97179
-
Jez Ng authored
-
Nathan James authored
Prevent warning when the values are initialized using fields that will be initialized later or VarDecls defined in the constructors body. Both of these cases can't be safely fixed. Also improve logic of finding where to insert member initializers, previously it could be confused by in class member initializers. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D97132
-
Geoffrey Martin-Noble authored
Followup to https://reviews.llvm.org/D97006 which broke the shared libs build because of a missing dependency. Differential Revision: https://reviews.llvm.org/D97213
-
Peyton, Jonathan L authored
This code alleviates some pathological loop parameters (lower, upper, stride) within calculations involved in the static loop code. It bounds the chunk size to the trip count if it is greater than the trip count and also minimizes problematic code for when trip count < nth. Differential Revision: https://reviews.llvm.org/D96426
-
Vivek authored
The current implementation of tilePerfectlyNested utility doesn't handle the non-unit step size. We have added support to perform tiling correctly even if the step size of the loop to be tiled is non-unit. Fixes https://bugs.llvm.org/show_bug.cgi?id=49188. Differential Revision: https://reviews.llvm.org/D97037
-
Peyton, Jonathan L authored
Only attempt shutdown if lpReserved is NULL. The Windows documentation states: When handling DLL_PROCESS_DETACH, a DLL should free resources such as heap memory only if the DLL is being unloaded dynamically (the lpReserved parameter is NULL). If the process is terminating (the lpReserved parameter is non-NULL), all threads in the process except the current thread either have exited already or have been explicitly terminated by a call to the ExitProcess function, which might leave some process resources such as heaps in an inconsistent state. In this case, it is not safe for the DLL to clean up the resources. Instead, the DLL should allow the operating system to reclaim the memory. Differential Revision: https://reviews.llvm.org/D96750
-
Peyton, Jonathan L authored
This patch limits the number of dispatch buffers (used for loop worksharing construct) to between 1 and 4096. Differential Revision: https://reviews.llvm.org/D96749
-
Petr Hosek authored
This reverts commits: 5ca21175 97184ab9 The instrprof-gc-sections.c is failing on AArch64 LLD bot.
-
Geoffrey Martin-Noble authored
This patch adds Linalg named ops for various types of integer matmuls. Due to limitations in the tc spec/linalg-ods-gen ops cannot be type polymorphic, so this instead creates new ops (improvements to the methods for defining Linalg named ops are underway with a prototype at https://github.com/stellaraccident/mlir-linalgpy). To avoid the necessity of directly referencing these many new ops, this adds additional methods to ContractionOpInterface to allow classifying types of operations based on their indexing maps. Reviewed By: nicolasvasilache, mravishankar Differential Revision: https://reviews.llvm.org/D97006
-
Benjamin Kramer authored
operands[2] can be nullptr here. I'm not able to build a lit test for this because of the commutative reordering of operands. It's possible to trigger this with a createOrFold<BroadcastOp> though. Differential Revision: https://reviews.llvm.org/D97206
-
Peyton, Jonathan L authored
Differential Revision: https://reviews.llvm.org/D96748
-
Vy Nguyen authored
Reland 1a0afcf5 https://reviews.llvm.org/D95913 New change: fix UB bug caused by copying empty path/name. (since the executable does not have a name)
-
Simon Pilgrim authored
-