- May 11, 2021
-
-
Artem Dergachev authored
D96215 takes care of the situation where the variable is captured into a nearby lambda. This patch takes care of the situation where the current function is the lambda and the variable is one of its captures from an enclosing scope. The analogous problem for ^{blocks} is already handled automagically by D96215. Differential Revision: https://reviews.llvm.org/D101787 -
Artem Dergachev authored
The utility function clang::tidy::utils::hasPtrOrReferenceInFunc() scans the function for pointer/reference aliases to a given variable. It currently scans for operator & over that variable and for declarations of references to that variable. This patch makes it also scan for C++ lambda captures by reference and for Objective-C block captures. Differential Revision: https://reviews.llvm.org/D96215
-
Roman Lebedev authored
As measured by exegesis, and confirmed by ref docs. Still not zero-cycle :)
-
Roman Lebedev authored
-
Roman Lebedev authored
As measured by exegesis, and confirmed by ref docs. Again, it's not zero-cycle.
-
Roman Lebedev authored
-
Roman Lebedev authored
As measured by exegesis, and confirmed by ref docs. Much like with MMX PCMP, it does actually have to execute, though.
-
Roman Lebedev authored
-
Roman Lebedev authored
They are, however, not zero-cycle, and do actually execute. As measured by exegesis, and confirmed by ref docs.
-
Roman Lebedev authored
-
Christopher Di Bella authored
`weak_equality` and `strong_equality` were removed before being standardised, and need to be removed. Also adjusts `common_comparison_category` since its test needed adjusting due to the equality deletions. Differential Revision: https://reviews.llvm.org/D100283
-
Arthur Eubanks authored
It is an order of magnitude slower than the second slowest test according to obj/llvm/test/.lit_test_times.txt. The two slowest are: 2.870437e+02 CodeGen/PowerPC/aix-xcoff-huge-relocs.ll 2.850697e+01 tools/llvm-readobj/ELF/file-header-machine-types.test Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D102190
-
Stella Laurenzo authored
Differential Revision: https://reviews.llvm.org/D102189
-
Stella Laurenzo authored
Differential Revision: https://reviews.llvm.org/D102184
-
Nikita Popov authored
Let's say you represent (i32, i32) as an i64 from which the parts are extracted with lshr/trunc. Then, if you compare two tuples by parts you get something like A[0] == B[0] && A[1] == B[1], just that the part extraction happens by lshr/trunc and not a narrow load or similar. The fold implemented here reduces such equality comparisons by converting them into a comparison on a larger part of the integer (which might be the whole integer). It handles both the "and of eq" and the conjugated "or of ne" case. I'm being conservative with one-use for now, though this could be relaxed if profitable (the base pattern converts 11 instructions into 5 instructions, but there's quite a few variations on how it can play out). Differential Revision: https://reviews.llvm.org/D101232
-
Florian Hahn authored
This patch adds support for Darwin's libsystem math vector functions to TLI. Darwin's libsystem provides a range of vector functions for libm functions. This initial patch only adds the 2 x double and 4 x float versions, which are available on both X86 and ARM64. On X86, wider vector versions are supported as well. Reviewed By: jroelofs Differential Revision: https://reviews.llvm.org/D101856
-
Sam Clegg authored
This change adds support for a new WASM_SEG_FLAG_STRINGS flag in the object format which works in a similar fashion to SHF_STRINGS in the ELF world. Unlike the ELF linker this support is currently limited: - No support for SHF_MERGE (non-string merging) - Always do full tail merging ("lo" can be merged with "hello") - Only support single byte strings (p2align 0) Like the ELF linker merging is only performed at `-O1` and above. This fixes part of https://bugs.llvm.org/show_bug.cgi?id=48828, although crucially it doesn't not currently support debug sections because they are not represented by data segments (they are custom sections) Differential Revision: https://reviews.llvm.org/D97657 -
Arthur Eubanks authored
For opaque pointers, we're trying to avoid uses of PointerType::getElementType(). A couple of ISel places use PointerType::getElementType(). Some of these are easy to fix by using ArgListEntry's indirect types. The inalloca type wasn't stored there, as opposed to preallocated and byval which have their indirect types available, so add it and use it. Differential Revision: https://reviews.llvm.org/D101713
-
Lang Hames authored
-
Nikita Popov authored
Instead of using VMap, which may include instructions from the caller as a result of simplification, iterate over the (FirstNewBlock, Caller->end()) range, which will only include new instructions. Fixes https://bugs.llvm.org/show_bug.cgi?id=50270. Differential Revision: https://reviews.llvm.org/D102110
-
Mitch Phillips authored
This patch does a few cleanup things: 1. The non-standalone scudo has a problem where GWP-ASan allocations may not meet alignment requirements where Scudo was requested to have alignment >= 16. Use the new GWP-ASan API to fix this. 2. The standalone variant loses some debugging information inside of GWP-ASan because we ask GWP-ASan to allocate an aligned size in the frontend. This means reports end up with 'UaF on a 16-byte allocation' for a 1-byte allocation with 16-byte alignment. Also use the new API to fix this. 3. Add post-alloc hooks for GWP-ASan intercepted allocations, and add stats tracking for GWP-ASan allocations. 4. Add a small test that checks the alignment of the frontend allocator, so that it can be used under GWP-ASan torture mode. 5. Add GWP-ASan torture mode as a testing configuration to catch these regressions. Depends on D94830, D95889. Reviewed By: cryptoad Differential Revision: https://reviews.llvm.org/D95884
-
Aart Bik authored
A very elaborate, but also very fun revision because all puzzle pieces are finally "falling in place". 1. replaces lingalg annotations + flags with proper sparse tensor types 2. add rigorous verification on sparse tensor type and sparse primitives 3. removes glue and clutter on opaque pointers in favor of sparse tensor types 4. migrates all tests to use sparse tensor types NOTE: next CL will remove *all* obsoleted sparse code in Linalg Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D102095
-
Jez Ng authored
We had a hardcoded check and a stale TODO, written back when we only had support for one architecture. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D102154
-
Jez Ng authored
In particular, we should apply the `-undefined` behavior to all such symbols, include those that are specified via the command line (i.e. `-e`, `-u`, and `-exported_symbol`). ld64 supports this too. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D102143
-
Jez Ng authored
* Remove unnecessary `rm -rf %t`s * Have lc-linker-option.ll use the right comment marker
-
Stefan Pintilie authored
If spills are to registers instead of to the stack then a copy will be used and frame index scavenging is not required. This patch adds debug info to frame index scavenging and makes sure that spilling to registers does not cause frame index scavenging. Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D101360
-
Arthur Eubanks authored
Parameter attributes are considered part of the function [1], and like mismatched calling conventions [2], we can't have the verifier check for mismatched parameter attributes. [1] https://llvm.org/docs/LangRef.html#parameter-attributes [2] https://llvm.org/docs/FAQ.html#why-does-instcombine-simplifycfg-turn-a-call-to-a-function-with-a-mismatched-calling-convention-into-unreachable-why-not-make-the-verifier-reject-it Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D101806
-
Lei Zhang authored
According to the API contract, LinalgLoopDistributionOptions expects to work on parallel iterators. When getting processor information, only loop ranges for parallel dimensions should be fed in. But right now after generating scf.for loop nests, we feed in *all* loops, including the ones materialized for reduction iterators. This can cause unexpected distribution of reduction dimensions. This commit fixes it. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D102079
-
Siva Chandra Reddy authored
This reverts commit 541f1078 as the bots are failing with unknown architecture "x86-64-v*". Will let the original author decide on the right course of action to correct the problem and reland.
-
Mitch Phillips authored
GWP-ASan is the "production" variant as compiled by compiler-rt, and it's useful to be able to benchmark changes in GWP-ASan or Scudo's GWP-ASan hooks across versions. GWP-ASan is sampled, and sampled allocations are much slower, but given the amount of allocations that happen under test here - we actually get a reasonable representation of GWP-ASan's negligent performance impact between runs. Reviewed By: cryptoad Differential Revision: https://reviews.llvm.org/D101865
-
Craig Topper authored
These are required to be constants, this patch makes sure they are in the accepted range of values. These are usually created by wrappers in the riscv_vector.h header which should always be correct. This patch protects against a user using the builtin directly. Reviewed By: khchen Differential Revision: https://reviews.llvm.org/D102086
-
Amara Emerson authored
For contiguous ranges we drop the last bit-test case but in doing so we skip adding the new MBB PHI edges to the list of replacement PHI edges, and as a result we incorrectly omit them in the G_PHI in finishPendingPhis(). Was found when bootstrapping clang with -O3 and GlobalISel enabled on Apple Silicon.
-
Sanjay Patel authored
This is better no-functional-change-intended than the 1st attempt. As noted in D102002, there were at least 2 diffs that went unchecked in pass manager regressions tests: different pass parameters (SimplifyCFG) and an extension point/callback. Those should be lifted from the original code blocks correctly now.
-
Stella Laurenzo authored
* This was left out of the previous commit accidentally. Differential Revision: https://reviews.llvm.org/D102183
-
Roman Lebedev authored
They measure as having the same effect as 32-bit CMP.
-
Roman Lebedev authored
-
Simon Pilgrim authored
[X86][AVX] Add example of failure to remove a 256-bit permute(hadd(hadd(),hadd())) shuffle by reordering the packed operands.
-
Simon Pilgrim authored
[X86][SSE] canonicalizeShuffleMaskWithHorizOp - add TODO for better 256/512-bit shuffle+hop folding support. NFC.
-
Fangrui Song authored
The rebase table entry is untested. Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D102150
-
Andy Kaylor authored
Patch by Artem Radzikhovskyy! Allow delinearization of fixed sized arrays if we can prove that the GEP indices do not overflow the array dimensions. The checks applied are similar to the ones that are used for delinearization of parametric size arrays. Make sure that the GEP indices are non-negative and that they are smaller than the range of that dimension. Changes Summary: - Updated the LIT tests with more exact values, as we are able to delinearize and apply more exact tests - profitability.ll - now able to delinearize in all cases, no need to use -da-disable-delinearization-checks flag and run the test twice - loop-interchange-optimization-remarks.ll - in one of the cases we are able to delinearize without using -da-disable-delinearization-checks - SimpleSIVNoValidityCheckFixedSize.ll - removed unnecessary "-da-disable-delinearization-checks" flag. Now can get the exact answer without it. - SimpleSIVNoValidityCheckFixedSize.ll and PreliminaryNoValidityCheckFixedSize.ll - made negative tests more explicit, in order to demonstrate the need for "-da-disable-delinearization-checks" flag Differential Revision: https://reviews.llvm.org/D101486
-