- Sep 02, 2020
-
-
David Stenberg authored
When marking a global variable constant, and simplifying users using CleanupConstantGlobalUsers(), the pass could incorrectly return false if there were still some uses left, and no further optimizations was done. This was caught using the check introduced by D80916. This fixes PR46749. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D85837
-
Jakub Lichman authored
Added 128 byte alignment to alloc ops created in VectorToSCF pass. 128b alignment was already introduced to this pass but not to all alloc ops. This commit changes that by adding 128b alignment to the remaining ops. The point of specifying alignment is to prevent possible memory alignment errors on weakly tested architectures. Differential Revision: https://reviews.llvm.org/D86454
-
Venkataramanan Kumar authored
These transforms will now be performed irrespective of the number of uses for the expression "1.0/sqrt(X)": 1.0/sqrt(X) * X => X/sqrt(X) X * 1.0/sqrt(X) => X/sqrt(X) We already handle more general cases, and we are intentionally not creating extra (and likely expensive) fdiv ops in IR. This pattern is the exception to the rule because we always expect the Backend to reduce X/sqrt(X) to sqrt(X), if it has the necessary (reassoc) fast-math-flags. Ref: DagCombiner optimizes the X/sqrt(X) to sqrt(X). Differential Revision: https://reviews.llvm.org/D86726
-
Sanjay Patel authored
This is an enhancement to D81766 to allow loading the minimum target vector type into an IR vector with a different number of elements. In one of the motivating tests from PR16739, SLP creates <2 x float> load ops mixed with <4 x float> insert ops, so we want to handle that pattern in addition to potential oversized vectors created by the vectorizers. For now, we are assuming the insert/extract subvector with undef is free because there is no exact corresponding TTI modeling for that. Differential Revision: https://reviews.llvm.org/D86160
-
Daniel Grumberg authored
Once the new option parsing system is committed, this will allow to generate a check to ensure that correct command line generation happens Differential Revision: https://reviews.llvm.org/D86290
-
Max Kazantsev authored
-
Ehsan Toosi authored
In this PR, the users of BufferPlacement can configure BufferAssginmentTypeConverter. These new configurations would give the user more freedom in the process of converting function signature, and return and call operation conversions. These are the new features: - Accepting callback functions for decomposing types (i.e. 1 to N type conversion such as unpacking tuple types). - Defining ResultConversionKind for specifying whether a function result with a certain type should be appended to the function arguments list or should be kept as function result. (Usage: converter.setResultConversionKind<MemRefType>(AppendToArgumentList)) - Accepting callback functions for composing or decomposing values (i.e. N to 1 and 1 to N value conversion). Differential Revision: https://reviews.llvm.org/D85133 -
Paul Walker authored
When lowering fixed length vector operations for SVE the subvector operations are used extensively to marshall data between scalable and fixed-length vectors. This means that sequences like: extract_subvec(binop(insert_subvec(a), insert_subvec(b))) are very common. DAGCombine only checks if the resulting binop is legal or can be custom lowered when undoing such sequences. When it's custom lowering that is introducing them the result is an infinite legalise->combine->legalise loop. This patch extends the isOperationLegalOr... functions to include a "LegalOnly" parameter to restrict the check to legal operations only. Although isOperationLegal could be used it's common for the affected code paths to be visited pre and post legalisation, so the extra parameter keeps the code tidy. Differential Revision: https://reviews.llvm.org/D86450
-
Jay Foad authored
The addend in a REL32 reloc needs to be adjusted to account for the offset from the PC value returned by the s_getpc instruction to the point where the reloc is applied. This was being done correctly for (GOTPC)REL32_LO but not for (GOTPC)REL32_HI. This will only make a difference if the target symbol happens to get loaded almost exactly a multiple of 4G away from the relocated instructions. Differential Revision: https://reviews.llvm.org/D86938
-
Sander de Smalen authored
Unwinders may only preserve the lower 64bits of Neon and SVE registers, as only the registers in the base ABI are guaranteed to be preserved over the exception edge. The caller will need to preserve additional registers for when the call throws an exception and the unwinder has tried to recover state. For e.g. svint32_t bar(svint32_t); svint32_t foo(svint32_t x, bool *err) { try { bar(x); } catch (...) { *err = true; } return x; } `z0` needs to be spilled before the call to `bar(x)` and reloaded before returning from foo, as the exception handler may have clobbered z0. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D84737 -
Igor Kudrin authored
As stated in section 6.1.1.2, DWARFv5, p. 142, | The last entry for each name is followed by a zero byte that | terminates the list. There may be gaps between the lists. The patch changes emitting a 4-byte zero value to a 1-byte one, which effectively removes the gap between entry lists, and thus saves approximately 3 bytes per name; the calculation is not exact because the total size of the table is aligned to 4. Differential Revision: https://reviews.llvm.org/D86927
-
Igor Kudrin authored
The member is not in use; the unit length for the table is emitted as a difference between two labels. Moreover, the type of the member might be misleading, because for DWARF64 the field should be 64 bit long. Differential Revision: https://reviews.llvm.org/D86912
-
Martin Storsjö authored
-
Benjamin Kramer authored
Otherwise we'll silently miscompile things. Differential Revision: https://reviews.llvm.org/D86951
-
Simon Pilgrim authored
This patch uses partial DemandedElts masks to further simplify target shuffle chains and finally starts making target shuffle combining part of SimplifyDemandedBits/SimplifyDemandedVectorElts. We already manage this for Depth == 0 cases, where combineX86ShuffleChain would early-out if the shuffle combined to the same op, but the patch generalizes this by manipulating the depth handling of combineX86ShufflesRecursively - calling with a new Depth = 0 and reducing the maximum shuffle combine depth accordingly. Differential Revision: https://reviews.llvm.org/D66004
-
Raphael Isemann authored
This reverts commit 99f3b231. It breaks libcxx/modules/stds_include.sh.cpp on macOS as the new include to sys/cdefs.h causes a dependency from __config to the Darwin module (which already has a dependency on __config). This cyclic dependency breaks compiling the std module which breaks compiling pretty much every program with ToT libc++ and enabled modules. I'll revert for now to get the bots green again. Sorry for the inconvenience.
-
Shinji Okumura authored
This patch makes it possible for AAUB to use information from AANoUndef. This is the next patch of D86983 Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D86984
-
Shinji Okumura authored
When the associated value is undef, we immediately forced to indicate a pessimistic fixpoint so far. This patch changes the initialization to check the attribute given in IR at first and to indicate an optimistic fixpoint when it is given. This change will enable us to catch , for example, the following case in AAUB. ``` call void @foo(i32 noundef undef) ``` Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D86983
-
ZHANG Hongbin authored
Based on the PyType and PyConcreteType classes, this patch implements the bindings of Complex Type, Vector Type and Tuple Type subclasses. For the convenience of type checking, this patch defines a `mlirTypeIsAIntegerOrFloat` function to check whether the given type is an integer or float type. These three subclasses in this patch have similar binding strategy: - The function pointer `isaFunction` points to `mlirTypeIsA***`. - The `mlir***TypeGet` C API is bound with the `get_***` method in the python side. - The Complex Type and Vector Type check whether the given type is an integer or float type. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D86785
-
Zi Xuan Wu authored
Before upstream a new target called CSKY, make a new triple of that called Triple::csky. For now, it's a 32-bit little endian target and the detail can be referred at D86269. This is the split part of D86269, which add a new target called CSKY. Differential Revision: https://reviews.llvm.org/D86505
-
Fangrui Song authored
In GNU ld, gold and LLD, --no-allow-shlib-undefined is the default when linking an executable. The option disallows unresolved symbols in shared objects. (gold and LLD catch fewer cases than GNU ld. See D57385 for details) See D57569 why it is bad idea to use --allow-shlib-undefined for executables [a]. GNU ld traditionally copied DT_NEEDED entries transitively. This was deemed not good, so GNU ld 2.22 defaulted to --no-copy-dt-needed-entries. gold and LLD always behave like --no-copy-dt-needed-entries. rL221530 added -Wl,-allow-shlib-undefined to make some old releases of GNU ld's --no-copy-dt-needed-entries to actually work. Due to [a] and [b], this patch drops -Wl,-allow-shlib-undefined. [b]: In a -DBUILD_SHARED_LIBS=on build, `--as-needed --allow-shlib-undefined` can unexpectedly suppress some .dynsym entries. The issue can cause mlir-cpu-runner to fail at runtime. Note, on Debian, gcc newer than (gcc-9-20190125-2) enable --as-n...
-
Lang Hames authored
-
Alina Sbirlea authored
BasicAA can be freed (and it is not recomputed).
-
Lang Hames authored
If there's no initializer symbol in the current MaterializationResponsibility then bail out without installing JITLink passes: they're going to be no-ops anyway.
-
Lang Hames authored
A think-o in the existing code meant that dependencies were never registered. This failure could lead to crashes rather than orderly error propagation if initialization dependencies failed to materialize. No test case: The bug was discovered in an out-of-tree code and requires pathalogically misconfigured JIT to generate the original error that lead to the crash.
-
Eric Fiselier authored
There are currently some failures caused by this change internally. I'm working to debug them and hopefully these series of patches should be recommitted by the end of the week. Thank you to Micheal Park for the contributions, and for allowing the temporary rollback. The commits reverted by this change are: 7d15ece7 e0ec7a02 02197f7e a175a965
-
Richard Smith authored
of a unary - expression. This fixes an issue where we'd produce bogus diagnostics, and also should recover ~0.3% compile time.
-
Xing GUO authored
This patch adds a helper function DumpStrSection to simplify codes. Besides, nonprintable chars in debug_str and debug_str.dwo sections are printed as escaped chars. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D86918
-
Alina Sbirlea authored
Summary: Analyses are preserved in MemCpyOptimizer. Get analyses before running the pass and store the pointers, instead of using lambdas and getting them every time on demand. Reviewers: lenary, deadalnix, mehdi_amini, nikic, efriedma Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74494
-
Jonas Devlieghere authored
Move the CommandObjectScript and CommandObjectRegexCommand under Commands where all the other CommandObject implementations live. Although neither implementations currently use the TableGen-generated CommandOptions.inc, this move would have been necessary anyway if they were to in the future.
-
Jordan Rupprecht authored
This was always unused, but the change in D86354 upgraded this to a compiler warning.
-
Yifan Shen authored
The Symbol Status in modules view is simplified so that only when the module has debug info and its size is non-zero, will the status message be displayed. The symbol status message is renamed to debug info size and flag message like "Symbols not found" and "Symbols loaded" is deleted. Differential Revision: https://reviews.llvm.org/D86662
-
Med Ismail Bennani authored
This patch changes the command interpreter sourcing logic for the REPL init file. Instead of looking for a arbitrary file name, it standardizes the REPL init file name to match to following scheme: `.lldbinit-<language>-repl` This will make the naming more homogenous and the sourcing logic future-proof. rdar://65836048 Differential Revision: https://reviews.llvm.org/D86987 Signed-off-by:Med Ismail Bennani <medismail.bennani@gmail.com>
-
Nathan Ridge authored
If the tree includes types derived from all specializations of a template, do not misleadingly label the root node with the name of a single specialization. Fixes https://github.com/clangd/clangd/issues/507 Differential Revision: https://reviews.llvm.org/D86861
-
Nathan Ridge authored
Fixes https://github.com/clangd/clangd/issues/504 Differential Revision: https://reviews.llvm.org/D86424
-
Varun Gandhi authored
This allows returning Optional values from constexpr contexts. Reviewed By: fhahn, dblaikie, rjmccall Differential Revision: https://reviews.llvm.org/D86354
-
Nick Desaulniers authored
File was inconsistent.
-
Thomas Raoux authored
This ensure that the symbols are being exported no matter what default visibility is set.
-
Matt Morehouse authored
Some libFuzzer users build using the build.sh script, without access to the <sanitizer/common_interface_defs.h> include. Update https://github.com/rust-fuzz/libfuzzer/issues/65. Reviewed By: dokyungs Differential Revision: https://reviews.llvm.org/D86981
-
Amy Kwan authored
This patch adds the builtin implementation for the xvcvspbf16 and xvcvbf16spn instructions. Differential Revision: https://reviews.llvm.org/D86795
-