- Sep 19, 2023
-
-
Maksim Panchenko authored
Minor refactoring to delete redundant code. Reviewed By: jobnoorman Differential Revision: https://reviews.llvm.org/D159525
-
Maksim Panchenko authored
Memoize SymbolRef::getAddress() for sorting symbol table entries by their address. Saves about 10 seconds of processing time on large binaries with over 2 million symbols. NFCI. Reviewed By: jobnoorman, Amir Differential Revision: https://reviews.llvm.org/D159524
-
Peter Klausler authored
…e pointer The procedure characterization package correctly characterizes the result of a reference to a function that returns a procedure pointer. In the event of a result that is a pointer to a function that itself is a procedure pointer, the code in pointer assignment semantics checking was mistakenly using that result's procedure characteristics as the characteristics of the original function reference. This is just wrong; delete it.
-
Zequan Wu authored
-
Nico Weber authored
-
Slava Zakharin authored
-
Arjun P authored
This reverts commit efca035c. Reverting due to windows build bot failure: https://lab.llvm.org/buildbot/#/builders/13/builds/40242/steps/6/logs/stdio
-
Hui authored
The helper function `__pair_like_explicit_wknd` is only SFINAE-ed with `tuple_size<remove_cvref_t<_PairLike>>::value == 2`, but its function body assumes `std::get` being valid. Fixes #65620
-
Craig Topper authored
-
walter erquinigo authored
This test was reported as failing by https://lab.llvm.org/buildbot/#/builders/68/builds/60172. The fix is very simple. We need to invoke the correct setting.
-
Yingwei Zheng authored
-
Kazu Hirata authored
This patch fixes a warning: flang/runtime/edit-input.cpp:27:20: error: unused function 'IsListDirectedFieldComplete' [-Werror,-Wunused-function]
-
Abhinav271828 authored
The method implementations remain in the .cpp file; explicit instantiations have been added for these two types. makeMatrix has been duplicated to makeIntMatrix and makeFracMatrix.
-
Peter Klausler authored
When a COMMON block object has a derived type that is part of a set of mutually-dependent types with other members, the compiler loops. Fixes https://github.com/llvm/llvm-project/issues/65572.
-
Konstantina Mitropoulou authored
[NewGVN] Set parent to the temporal instructions that are generated during phi-of-ops optimization (#66314) - Test for future commit in NewGVN - [NewGVN] Set parent to the temporal instructions that are generated during phi-of-ops optimization
-
Nicolas Vasilache authored
…cast) expansion This revision adds a rewrite for sequences of vector `ext(bitcast)` to use a more efficient sequence of vector operations comprising `shuffle` and `bitwise` ops. Such patterns appear naturally when writing quantization / dequantization functionality with the vector dialect. The rewrite performs a simple enumeration of each of the bits in the result vector and determines its provenance in the source vector. The enumeration is used to generate the proper sequence of `shuffle`, `andi`, `ori` with shifts`. The rewrite currently only applies to 1-D non-scalable vectors and bails out if the final vector element type is not a multiple of 8. This is a failsafe heuristic determined empirically: if the resulting type is not an even number of bytes, further complexities arise that are not improved by this pattern: the heavy lifting still needs to be done by LLVM.
-
Yingwei Zheng authored
-
Slava Zakharin authored
This patch adds `host_assoc` attribute for operations that implement FortranVariableInterface (e.g. `hlfir.declare`). The attribute is used by the alias analysis to make better conclusions about memory overlap. For example, a dummy argument of an inner subroutine and a host's variable used inside the inner subroutine cannot refer to the same object (if the dummy argument does not satisify exceptions in F2018 15.5.2.13). This closes a performance gap between HLFIR optimization pipeline and FIR ArrayValueCopy for Polyhedron/nf.
-
Peter Klausler authored
…lues Emit an error at runtime when a list-directed input value is not followed by a value separator or end of record. Previously, the runtime I/O library was consuming as many input characters that were valid for the type of the value, and leaving any remaining characters for the next input edit, if any.
-
Adrian Prantl authored
-
Aart Bik authored
This fixes a merge conflict in https://github.com/llvm/llvm-project/pull/66563
-
Walter Erquinigo authored
As suggested by Greg in https://github.com/llvm/llvm-project/pull/66534, I'm adding a setting at the Target level that controls whether to show leading zeroes in hex ValueObject values. This has the benefit of reducing the amount of characters displayed in certain interfaces, like VSCode.
-
Jon Roelofs authored
This reverts commit 003bcad9. ARM folks say it regresses some of their benchmarks: https://github.com/llvm/llvm-project/pull/66434#issuecomment-1722424162
-
Zequan Wu authored
Only InstrProfSymtab is needed to retrieve function names when debug info corrletaion is enabled.
-
Philip Reames authored
When checking to see if our index expressions can be converted into strided operations, we previously gave up if the index type wasn't an exact match for the intptrty for the address. Per gep semantics, this mismatch implies a sext or trunc cast to the respective index type. For constants, go ahead and evaluate that cast instead of giving up. Note that the motivation of this is mostly test cleanup. We canonicalize at IR such that the gep index will match the intptrty. This is mostly useful so that we can write both RV32 and RV64 tests from the same source. Its also helpful in preventing confusion - I've stumbled across this at least four times now and wasted time each one. Note: The test change for scatters unit stride cases contains a minor regression for rv32 and 64 bit indices. This is an artifact of order in which changes are landing. This will be addressed in a near future change for all configurations.
-
Peter Klausler authored
When the old extension of D debug lines in fixed form source is enabled, recognize continuation lines that begin with a D. (No test is added, since the community's driver doesn't support the GNU Fortran option -fd-lines-as-code.)
-
Peter Klausler authored
The rewriting of the extension intrinsic function SIZEOF was producing results that would reference symbols that were not available in the current scope, leading to crashes in lowering. The symbols could be function result variables, for SIZEOF(func()), or bare derived type component names, for SIZEOF(array(n)%component). Fixing this without regressing on a current test case involved careful threading of some state through the TypeAndShape characterization code and the shape/bounds analyzer, and some clean-up was done along the way.
-
Philip Reames authored
-
pawosm-arm authored
The Z#_HI register definitions were created during the very early SVE enablement work and before the SVE calling convention was locked in. As they look entirely unused, they need to go.
-
Craig Topper authored
If the SRL for Hi constant folds, but we don't remoe those bits from the Lo, we can end up with strange constant folding through DAGCombine later. I've only seen this with constants being lowered to constant pools during lowering on RISC-V.
-
Craig Topper authored
On the first split we create two i32 trunc stores and a srl to shift the high part down. The srl gets constant folded, but to produce a new i32 constant. But the truncstore for the low store still uses the original constant. This original constant then gets converted to a constant pool before we revisit the stores to further split them. The constant pool prevents further constant folding of the additional srls. After legalization is done, we run DAGCombiner and get some constant folding of srl via computeKnownBits which can peek through the constant pool load. This can create new constants that also need a constant pool.
-
Alexander Richardson authored
When running multiple shards in parallel, one shard might write to the cache while another one is reading this cache. Instead of updating the file in place, write to a temporary file and swap the cache file using os.replace(). This is an atomic operation and means shards will either see the old state or the new one.
-
Aart Bik authored
This is a minor step towards deprecating bufferization.alloc_tensor(). It replaces the examples with tensor.empty() and adjusts the underlying rewriting logic to prepare for this upcoming change.
-
- Sep 18, 2023
-
-
Craig Topper authored
The intrinsic uses ImmArg so TargetConstant would be consistent with how other intrinsics are handled. This hides the constants from type legalization so we can remove the promotion support. isel patterns are updated accordingly.
-
Peter Klausler authored
Fold references to the (relatively new) intrinsic function NORM2 at compilation time when the argument(s) are all constants. (Getting this done right involved some changes to the API of the accumulator function objects used by the DoReduction<> template, which rippled through some other reduction function folding code.)
-
Lukas Sommer authored
Use the recently introduced llvm.mlir.zero operation for values with LLVM target extension type. Replaces the previous workaround that uses a single zero-valued integer attribute constant operation. Signed-off-by:Lukas Sommer <lukas.sommer@codeplay.com>
-
Peter Klausler authored
The runtime implementation for INQUIRE(EXIST=x) is returning .TRUE. for all non-existent unit, which is incorrect for valid unit numbers.
-
Philip Reames authored
This is a fix for a subset of legalization problems around 64 bit indices on rv32 targets. For RV32+V, we were using the wrong mask type for the manual truncation lowering for fixed length vectors. Instead, just use the generic TRUNCATE node, and let it be lowered as needed. Note that legalization is still broken for rv32+zve32. That appears to be a different issue.
-
Nikita Popov authored
This reverts commit 47324cfd. This exposed incorrect debuginfo in rustc. Revert the verification until this has been fixed.
-
Peter Klausler authored
The POINTER= and TARGET= arguments to the intrinsic function ASSOCIATED() can be the results of references to functions that return object pointers or procedure pointers. NULL() was working well but not program-defined pointer-valued functions. Correct the validation of ASSOCIATED() and extend the infrastructure used to detect and characterize procedures and pointers.
-