- Mar 16, 2021
-
-
Zahira Ammarguellat authored
-
Melanie Blower authored
[clang][patch] Solve PR49479, File scope fp pragma should propagate to functions nested in struct, and initialization expressions Previously, the CurFPFeatures state was set to command line settings before semantic analysis of the nested member functions and initialization expressions, that's not correct, it should use the pragma state which is in effect at the lexical position. Reviewed By: Erich Keane, Aaron Ballman Differential Revision: https://reviews.llvm.org/D98211
-
Sanjay Patel authored
The motivating pattern was handled in 0a2d6948 , but we should have this for symmetry. But this really highlights that we could generalize for any shifted constant if we match this in instcombine. https://alive2.llvm.org/ce/z/MrmVNt
-
Sanjay Patel authored
-
- Mar 15, 2021
-
-
Edward Jones authored
This adds the compiler-rt entry points required by the -msave-restore option. Differential Revision: https://reviews.llvm.org/D91717
-
Thomas Preud'homme authored
__builtin_isinf currently generates a floating-point compare operation which triggers a trap when faced with a signaling NaN in StrictFP mode. This commit uses integer operations instead to not generate any trap in such a case. Reviewed By: mibintc Differential Revision: https://reviews.llvm.org/D97125
-
Martin Storsjö authored
Refresh the existing paragraphs on building in MSVC configurations, add a sample of one working configuration for MinGW, and add more details on what's necessary to run the tests these days. Differential Revision: https://reviews.llvm.org/D97166
-
LLVM GN Syncbot authored
-
Jon Chesterfield authored
[amdgpu] Implement lower function LDS pass Local variables are allocated at kernel launch. This pass collects global variables that are used from non-kernel functions, moves them into a new struct type, and allocates an instance of that type in every kernel. Uses are then replaced with a constantexpr offset. Prior to this pass, accesses from a function are compiled to trap. With this pass, most such accesses are removed before reaching codegen. The trap logic is left unchanged by this pass. It is still reachable for the cases this pass misses, notably the extern shared construct from hip and variables marked constant which survive the optimizer. This is of interest to the openmp project because the deviceRTL runtime library uses cuda shared variables from functions that cannot be inlined. Trunk llvm therefore cannot compile some openmp kernels for amdgpu. In addition to the unit tests attached, this patch applied to ROCm llvm with fixed-abi enabled and the function pointer hashing scheme deleted passes the openmp suite. This lowering will use more LDS than strictly necessary. It is intended to be a functionally correct fallback for cases that are difficult to target from future optimisation passes. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D94648
-
Kostya Kortchinsky authored
Since we are looking to remove the old Scudo, we have to have a .so for parity purposes as some platforms use it. I tested this on Fuchsia & Linux, not on Android though. Differential Revision: https://reviews.llvm.org/D98456
-
Tim Keith authored
The build was putting .mod files for intrinsic modules in tools/flang/include/flang but the install puts them in include/flang, as does the out-of-tree build. This confused things for the driver. This change makes the build consistent with the install and simplifies the flang script accordingly. Also, clean up the cmake commands for building the .mod files. Differential Revision: https://reviews.llvm.org/D98522
-
Simon Pilgrim authored
Fold SHUFFLE(BINOP(SHUFFLE(X),SHUFFLE(Y))) -> BINOP(SHUFFLE'(X),SHUFFLE'(Y)) style patterns as well as the existing shuffles of constants.
-
Vy Nguyen authored
%p reported prints upper case hex chars on Windows. The fix is to switch to using %#lx Differential Revision: https://reviews.llvm.org/D98570
-
David Green authored
This adds a pattern for i64 zext_inreg(i32 extract_vector_elt X), producing a single UMOVvi16 instruction that is already expected to clear the top bits. The exact pattern that this matches is and(anyext(vector_extract X, lane), 0xff), similar to the sext patterns higher up in the same file. Differential Revision: https://reviews.llvm.org/D98599
-
Dmitry Polukhin authored
For some reason the initial implementation of the check had an explicit check for the main file to avoid being applied in headers. This diff removes this check and add a test for the check on a header. Similar approach was proposed in D61989 but review there got stuck. Test Plan: added new test case Differential Revision: https://reviews.llvm.org/D97563
-
Nathan James authored
If a identifier has a correct prefix/suffix but a bad case, the fix won't strip them when computing the correct case, leading to duplication when the are added back. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D98521
-
Nathan James authored
Forwarding these means that if an r-value reference is passed, the matcher will be moved. However it appears this happens for each mapped node matcher, resulting in use-after-move issues. Reviewed By: steveire Differential Revision: https://reviews.llvm.org/D98497
-
Jan Svoboda authored
This attempts to fix a (non-deterministic) buffer overrun when parsing raw string literals during modular build. Similar fix to 4e5b5c36. Reviewed By: beccadax Differential Revision: https://reviews.llvm.org/D94950
-
Amy Kwan authored
This patch adds additional load/store test cases involving scalars, vectors, and PC-Rel in preparation for the refactored load and store implementation introduced in D93370. Differential Revision: https://reviews.llvm.org/D97391
-
Alex Zinenko authored
The commit in question moved some ops across dialects but did not update some of the target-specific integration tests that use these ops, presumably because the corresponding target hardware was not available. Fix these tests.
-
Wael Yehia authored
from D97507.
-
Muiez Ahmed authored
The aim is to define _LIBCPP_ELAST for z/OS libc++ since strerror/strerror_r can't handle out-of-range errno values. Differential Revision: https://reviews.llvm.org/D98541
-
Alex Zinenko authored
A previous commit moved multiple ops from Standard to MemRef dialect. Some of these ops are exercised in Python bindings. Enable bindings for the newly created MemRef dialect and update a test accordingly.
-
Nathan James authored
Add the `fixedPointLiteral`, `hasAnyBody` and `templateArgumentLoc` to the dynamic matcher registry. Reviewed By: steveire Differential Revision: https://reviews.llvm.org/D98556
-
Nathan James authored
Looks like a oversight when the matcher was added. Reviewed By: steveire Differential Revision: https://reviews.llvm.org/D98583
-
Luís Marques authored
This reverts commit a00347b5 due to a test failure on the `sanitizer-x86_64-linux-android` buildbot.
-
Anton Afanasyev authored
-
Nico Weber authored
Looks like this broke in one of the relands of https://reviews.llvm.org/D93164
-
Carl Ritson authored
When tracking defined lanes through phi nodes in the live range graph each branch of the phi must be handled independently. Also rewrite the marking algorithm to reduce unnecessary operations. Previously a shared set of defined lanes was used which caused marking to stop prematurely. This was observable in existing lit tests, but test patterns did not cover this detail. Reviewed By: piotr Differential Revision: https://reviews.llvm.org/D98614
-
Simon Pilgrim authored
Recommit rGcd938ab1 with an early-out if the pshub would introduce zeros across the binop.
-
Alex Zinenko authored
The patch in question broke the build with shared libraries due to missing dependencies, one of which would have been circular between MLIRStandard and MLIRMemRef if added. Fix this by moving more code around and swapping the dependency direction. MLIRMemRef now depends on MLIRStandard, but MLIRStandard does _not_ depend on MLIRMemRef. Arguably, this is the right direction anyway since numerous libraries depend on MLIRStandard and don't necessarily need to depend on MLIRMemref. Other otable changes include: - some EDSC code is moved inline to MemRef/EDSC/Intrinsics.h because it creates MemRef dialect operations; - a utility function related to shape moved to BuiltinTypes.h/cpp because it only realtes to shaped types and not any particular dialect (standard dialect is erroneously believed to contain MemRefType); - a Python test for the standard dialect is disabled completely because the ops it tests moved to the new MemRef dialect, but it is not exposed to Python bindings, and the change for that is non-trivial.
-
Bradley Smith authored
Differential Revision: https://reviews.llvm.org/D95677
-
Simon Pilgrim authored
Revert rG9ba577ec "[X86][SSE] canonicalizeShuffleWithBinOps - handle target shuffles. NFCI." Sorry this wasn't supposed to be committed yet (and certainly not tagged as NFCI....)
-
Nikita Popov authored
This reverts commit aa440ba2. This has a non-trivial compile-time impact: https://llvm-compile-time-tracker.com/compare.php?from=0c5b789c7342ee8384507c3242fc256e23248c4d&to=aa440ba24dc25e4c95f6dcf8ff647024f3b12661&stat=instructions I don't believe this is the correct way to address the issue in this case.
-
Simon Pilgrim authored
Fold SHUFFLE(BINOP(SHUFFLE(X),SHUFFLE(Y))) -> BINOP(SHUFFLE'(X),SHUFFLE'(Y)) style patterns as well as the existing shuffles of constants.
-
OCHyams authored
The test optnone-simple-functions.cpp added in D97668 fails on macOS. os.path.exists raises an exception because we pass it None. Guard against this. Related revision: https://reviews.llvm.org/D97668
-
Muhammad Omair Javaid authored
TestExitDuringExpression test_exit_before_one_thread_unwind fails sporadically on arm/linux. This seems like a thread timing issue. I am marking it skip for now.
-
Luís Marques authored
On 64-bit systems with small VMAs (e.g. 39-bit) we can't use `SizeClassAllocator64` parameterized with size class maps containing a large number of classes, as that will make the allocator region size too small (< 2^32). Several tests were already disabled for Android because of this. This patch provides the correct allocator configuration for RISC-V (riscv64), generalizes the gating condition for tests that can't be enabled for small VMA systems, and tweaks the tests that can be made compatible with those systems to enable them. Differential Revision: https://reviews.llvm.org/D97234
-
Stephen Kelly authored
Generate a json file containing descriptions of AST classes and their public accessors which return SourceLocation or SourceRange. Use the JSON file to generate a C++ API and implementation for accessing the source locations and method names for accessing them for a given AST node. This new API can be used to implement 'srcloc' output in clang-query: http://ce.steveire.com/z/m_kTIo The JSON file can also be used to generate bindings for other languages, such as Python and Javascript: https://steveire.wordpress.com/2019/04/30/the-future-of-ast-matching In this first version of this feature, only the accessors for Stmt classes are generated, not Decls, TypeLocs etc. Those can be added after this change is reviewed, as this change is mostly about infrastructure of these code generators. Also in this version, the platforms/cmake configurations are excluded as much as possible so that support can be added iteratively. Currently a break on any platform causes a revert of the entire feature. This way, the `OR WIN32` can be removed in a future commit and if it breaks the buildbots, only that commit gets reverted, making the entire process easier to manage. Differential Revision: https://reviews.llvm.org/D93164
-
Roman Lebedev authored
Normally, this function just doesn't bother about cycles, and hopes that the caller supplied small-enough depth so that at worst it will take a potentially large, but limited amount of time. But that obviously doesn't work if there is no depth limit. This reapples 36f1c3db, but without asserting, just bailout once cycle is detected.
-