Aiden Grossman [Mon, 15 Aug 2022 22:48:40 +0000 (15:48 -0700)]
[mlgo] Add ability to create feature-gated development features in regalloc advisor
Currently there is no way to add in development features to the ML
regalloc evict advisor which is useful to have when working on feature
engineering/improving the current model. This patch adds in the ability
to add in development features to the ML regalloc evict advisor which
are gated by a runtime flag and not added in at all if not compiled in
LLVM development mode. This sets the stage for future work where we are
planning on upstreaming some of the newer features that we are currently
experimenting with.
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D131209
LLVM GN Syncbot [Mon, 15 Aug 2022 22:49:18 +0000 (22:49 +0000)]
[gn build] Port
2f1fa6242a1f
Nico Weber [Mon, 15 Aug 2022 22:49:02 +0000 (18:49 -0400)]
fix comment typo to cycle bots
Michael Jones [Mon, 15 Aug 2022 21:25:38 +0000 (14:25 -0700)]
[libc] add guard for file pieces of printf
In the printf_core CMake, the file pieces are defined as object
libraries that depend on the File data structure. If these are added
unconditionally they'll try to evaluate that dependancy even when there
is no File available. This patch adds a guard to prevent that error.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D131921
Thomas Raoux [Mon, 15 Aug 2022 21:59:54 +0000 (21:59 +0000)]
[mlir][tosa] Fix clamp float lowering
min and max were mixed up after switching to using float min/max
Differential Revision: https://reviews.llvm.org/D131923
Nico Weber [Mon, 15 Aug 2022 22:21:56 +0000 (18:21 -0400)]
[gn build] Try to unbreak mac after
f56e486fdc1d
Philip Reames [Mon, 15 Aug 2022 22:16:52 +0000 (15:16 -0700)]
[RISCV][LV] Add test coverage for upcoming dependence distance handling change
Nico Weber [Mon, 15 Aug 2022 22:17:03 +0000 (18:17 -0400)]
[gn build] Make ubsan_init_standalone_preinit.cpp syncable
...after https://reviews.llvm.org/D131916
Vitaly Buka [Mon, 15 Aug 2022 21:59:50 +0000 (14:59 -0700)]
[AArch64] Fix signed integer overflow in CSINC case
Followup to D131815, which overlflows on different
values.
Martin Sebor [Wed, 27 Jul 2022 21:59:50 +0000 (15:59 -0600)]
[InstCombine] Adjust snprintf folding of constant strings (PR #56598)
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D130494
Lei Zhang [Mon, 15 Aug 2022 21:48:16 +0000 (17:48 -0400)]
[mlir][spirv] Add a test covering load/store with memory operands
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D131904
John Regehr [Mon, 15 Aug 2022 21:45:20 +0000 (15:45 -0600)]
this pass calls simplifyCFG on individual basic blocks; we want this
so that we can reduce away incidental parts of the CFG in cases where
the full simplifyCFG pass makes the test case uninteresting
Differential Revision: https://reviews.llvm.org/D131920
Arthur Eubanks [Mon, 15 Aug 2022 21:21:16 +0000 (14:21 -0700)]
[LegacyPM] Remove ThinLTO bitcode writer legacy pass
Using the legacy PM for the optimization pipeline is deprecated and in
the process of being removed. This is a small step in that direction.
For an example of migrating to the new PM:
https://github.com/llvm/llvm-project/commit/
853b57fe80bdb9d6b19697e6f2abc734834e9f6d
Arthur Eubanks [Mon, 15 Aug 2022 21:13:39 +0000 (14:13 -0700)]
[NFC][llvm-reduce] Use new pass manager for printing ThinLTO bitcode
Rafael Auler [Thu, 11 Aug 2022 17:57:59 +0000 (10:57 -0700)]
[test-release] Add option to build BOLT
Add a flag to enable BOLT. Should be used in x86-64 and
AArch64 linux builds only, since BOLT doesn't really support other
targets and is mostly tested on these two systems as hosts.
Reviewed By: tstellar
Differential Revision: https://reviews.llvm.org/D131703
Kai Sasaki [Mon, 15 Aug 2022 19:54:12 +0000 (15:54 -0400)]
[mlir][complex] Mark all supported operation illegal explicitly for complex to libm
We can mark all supported operations illegal explicitly to ensure no convertible ops remain.
Differential Revision: https://reviews.llvm.org/D131877
Arthur Eubanks [Mon, 15 Aug 2022 20:04:09 +0000 (13:04 -0700)]
[gn build] Add ubsan libraries
clang -fsanitize=undefined works with this.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D131916
Philip Reames [Mon, 15 Aug 2022 20:51:30 +0000 (13:51 -0700)]
[slp] adjust debug output to include final computed cost
Vitaly Buka [Mon, 15 Aug 2022 20:46:26 +0000 (13:46 -0700)]
[test][libc++][hwasan] Handle hwaddress_sanitizer
Nico Weber [Mon, 15 Aug 2022 20:47:07 +0000 (16:47 -0400)]
chained-fixups.yaml: force little-endian output
`__LINK_EDIT` contents are little-endian, so the whole file must be.
Might fix the test on big-endian systems.
Michael Jones [Mon, 15 Aug 2022 18:51:03 +0000 (11:51 -0700)]
[libc] enable s(n)printf without fullbuild
To use the FILE data structure, LLVM-libc must be in fullbuild mode
since it expects its own implementation. This means that (f)printf can't
be used without fullbuild, but s(n)printf only uses strings. This patch
adjusts the CMake to allow for this.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D131913
Alexey Bataev [Mon, 15 Aug 2022 20:26:51 +0000 (13:26 -0700)]
[SLP][NFC]Add a test for delaying of insertelements vectorization, NFC.
Sam Estep [Mon, 15 Aug 2022 19:58:23 +0000 (19:58 +0000)]
[clang][dataflow] Add an option for context-sensitive depth
This patch adds a `Depth` field (default value 2) to `ContextSensitiveOptions`, allowing context-sensitive analysis of functions that call other functions. This also requires replacing the `DeclCtx` field on `Environment` with a `CallString` field that contains a vector of decl contexts, to ensure that the analysis doesn't try to analyze recursive or mutually recursive calls (which would result in a crash, due to the way we handle `StorageLocation`s).
Reviewed By: xazax.hun
Differential Revision: https://reviews.llvm.org/D131809
Alan Zhao [Fri, 12 Aug 2022 23:39:26 +0000 (19:39 -0400)]
[clang][diagnostics] Don't warn about unreachable code in constexpr if
The point of a constexpr if statement is to determine which branch to
take at compile time, so warning on unreachable code is meaningless in
these situations.
Fixes #57123.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D131818
Jameson Nash [Mon, 15 Aug 2022 19:09:46 +0000 (15:09 -0400)]
[SimplifyCFG] teach simplifycfg not to introduce ptrtoint for NI pointers
SimplifyCFG expects to be able to cast both sides to an int, if either side can be case to an int, but this is not desirable or legal, in general, per D104547.
Spotted in https://github.com/JuliaLang/julia/issues/45702
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D128670
Matthias Springer [Mon, 15 Aug 2022 19:04:25 +0000 (21:04 +0200)]
[mlir][transforms] Add topological sort analysis
This change add a helper function for computing a topological sorting of a list of ops. E.g. this can be useful in transforms where a subset of ops should be cloned without dominance errors.
The analysis reuses the existing implementation in TopologicalSortUtils.cpp.
Differential Revision: https://reviews.llvm.org/D131669
Diego Caballero [Mon, 15 Aug 2022 18:59:42 +0000 (18:59 +0000)]
[mlir] Minor fixes after removing types from attributes
D130092 removed types from attributes. This patch fixes a minor
issues what was exposed when integrating that change in IREE. An
explicit cast is needed so that the template type of `makeArrayRef`
is automatically deduced.
Co-authored-by: Lei Zhang <antiagainst@google.com>
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D131604
Stella Laurenzo [Mon, 15 Aug 2022 18:20:04 +0000 (11:20 -0700)]
[mlir] Make sure that aggregate shared libraries define all of their symbols.
We were hitting issues on Linux where this was only being caught at runtime, and different linkers (BFD vs LLD) are differently strict in such situations. Such libraries will also fail to build properly on Windows (but test coverage of that is limited, so it is better to enforce globally).
Differential Revision: https://reviews.llvm.org/D131911
Alexey Bataev [Mon, 15 Aug 2022 18:30:11 +0000 (11:30 -0700)]
[SLP][NFC]Replace multiple isa calls with single one where possible,
NFC.
Slava Zakharin [Fri, 22 Jul 2022 18:56:20 +0000 (11:56 -0700)]
[mlir][math] Added algebraic simplification for IPowI operation.
Differential Revision: https://reviews.llvm.org/D130390
Jeff Niu [Mon, 15 Aug 2022 17:14:15 +0000 (13:14 -0400)]
[mlir][python] Fix build on windows
Reviewed By: stella.stamenova, ashay-github
Differential Revision: https://reviews.llvm.org/D131906
Kevin Athey [Mon, 15 Aug 2022 16:32:54 +0000 (09:32 -0700)]
[MSAN] clean up style from D131728
Depends on D131728
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D131903
Slava Zakharin [Fri, 22 Jul 2022 18:48:16 +0000 (11:48 -0700)]
[mlir][math] Added constant folding for IPowI operation.
Differential Revision: https://reviews.llvm.org/D130389
Diego Caballero [Mon, 15 Aug 2022 18:27:35 +0000 (18:27 +0000)]
Revert "antiagainst's fix"
This reverts commit
42d48d09666279bdd05d70ff7c353466ae79711a.
Jonas Devlieghere [Mon, 15 Aug 2022 18:23:33 +0000 (11:23 -0700)]
[lldb] Fix warning: comparison of integers of different signs
Fixes a warning about comparison of integers of different signs
'wchar_t' and 'int' in Editline.cpp:
return out != (int)WEOF;
~~~ ^ ~~~~~~~~~
Diego Caballero [Sat, 13 Aug 2022 04:41:24 +0000 (04:41 +0000)]
antiagainst's fix
Arthur Eubanks [Mon, 15 Aug 2022 17:45:05 +0000 (10:45 -0700)]
[test][clang] Opaquify pragma-init_seg.cpp
Aaron Ballman [Mon, 15 Aug 2022 17:33:45 +0000 (13:33 -0400)]
Removing an unused function; NFC
It turns out there are zero in-tree callers of CallExpr::getNumCommas()
so it's reasonable to remove.
Amy Kwan [Mon, 15 Aug 2022 16:34:02 +0000 (11:34 -0500)]
[PowerPC][NFC] Add additional vector_shuffle tests involving scalar_to_vector.
This patch adds additional test cases involving vector_shuffles where either its
left, right or both inputs are scalar_to_vector nodes. These test cases involve
v16i8, v2i64, v4i32 and v8i16 vector shuffles, and were generated in preparation
for D130487.
Differential Revision: https://reviews.llvm.org/D130485
Kazu Hirata [Mon, 15 Aug 2022 17:26:03 +0000 (10:26 -0700)]
[ExecutionEngine] Fix warnings
This patch fixes:
llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:512:12: error:
moving a temporary object prevents copy elision
[-Werror,-Wpessimizing-move]
and:
llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp:515:12: error:
moving a temporary object prevents copy elision
[-Werror,-Wpessimizing-move]
Zhixun Tan [Mon, 15 Aug 2022 17:24:01 +0000 (13:24 -0400)]
[mlir][dataflow] Remove the unused AnalysisState::defaultInitialize().
Depends On D131660
`defaultInitialize()` was introduced for the "nudging" behavior, which has been deleted.
Reviewed By: Mogball, rriddle
Differential Revision: https://reviews.llvm.org/D131746
Zhixun Tan [Mon, 15 Aug 2022 17:20:48 +0000 (13:20 -0400)]
[mlir][dataflow] Remove Abstract{Sparse,Dense}Lattice::isAtFixpoint() and an ineffective optimization to simplify public API
Currently, in the MLIR `{Sparse,Dense}DataFlowAnalysis` API, there is a small optimization:
Before running a transfer function, if the "out state" is already at the pessimistic fixpoint (bottom lattice value), then we know that it cannot possibly be changed, therefore we can skip the transfer function.
I benchmarked and found that this optimization is ineffective, so we can remove it and simplify `{Sparse,Dense}DataFlowAnalysis`. In a subsequent patch, I plan to change/remove the concept of the pessimistic fixpoint so that the API is further simplified.
Benchmark: I ran the following tests 5 times (after 3 warmup runs), and timed the `initializeAndRun()` function.
| Test | Before (us) | After (us) |
| mlir-opt -test-dead-code-analysis mlir/test/Analysis/DataFlow/test-dead-code-analysis.mlir | 181.2536 | 187.7074 |
| mlir-opt -- -test-dead-code-analysis mlir/test/Analysis/DataFlow/test-last-modified-callgraph.mlir | 109.5504 | 105.0654 |
| mlir-opt -- -test-dead-code-analysis mlir/test/Analysis/DataFlow/test-last-modified.mlir | 333.3646 | 322.4224 |
| mlir-opt -- -allow-unregistered-dialect -sccp mlir/test/Analysis/DataFlow/test-combined-sccp.mlir | 1027.1492 | 1081.818 |
Note: `test-combined-sccp.mlir` is crafted by combining `mlir/test/Transforms/sccp.mlir`, `mlir/test/Transforms/sccp-structured.mlir` and `mlir/test/Transforms/sccp-callgraph.mlir`.
Reviewed By: aartbik, Mogball
Differential Revision: https://reviews.llvm.org/D131660
Jakub Kuderski [Mon, 15 Aug 2022 17:17:42 +0000 (13:17 -0400)]
[mlir] Simplify is_splat use in MatchAllPred. NFC.
This is a simple cleanup after https://reviews.llvm.org/D131289.
Reviewed By: antiagainst, Mogball
Differential Revision: https://reviews.llvm.org/D131895
Slava Gurevich [Sun, 14 Aug 2022 06:46:21 +0000 (23:46 -0700)]
[LLDB][NFC] Reliability Fixes for FormatEntity
- Remove dead code
- Fix incorrect null-reference check
Differential Revision: https://reviews.llvm.org/D131850
Kevin Sala Penads [Mon, 15 Aug 2022 17:07:27 +0000 (13:07 -0400)]
[OpenMP][libomptarget] Fix run region async condition
This patch fixes a condition in the openmp/libomptarget/src/device.cpp file. The code was checking if the run_region plugin API function was implemented, but it should actually check the run_region_async function instead.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D131782
Sunho Kim [Mon, 15 Aug 2022 16:35:18 +0000 (01:35 +0900)]
[ORC][COFF] Introduce DLLImportDefinitionGenerator.
This class will be used to properly solve the `__imp_` symbol and jump-thunk generation issues. It is assumed to be the last definition generator to be called, and as it's the last generator the only symbols remaining in the lookup set are the symbols that are supposed to be queried outside this jitdylib. Instead of just letting them through, we issue another lookup invocation and fetch the allocated addresses, and then create jitlink graph containing `__imp_` GOT symbols and jump-thunks targetting the fetched addresses.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D131833
Sanjay Patel [Mon, 15 Aug 2022 16:25:24 +0000 (12:25 -0400)]
[InstCombine] reduce sub-with-overflow ==/!= 0
The basic patterns look like this:
https://alive2.llvm.org/ce/z/MDj9EC
The tests have a use of the overflow value too.
Otherwise, existing folds should reduce already.
This was noted as a missing IR fold in:
926e7312b2f20f2f7b
Hopefully, this makes it easier to implement a backend
fix because we should get the same IR regardless of
whether the source used builtins or inline code.
Sanjay Patel [Mon, 15 Aug 2022 15:30:09 +0000 (11:30 -0400)]
[InstCombine] add tests for compare of sub-with-overflow; NFC
Simon Pilgrim [Mon, 15 Aug 2022 16:53:21 +0000 (17:53 +0100)]
[InstCombine] known-phi-br.ll - add multiuse of compare results to avoid predicate inverse and add negative tests
Feedback from D131838
Jonas Devlieghere [Mon, 15 Aug 2022 16:42:41 +0000 (09:42 -0700)]
[llvm] Include utils/unittest before projects and runtimes
Include utils/unittest before projects and runtimes so that downstream
projects can check for the existence of the llvm_gtest target. This is
motivated by
9c6c4d675bd1 which fixes the stand-alone build
configuration where LLVM_MAIN_SRC_DIR does not exist.
Differential revision: https://reviews.llvm.org/D124314
Thomas Raoux [Mon, 15 Aug 2022 16:16:46 +0000 (16:16 +0000)]
[mlir][nvpu] Prevent F32ToTF32 pattern to generate illegal IR
We shouldn't apply this pattern to non F32->F32 mma.sync operations.
Differential Revision: https://reviews.llvm.org/D131902
Michael Buch [Mon, 15 Aug 2022 16:22:16 +0000 (17:22 +0100)]
[lldb][debugserver] Revert "Use llvm::all_of (NFC)" for debugserver
Commit [
6d9cd9199a6fdeab0412117bcefc28f625510b61](https://reviews.llvm.org/rG6d9cd9199a6fdeab0412117bcefc28f625510b61) added a dependency on llvm to debugserver.
This breaks the build. Since we don't want to add a dependency on llvm, this
patch reverts the offending commit.
Differential Revision: https://reviews.llvm.org/D131901
Valentin Clement [Mon, 15 Aug 2022 16:12:46 +0000 (18:12 +0200)]
[flang][docs] Add lowering design doc for polymorphic entities
This document aims to give insights at the representation of polymorphic
entities in FIR and how polymorphic related constructs and features are lowered
to FIR.
Reviewed By: klausler, razvanlupusoru
Differential Revision: https://reviews.llvm.org/D131515
Slava Zakharin [Thu, 11 Aug 2022 21:36:23 +0000 (14:36 -0700)]
[flang] Handle mixed types in DOT_PRODUCT simplification.
Fortran runtime supports mixed types by casting the loaded values
to the result type, so DOT_PRODUCT simplification has to do the same.
Differential Revision: https://reviews.llvm.org/D131726
Mahesh Ravishankar [Mon, 15 Aug 2022 04:03:41 +0000 (04:03 +0000)]
[mlir] Revisit `LinalgLoopDistributionOptions`.
This patch cleans up the way `LinalgLoopDistributionOptions` are meant
to be used. The option just contains a call back that takes the list
of loop ranges that represent the loops that are to be distributed.
These loops are the outer parallel loops of the tiled operation which
have non-zero tile sizes specified. The call back returns for each of
the loops,
- The procId to use,
- The number of processors,
- The distribution method to use for that loop.
Reviewed By: antiagainst, hanchung
Differential Revision: https://reviews.llvm.org/D131232
Steven Wu [Mon, 15 Aug 2022 15:54:01 +0000 (08:54 -0700)]
[CMake] Update FindGPRC to use add_llvm_library
add_clang_library is not available in components other than clang and
clang-tool-extras. Trying to use this module elsewhere will cause cmake
error. `add_clang_library` doesn't seem necessary for clangd's GRPC.
Change it to a more generic `add_llvm_library` so it is easier to build
other downstream projects with GRPC that doesn't depend on clang.
Reviewed By: akyrtzi
Differential Revision: https://reviews.llvm.org/D131593
Matheus Izvekov [Fri, 12 Aug 2022 19:50:30 +0000 (21:50 +0200)]
[clang] fix missing initialization of original number of expansions
When expanding undeclared function parameters, we should initialize
the original number of expansions, if known, before trying to expand
them, otherwise a length mismatch with an outer pack might not be
diagnosed.
Fixes PR56094.
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Differential Revision: https://reviews.llvm.org/D131802
Michele Scuttari [Mon, 15 Aug 2022 15:17:54 +0000 (17:17 +0200)]
DynamicMemRefType: iteration and access by indices
The methods to perform such operations have been implemented for the DynamicMemRefType in a way that is similar to the implementation for StridedMemRefType. Up until here one could pass an unranked memref to the library, and thus obtain a “dynamic” memref descriptor, but then there would have been no possibility to operate on its content.
Differential Revision: https://reviews.llvm.org/D131359
Craig Topper [Mon, 15 Aug 2022 15:32:22 +0000 (08:32 -0700)]
[RISCV] Enable isTruncateFree in SDAG for i64->i32 on rv64.
We have a good selection of W instructions, so promoting a truncated
value back to i64 is often free.
This appears to be a net code size reduction on SPECINT2006.
This has been split from D130397 as one of the patches needed to
complete that.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D131819
Craig Topper [Mon, 15 Aug 2022 15:17:54 +0000 (08:17 -0700)]
[InstSimplify] sle on i1 also encodes implication
We already support SGE, so the same logic should hold for SLE with
the LHS and RHS swapped.
I didn't see this in the wild. Just happened to walk past this code
and thought it was odd that it was asymmetric in what condition
codes it handled.
Reviewed By: spatel, reames
Differential Revision: https://reviews.llvm.org/D131805
Michał Górny [Mon, 15 Aug 2022 07:50:14 +0000 (09:50 +0200)]
[llvm] [cmake] Move LLVM_INSTALL_PACKAGE_DIR top-level to fix llvm-config
Move the `LLVM_INSTALL_PACKAGE_DIR` declaration from llvm/cmake/modules
directory to the top-level llvm/CMakeLists.txt, in order to fix
the regression in `llvm-config --cmakedir` output for installed LLVM.
Since the tools directory is processed by CMake prior to
llvm/cmake/modules, the llvm-config executable ended up using
the variable prior to it being defined and incorrectly used an empty
path, resulting in e.g.:
$ llvm-config --cmakedir
/usr/lib/llvm/16/
With this patch, the path is defined (and therefore the default value
is being set) prior to adding the tools subdirectory and llvm-config
starts working correctly:
$ llvm-config --cmakedir
/usr/lib/llvm/16/lib64/cmake/llvm
This fixes a regression introduced by D130539. Thanks to Petr Polezhaev
for reporting the problem @ https://bugs.gentoo.org/865165
Differential Revision: https://reviews.llvm.org/D131878
Simon Pilgrim [Mon, 15 Aug 2022 15:17:12 +0000 (16:17 +0100)]
[X86] Freeze shl(x,1) -> add(x,x) vector fold (PR50468)
Vector fold shl(x,1) -> add(freeze(x),freeze(x)) to avoid the undef issues identified in PR50468
Differential Revision: https://reviews.llvm.org/D106675
Igor Zhukov [Mon, 15 Aug 2022 13:31:03 +0000 (20:31 +0700)]
[libc++][test] Fix conversion signed/unsigned in test/support/MoveOnly.h
Reviewed By: jloser, philnik
Differential Revision: https://reviews.llvm.org/D131889
Nico Weber [Mon, 15 Aug 2022 13:06:57 +0000 (09:06 -0400)]
[llvm-objdump] Start on -chained_fixups for llvm-otool
And --chained-fixups for llvm-objdump.
For now, this only prints the dyld_chained_fixups_header and adds
plumbing for the flag. This will be expanded in future commits.
When Apple's effort to upstream their chained fixups code continues,
we'll replace this code with the then-upstreamed code. But we need
something in the meantime for testing ld64.lld's chained fixups
code.
Update chained-fixups.yaml with a file that actually contains
the chained fixup data (`LinkEditData` doesn't encode it yet,
so use `__LINKEDIT` via `--raw-segment=data`).
Differential Revision: https://reviews.llvm.org/D131890
Valentin Clement [Mon, 15 Aug 2022 14:44:51 +0000 (16:44 +0200)]
[flang][openacc][NFC] Add test with allocatable and pointer arrays
This patch adds tests for the handling of array sections for
arrays with the ALLOCATABLE or POINTER attribute.
Reviewed By: razvanlupusoru
Differential Revision: https://reviews.llvm.org/D131885
Simon Pilgrim [Mon, 15 Aug 2022 13:56:02 +0000 (14:56 +0100)]
[X86] Fold insert_vector_elt(undef, elt, 0) --> scalar_to_vector(elt)
I had hoped to make this a generic fold in DAGCombine, but there's quite a few regressions in Thumb2 MVE that need addressing first.
Fixes regressions from D106675.
wangyihan [Mon, 15 Aug 2022 13:11:42 +0000 (21:11 +0800)]
[NFC][SmallVector] Use std::conditional_t instead of std::conditional
Signed-off-by: wangyihan <yihan.wang@intel.com>
David Green [Mon, 15 Aug 2022 13:41:45 +0000 (14:41 +0100)]
[DAG] Ensure more Legal BUILD_VECTOR elements types in shuffle->And combine
This is a followup to D131350, which caused another problem for i64
types being split into i32 on i32 targets. This patch tries to make sure
that either Illegal types are OK, or that the element types of a
buildvector are legal and bigger than or equal to the size of the
original elements.
Differential Revision: https://reviews.llvm.org/D131883
Matthias Springer [Mon, 15 Aug 2022 11:02:17 +0000 (13:02 +0200)]
[mlir][linalg][python] Add named constructor for MatchOp
This constructor makes it easier to match for ops by their name.
Differential Revision: https://reviews.llvm.org/D131882
Aaron Ballman [Mon, 15 Aug 2022 12:36:56 +0000 (08:36 -0400)]
Silence MSVC codecvt deprecation warnings
This silences warnings about use of deprecated codecvt functionality
after the switch to build with C++17.
Luo, Yuanke [Mon, 15 Aug 2022 11:38:41 +0000 (19:38 +0800)]
Revert "(Reland) [fastalloc] Support allocating specific register class in fastalloc"
This reverts commit
30f9e6ebd30b79d13f99eaca4d829e0da07186b3.
Ayke van Laethem [Sun, 16 Jan 2022 08:34:04 +0000 (09:34 +0100)]
[AVR] Only push and clear R1 in interrupts when necessary
R1 is a reserved register, but LLVM gives the APIs to know when it is
used or not. So this patch uses these APIs to only save/clear/restore R1
in interrupts when necessary.
The main issue here was getting inline assembly to work. One could argue
that this is the job of Clang, but for consistency I've made sure that
R1 is always usable in inline assembly even if that means clearing it
when it might not be needed.
Information on inline assembly in AVR can be found here:
https://www.nongnu.org/avr-libc/user-manual/inline_asm.html#asm_code
Essentially, this seems to suggest that r1 can be freely used in avr-gcc
inline assembly, even without specifying it as an input operand.
Differential Revision: https://reviews.llvm.org/D117426
Ayke van Laethem [Sat, 13 Aug 2022 19:51:30 +0000 (21:51 +0200)]
[AVR] Use @earlyclobber instead of register scavenging
The code to support the case when the register allocator has assigned
the same register to the src and the dst register operand isn't actually
needed:
* LDWRdPtr and LDDWRdPtrQ have an @earlyclobber on the output
register, so the register allocator will make sure to allocate a
different register for the output register.
* LDDWRdYQ does not have an @earlyclobber, but the pointer register is
the fixed Y register which is reserved. The register allocator won't
use reserved registers for the output value.
This removes a special case in the code that makes the pseudo
instruction expansion pass more complicated than it needs to be.
Differential Revision: https://reviews.llvm.org/D131844
Ayke van Laethem [Fri, 24 Jun 2022 00:43:11 +0000 (02:43 +0200)]
[AVR] Support unaligned store
This patch really just extends D39946 towards stores as well as loads.
While the patch is in SelectionDAGBuilder, it only applies to AVR (the
only target that supports unaligned atomic operations).
Differential Revision: https://reviews.llvm.org/D128483
Dmitry Vassiliev [Mon, 15 Aug 2022 12:25:58 +0000 (14:25 +0200)]
[IR] Change access rights of PredIterator members
These members were made private here https://github.com/llvm/llvm-project/commit/
6177386b05ddaaee04160b153a41ed4edbd7bcaf without an explanation.
Our customers have an own implementation inherited from PredIterator with updated advancePastNonTerminators().
The access specifier protected looks resonable and safe here.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D131608
Max Kazantsev [Mon, 15 Aug 2022 11:51:59 +0000 (18:51 +0700)]
Revert "[SCEV] Use context to strengthen flags of BinOps"
This reverts commit
34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5.
Our internal testing found a miscompile. Not sure if it's caused by
this patch or it revealed something else. Reverting while investigating.
Simon Pilgrim [Mon, 15 Aug 2022 11:18:51 +0000 (12:18 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(sign_extend_inreg(x,vt)) -> sign_extend_inreg(freeze(x),vt) support
Guaranteed not to create undef/poison
Peter Waller [Tue, 9 Aug 2022 15:13:50 +0000 (15:13 +0000)]
[DAGCombine] Combine signext_inreg of extract-extend
The outer signext_inreg is redundant in the following:
Fold (signext_inreg (extract_subvector (zext|anyext|sext iN_value to _) _) from iN)
-> (extract_subvector (signext iN_value to iM))
Tests are precommitted and clone those by analogy from the AND case in
the same file. Add a negative test to check extension width is handled
correctly.
This patch supersedes D130700.
Differential Revision: https://reviews.llvm.org/D131503
Simon Pilgrim [Mon, 15 Aug 2022 10:07:27 +0000 (11:07 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(assertsext/zext(x,bt)) -> assertsext/zext(freeze(x),vt) support
These are guaranteed not to create undef/poison (although they may pass through) - the associated ISD::VALUETYPE node is also guaranteed never to generate poison
Matthias Springer [Mon, 15 Aug 2022 09:14:43 +0000 (11:14 +0200)]
[mlir][bufferize] Fix bug in AllocTensorElimination
AllocTensorElimination does currently not support chains where the type is
changing. AllocTensorElimination used to generate invalid IR for such
inputs. With this commit, AllocTensorElimination does no longer apply to
such inputs. (It can be extended to support such IR if needed.)
Differential Revision: https://reviews.llvm.org/D131880
Benjamin Kramer [Mon, 15 Aug 2022 09:44:28 +0000 (11:44 +0200)]
Make demangler independent of LLVM again
The demangler is not supposed to include bits of LLVM, so it can't use STLExtras.
This undoes part of
6d9cd9199a6fdeab0412117bcefc28f625510b61
David Spickett [Fri, 12 Aug 2022 13:14:00 +0000 (13:14 +0000)]
[LLDB] Remove __future__ imports from examples
Not needed now that we require python 3.
Reviewed By: kastiglione, JDevlieghere
Differential Revision: https://reviews.llvm.org/D131772
David Spickett [Fri, 12 Aug 2022 10:56:09 +0000 (10:56 +0000)]
[LLDB] Remove __future__ imports from tests
Not needed now that we require python 3.
Reviewed By: kastiglione, JDevlieghere
Differential Revision: https://reviews.llvm.org/D131761
Zain Jaffal [Mon, 15 Aug 2022 08:15:50 +0000 (09:15 +0100)]
[AArch64] Tests for non-temporal loads.
Add some test cases for D131773 where LDNP could be used as well as
negative tests.
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D131767
Walter Erquinigo [Mon, 15 Aug 2022 07:55:36 +0000 (00:55 -0700)]
[NFC][trace][intel pt] add simple documentation line
Diana Picus [Thu, 11 Aug 2022 09:21:40 +0000 (11:21 +0200)]
[flang] Install runtime libs with the toolchain
Make sure that FortranDecimal, FortranRuntime and Fortran_main are
installed/packaged even when LLVM_INSTALL_TOOLCHAIN_ONLY is enabled.
They are used by flang to link executables, so they should be provided
even with minimal installs.
Differential Revision: https://reviews.llvm.org/D131670
Zijia Zhu [Mon, 15 Aug 2022 05:43:59 +0000 (13:43 +0800)]
[ADT] Make SmallSet::insert(const T &) return const_iterator
This patch makes `SmallSet::insert(const T &)` return
`std::pair<const_iterator, bool>` instead of
`std::pair<NoneType, bool>`. This will exactly match std::set's behavior
and make deduplicating items with SmallSet easier.
Reviewed By: dblaikie, lattner
Differential Revision: https://reviews.llvm.org/D131549
Fangrui Song [Mon, 15 Aug 2022 03:58:23 +0000 (20:58 -0700)]
[DebugInfo] -fdebug-prefix-map: handle '#line "file"' for asm source
`getContext().setMCLineTableRootFile` (from D62074) sets `RootFile.Name` to
`FirstCppHashFilename`. `RootFile.Name` is not processed by -fdebug-prefix-map
and will go to DW_TAG_compile_unit's DT_AT_name and DW_TAG_label's
DW_AT_decl_file. Remap `RootFile.Name`.
Fix another issue reported by https://github.com/llvm/llvm-project/issues/56609
Reviewed By: #debug-info, dblaikie, raj.khem
Differential Revision: https://reviews.llvm.org/D131848
Kazu Hirata [Mon, 15 Aug 2022 00:51:59 +0000 (17:51 -0700)]
[ADT] Deprecate Optional::map
This patch deprecates Optional::map in favor of Optional::transform
for consistency with std::optional::transform in C++23.
Note that I've migrated all known users of Optional::map.
Differential Revision: https://reviews.llvm.org/D131842
Craig Topper [Sun, 14 Aug 2022 23:15:45 +0000 (16:15 -0700)]
[X86][RISCV] Pre-commit tests for D130862. NFC
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D131442
Kazu Hirata [Sun, 14 Aug 2022 23:25:39 +0000 (16:25 -0700)]
Use llvm::none_of (NFC)
Kazu Hirata [Sun, 14 Aug 2022 23:25:38 +0000 (16:25 -0700)]
[clangd] Use llvm::any_of (NFC)
Kazu Hirata [Sun, 14 Aug 2022 23:25:36 +0000 (16:25 -0700)]
Use llvm::all_of (NFC)
Kent Ross [Sun, 14 Aug 2022 23:14:57 +0000 (16:14 -0700)]
[libc++][spaceship] Implement std::variant::operator<=>
Implements [variant.relops] and [variant.monostate.relops] for P1614R2
Reviewed By: Mordante, #libc, avogelsgesang
Differential Revision: https://reviews.llvm.org/D131372
David Green [Sun, 14 Aug 2022 22:55:31 +0000 (23:55 +0100)]
[Support] Fix no-stat build. NFC
After
9144e4933463d35df259ca8a5207119e1fc0c97c this performs the same
transform inside the other ifdef.
Yuanfang Chen [Thu, 11 Aug 2022 19:53:41 +0000 (12:53 -0700)]
[c++] implements DR692, DR1395 and tentatively DR1432, about partial ordering of variadic template partial specialization or function template
DR692 handles two cases: pack expansion (for class/var template) and function parameter pack. The former needs DR1432 as a fix, and the latter needs DR1395 as a fix. However, DR1432 has not yet made a wording change. so I made a tentative fix for DR1432 with the same spirit as DR1395.
Reviewed By: aaron.ballman, erichkeane, #clang-language-wg
Differential Revision: https://reviews.llvm.org/D128745
Krzysztof Parzyszek [Sun, 14 Aug 2022 20:57:44 +0000 (15:57 -0500)]
[Hexagon] Distribute disjoint intervals at the end of expand-condsets
This fixes https://github.com/llvm/llvm-project/issues/56050.
Krzysztof Parzyszek [Sun, 14 Aug 2022 20:22:41 +0000 (15:22 -0500)]
[Hexagon] Make some loops in HexagonExpandCondsets.cpp range-based, NFC
Plus some readability changes.
Justin Stitt [Sun, 14 Aug 2022 20:28:49 +0000 (13:28 -0700)]
[Sema] Avoid isNullPointerConstant invocation
DiagnoseNullConversion is needlessly calling isNullPointerConstant which
is an expensive routine due to its calls to a constant evaluator --
which we don't need.
Building the Linux Kernel (x86_64) with this fix has improved build
times by ~2.1%. This is mainly due to the following methods no longer
needing to be called anywhere near as often:
1) ExprConstant::CheckICE (reduced CPU cycles by ~90%)
2) IntExprEvaluator::VisitBinaryOperator (reduced CPU cycles by ~50%)
Reviewed By: rtrieu, nickdesaulniers
Differential Revision: https://reviews.llvm.org/D131532
Nuno Lopes [Sun, 14 Aug 2022 20:37:23 +0000 (21:37 +0100)]
InstCombine: use poison instead of undef as placeholder in insertvalue [NFC]
These vectors are fully initialized so the placeholder value is irrelevant