- Jan 20, 2023
-
-
Florian Hahn authored
The scope of DT updates are very limited when unrolling loops: the DT should only need updating for * new blocks added * exiting blocks we simplified branches This can be done manually without too much extra work. MergeBlockIntoPredecessor also needs to be updated to support direct DT updates. This fixes excessive time spent in DTU for same cases. In an internal example, time spent in LoopUnroll with this patch goes from ~200s to 2s. It also is slightly positive for CTMark: * NewPM-O3: -0.13% * NewPM-ReleaseThinLTO: -0.11% * NewPM-ReleaseLTO-g: -0.13% Notable improvements are mafft (~ -0.50%) and lencod (~ -0.30%), with no workload regressed. https://llvm-compile-time-tracker.com/compare.php?from=78a9ee7834331fb4360457cc565fa36f5452f7e0&to=687e08d011b0dc6d3edd223612761e44225c7537&stat=instructions:u Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D141487
-
Matthias Springer authored
Upper bound and step size should be symbols instead of dims. Differential Revision: https://reviews.llvm.org/D142136
-
David Carlier authored
Reviewers: dvyukov Reviewed-By: dvyukov Differental Revision: https://reviews.llvm.org/D140688
-
Krzysztof Drewniak authored
Implement InferIntRangeInterface for all operations in the Index dialect. The inference implementation, unlike the one for Arith, accounts for the fact that Index can be either 64 or 32 bits long by evaluating both cases. Bounds are stored as if index were i64, but when inferring new bounds, we compute both f(...) and f(trunc(...)). We then compare trunc(f(...)) to f(trunc(...)). If they are equal in the relevant range components, we use the 64-bit range computation, otherwise we give the range ext(f(trunc(...))) union f(...). Note that this can cause surprising behavior as seen in the tests, where, for example, the order of min and max operations impacts the behavior of the inference. The inference could perhaps be made more precise in the future (ex. by tracking 32 and 64-bit results separately and having them influence each other somehow) butt, since my project targets an index=i32 platform and doesn't see index-valued values > uint32_max, I'm not too concerned about it. Depends on https://reviews.llvm.org/D141299 Depends on https://reviews.llvm.org/D141296 Reviewed By: Mogball Differential Revision: https://reviews.llvm.org/D140899
-
Xing Xue authored
Summary: This patch adds OpenMP runtime to the linker command line if -fopenmp is specifed for AIX. Reviewed by: daltenty Differential Revision: https://reviews.llvm.org/D141862
-
v1nh1shungry authored
Current version there is a fix-it for template <class> constexpr int x = 0; template <> constexpr int x<int>; // fix-it here but it will cause template <> constexpr int x = 0<int>; Differential Revision: https://reviews.llvm.org/D139705
-
Paul Robinson authored
This reverts commit a0f8bdbb. Several bots are failing in shtest-format.py, likely because of this.
-
Slava Zakharin authored
Reviewed By: jeanPerier, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D142070
-
Aaron Ballman authored
The std::optional implementation in MSVC causes this code to produce a sign comparison warning. This ensures the types are the same sign.
-
Michael Jones authored
This patch adds the %f/F/e/E/g/G/a/A conversions for scanf, as well as accompanying tests. This implementation matches the definition set forth in the standard, which may conflict with some other implementations. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D141091
-
Michael Jones authored
The scanf implementation needs a dynamically resizing string class. This patch adds a minimal version of that class along with tests to check the current functionality. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D141162
-
Kiran Chandramohan authored
-> Use file pathname from the Flang frontend. It is the frontend that is in-charge of finding the files and is hence the canonical source for paths. -> Convert pathname to absolute pathname while creating the moduleOp. Co-authored-by:
Peter Klausler <pklausler@nvidia.com> Reviewed By: PeteSteinfeld, vzakhari, jeanPerier, awarzynski Differential Revision: https://reviews.llvm.org/D141674
-
Mark de Wever authored
Implements parts of - P2286R8 Formatting Ranges Depends on D140653 Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D141761
-
LLVM GN Syncbot authored
-
Zino Benaissa authored
shuffle_vector instructions are serialized targeting SVE fixed vectors, see https://reviews.llvm.org/D139111. This patch disables optimizeExtendOrTruncateConversion peepholes that generates shuffle_vector. Differential Revision: https://reviews.llvm.org/D141439
-
Sjoerd Meijer authored
-
Mark de Wever authored
Implements parts of - P2286R8 Formatting Ranges Depends on D140653 Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D141290
-
Jonas Paulsson authored
Only allow replacements of nodes that have a single user. This is better as simple instructions (e.g. XGRK) are one cycle faster, and it helps in cases where both inputs share a common node. Review: Ulrich Weigand
-
Jordan Rupprecht authored
-
Jordan Rupprecht authored
This corresponds to the cmake change in 81ca5aa4
-
Paul Robinson authored
AFAICT all in-tree lit tests have been converted to use `target=...` and so there is no longer any need for triples being special. Some project config files still define their own features based on the triple, but those are normal feature words (although now are redundant with target= checks). Downstream tests that use triple substrings will need to convert. For example: UNSUPPORTED: -aix XFAIL: arm becomes UNSUPPORTED: target={{.*}}-aix{{.*}} XFAIL: target=arm{{.*}} You can do git log --grep "special handling for triples" to find many examples of updates to the upstream tests. https://discourse.llvm.org/t/rfc-lits-requires-and-triples/66041 Differential Revision: https://reviews.llvm.org/D141007 -
Valentin Clement authored
Pointer association to unlimited polymorphic target is allowed for unlimited polymorphic pointer and non-extensible derived-type. This is checked by the semantic and this patch allows it in the fir.rebox operation. Reviewed By: jeanPerier, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D142104
-
Valentin Clement authored
Result must carry the polymorphic type information from the source. Reviewed By: jeanPerier, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D142095
-
Valentin Clement authored
CLASS DEFAULT needs to be the last attribute when fir.select_type op is created. It needs to be at its actual position in the Fortran code when the TypeGuardStmt are processed. The current lowering was crashing when CLASS DEFAULT was not at the last position. This patch fixes the issue by tracking the actual position of the CLASS DEFAULT type guard and set it at the correct position after the fir.select_type op is created. Reviewed By: jeanPerier, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D142091
-
LLVM GN Syncbot authored
-
Mark de Wever authored
Implements parts of - P2286R8 Formatting Ranges - P2585R0 Improving default container formatting Depends on D140651 Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D140653
-
Nikita Popov authored
By switching to --check-globals. Also make sure that the !tbaa.struct metadata mapping is preserved.
-
Haojian Wu authored
-
Matt Devereau authored
Expanding upon https://reviews.llvm.org/D138203, allow null indices in InsertElts to be matched with any value and be duplicated if the fixed vector the scalar values are inserted into is poison, and the scalable vector the subvector being inserted into is poison. Differential Revision: https://reviews.llvm.org/D141846
-
- Jan 19, 2023
-
-
Yitzhak Mandelbaum authored
Currently, the code assumes that all boolean-typed values are an instance of `BoolValue` (or its subclasses). Yet, lvalues violate this assumption. This patch drops the assumption and strengthens the check to confirm the shape of both values being joined. The patch also notes as FIXMES a number of problems discovered fixing this bug. Differential Revision: https://reviews.llvm.org/D141709
-
Jean Perier authored
Compare to other component ref lowering, the hlfir.designate result type computation is different, and the allocatable/pointer/contiguous must be set on the hlfir.designate so that the component attributes are kept in the IR. Differential Revision: https://reviews.llvm.org/D142111
-
Nikita Popov authored
If we're only changing the type of the load, preserve the noundef metadata.
-
Kelvin Li authored
This patch is to diagnose the case when a type bound procedure is passed as an actual procedure argument. call sub0(t%t3%t2%t%info1) Fix: https://github.com/llvm/llvm-project/issues/55826 Committed on behalf of DanielCChen Differential Revision: https://reviews.llvm.org/D141506
-
Nikita Popov authored
The !noundef metadata is currently dropped.
-
David Green authored
As Armv9-a implies SVE2 it implies SVE (added in D141411) and so it should also imply FP16, which this patch adds. This helps get the target features correct when using `target("arch=armv9-a")` attributes. There is also an adjustment to AssertSameExtensionFlags in this patch to make it print cpu names, useful when the TargetParser unit tests are run through lit to distinguish which cpu is failing. Differential Revision: https://reviews.llvm.org/D142087 -
Guilherme Valarini authored
The entries inside a "target data end" is processed in three steps: 1. Query internal data maps for the entries and dispatch any necessary device-side operations (i.e., data retrieval); 2. Synchronize the such operations; 3. Update the host-side pointers and remove any entry which reference counter reached zero. Such steps may be executed by multiple threads which may even operate on the same entries. The current implementation (D121058) tries to synchronize these threads by tracking the "owner" for the deletion of each entry using their thread ID. Unfortunately it may failed to do so because of the following reasons: 1. The owner is always assigned at the first step only if the reference count is 0 when the map is queried. This does not work when such owner thread is faster than a previous one that is also processing the same entry on another "target data end", leading to user-after-free problems. 2. The entry is only added for post-processing (step 3) if its reference count was 0 at query time (step 1). This does not allow for threads to exchange responsibility for the deletion, leading again to user-after-free problems. 3. An entry may appear multiple times in the arguments array of a "target data end", which may lead to deleting the entry prematurely, leading, again, to user-after-free problems. This patch addresses these problems by tracking all the threads that are using an entry at "target data end" region through a counter, ensuring only the last one deletes it when needed. It also ensures that all entries that are successfully found inside the data maps in step 1 are also processed in step 3, regardless if their reference count was zeroed or not at query time. This ensures the deletion ownership may be passed to any thread that is using such entry. Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D132676 -
Ben Mudd authored
DexExpectStepOrder uses the line to expect a debugger step from the actual line of the command in the Dexter source file. Now Dexter scripts have mainly moved to thier own script files instead of the actual source, there should be a option to override this behaviour to choose your own debugger step location. Reviewed By: Orlando Differential Revision: https://reviews.llvm.org/D142099
-
Nikita Popov authored
And regenerate test checks to pick up new names.
-
Nikita Popov authored
I made a typo here, this was supposed to be !align rather than !aligned. But then !align can only be applied to loads, not calls (where one would use the return attribute instead). And freeze can't be pushed through loads anyway, so there's no way to test this case (same as !nonnull).
-
Yitzhak Mandelbaum authored
Also adds uses of the new printing in analysis inner loop. Differential Revision: https://reviews.llvm.org/D141716
-