- Apr 16, 2022
-
-
Mehdi Amini authored
-
Craig Topper authored
Most of insertelement constant folding is blocked if the vector type is scalable. I believe we can make an exception for inserting null into an all zeros vector. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D123413
-
Mogball authored
LICM is refactored into a utility that is application on any region. The implementation is moved to Transform/Utils.
-
Joseph Huber authored
The previous patch introduced the offloading binary format so we can store some metada along with the binary image. This patch introduces using this inside the linker wrapper and Clang instead of the previous method that embedded the metadata in the section name. Differential Revision: https://reviews.llvm.org/D122683
-
Joseph Huber authored
Summary: The changes in D122987 ensures that the offloading sections always have the SHF_EXCLUDE flag. This means that we do not need to manually strip these sections for ELF or COFF targets.
-
Matt Arsenault authored
Error on some of these other fields, since tracking down test cases for all of these at once is exhausting.
-
Matt Arsenault authored
-
Craig Topper authored
Checking opcode is cheap. hasOneUse might not be if the node has multiple results. By checking the opcode we can rule out nodes with multiple results we aren't interested in.
-
Stella Stamenova authored
This reverts commit 3131f808. This commit broke the Windows mlir bot: https://lab.llvm.org/buildbot/#/builders/13/builds/19745
-
Craig Topper authored
Checking the opcode is cheap, counting the number of uses is not.
-
Chris Bieneman authored
This change is a big blob of code that isn't easy to break up. It either comes in all together as a blob, works and has tests, or it doesn't do anything. Logically you can think of this patch as three things: (1) Adding virtual interfaces so the bitcode writer can be overridden (2) Adding a new bitcode writer implementation for DXIL (3) Adding some (optional) crazy CMake goop to build the DirectXShaderCompiler's llvm-dis as dxil-dis for testing Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D122082
-
Craig Topper authored
hasOneUse is not cheap on nodes with chain results that might have many uses. By checking the opcode first, we can avoid a costly walk of the use list on nodes we aren't interested in. Found by investigating calls to hasNUsesOfValue from the example provided in D123857.
-
Johannes Doerfert authored
-
Richard Smith authored
std::addressof, plus the libstdc++-specific std::__addressof. This brings us to parity with the corresponding GCC behavior. Remove STDBUILTIN macro that ended up not being used.
-
Peter Klausler authored
For parameterized derived type component initializers whose expressions' types depend on parameter values, f18's current scheme of analyzing the initialization expression once during name resolution fails. For example, type :: pdt(k) integer, kind :: k real :: component = real(0.0, kind=k) end type To handle such cases, it is necessary to re-analyze the parse trees of these initialization expressions once for each distinct initialization of the type. This patch adds code to wipe an expression parse tree of its typed expressions, and update those of its symbol table pointers that reference type parameters, and then re-analyze that parse tree to generate the properly typed component initializers. Differential Revision: https://reviews.llvm.org/D123728 -
Johannes Doerfert authored
Instead of lengthy constructors we can now set the members of a read-only struct before the Attributor is created. Should make it clearer what is configurable and also help introducing new options in the future. This actually added IsModulePass and avoids deduction through the Function set size. No functional change was intended.
-
Bill Wendling authored
-
Mogball authored
LICM is refactored into a utility that is application on any region. The implementation is moved to Transform/Utils.
-
Richard Smith authored
-
Pavel Kosov authored
Updated MipsInstPrinter to print absolute hex offsets for branch instructions. It is necessary to make the llvm-objdump output close to the gnu objdump output. This implementation is based on the implementation for RISC-V. OS Laboratory. Huawei Russian Research Institute. Saint-Petersburg Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D123764
-
Vitaly Buka authored
It's still disabled by default at compile time. Reviewed By: kstoimenov Differential Revision: https://reviews.llvm.org/D123875
-
Peter Klausler authored
Prior to this patch, the semantics utility GetExpr() will crash unconditionally if it encounters a typed expression in the parse tree that has not been set by expression semantics. This is the right behavior when called from lowering, by which time it is known that the program had no fatal user errors, since it signifies a fatal internal error. However, prior to lowering, in the statement semantics checking code, a more nuanced test should be used before crashing -- specifically, we should not crash in the face of a missing typed expression when in error recovery mode. Getting this right requires GetExpr() and its helper class to have access to the semantics context, so that it can check AnyFatalErrors() before crashing. So this patch touches nearly all of its call sites. Differential Revision: https://reviews.llvm.org/D123873
-
Richard Smith authored
We still require these functions to be declared before they can be used, but don't instantiate their definitions unless their addresses are taken. Instead, code generation, constant evaluation, and static analysis are given direct knowledge of their effect. This change aims to reduce various costs associated with these functions -- per-instantiation memory costs, compile time and memory costs due to creating out-of-line copies and inlining them, code size at -O0, and so on -- so that they are not substantially more expensive than a cast. Most of these improvements are very small, but I measured a 3% decrease in -O0 object file size for a simple C++ source file using the standard library after this change. We now automatically infer the `const` and `nothrow` attributes on these now-builtin functions, in particular meaning that we get a warning for an unused call to one of these functions. In C++20 onwards, we disallow taking the addresses of these functions, per the C++20 "addressable function" rule. In earlier language modes, a compatibility warning is produced but the address can still be taken. The same infrastructure is extended to the existing MSVC builtin `__GetExceptionInfo`, which is now only recognized in namespace `std` like it always should have been. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D123345
-
Florian Hahn authored
With opaque pointers, the stored value and address can be the same. Previously the code in VPWidenMemoryInstructionRecipe::onlyFirstLaneDemanded incorrectly considers stores with matching store and pointer operands as only demanding the first lane, causing a crash.
-
Chih-Ping Chen authored
specifying DW_AT_trampoline as a string. Also update the signature of DIBuilder::createFunction to reflect this addition. Differential Revision: https://reviews.llvm.org/D123697
-
Johannes Doerfert authored
This reverts commit 0d7f81e3, it caused the AMDGPU tests that use the Attributor to fail.
-
Lang Hames authored
-
River Riddle authored
Fix variable naming convention and cleanup a clang-tidy warning.
-
River Riddle authored
This technique results in an explosion in compile time, resulting from a huge number of std::tuple/concat instatiations. This technique is replaced by simpler metaprogramming and results in a signficant reduction in compile time. A local debug/asan build saw a 4x speed up in the processing of ArithmeticOps.h.inc, and given the nature of this change every dialect should see similar reductions in compile time. Differential Revision: https://reviews.llvm.org/D123360
-
Johannes Doerfert authored
-
Johannes Doerfert authored
When we run the CGSCC pass we should only invest time on the SCC. We can initialize AAs with information from the module slice but we should not update those AAs.
-
Johannes Doerfert authored
-
Johannes Doerfert authored
-
Lang Hames authored
Adds support for pointer encodings commonly used in large/static models, including non-pcrel, sdata/udata8, indirect, and omit. Also refactors pointer-encoding handling to consolidate error generation inside common functions, rather than callees of those functions.
-
Arthur Eubanks authored
-
Arjun P authored
Previously this checked if the entire symbolic numerator was divisible by the denominator, which is never the case when this function is called. Fixed this to check only the non-const coefficients in the numerator, which was what was intended and documented. Reviewed By: Groverkss Differential Revision: https://reviews.llvm.org/D123592
-
Bill Wendling authored
A randomized structure needs to use a designated or default initializer. Using a non-designated initializer will result in values being assigned to the wrong fields. Differential Revision: https://reviews.llvm.org/D123763
-
LLVM GN Syncbot authored
-
Thomas Raoux authored
extract was incorrectly folded when the source was coming from a broadcast that was both adding new rank and broadcasting the inner dimension. Differential Revision: https://reviews.llvm.org/D123867
-
Alexandre Ganea authored
When using LLVM_INTEGRATED_CRT_ALLOC, fix compiling with the latest snmalloc at ToT (https://github.com/microsoft/snmalloc).
-