- Apr 02, 2022
-
-
River Riddle authored
This significantly simplifies the boilerplate necessary for passes to define nested pass pipelines. Differential Revision: https://reviews.llvm.org/D122880
-
River Riddle authored
ListOption currently uses llvm::cl::list under the hood, but the usages of ListOption are generally a tad different from llvm::cl::list. This commit codifies this by making ListOption implicitly comma separated, and removes the explicit flag set for all of the current list options. The new parsing for comma separation of ListOption also adds in support for skipping over delimited sub-ranges (i.e. {}, [], (), "", ''). This more easily supports nested options that use those as part of the format, and this constraint (balanced delimiters) is already codified in the syntax of pass pipelines. See https://discourse.llvm.org/t/list-of-lists-pass-option/5950 for related discussion Differential Revision: https://reviews.llvm.org/D122879 -
Nikolas Klauser authored
Reviewed By: var-const, Mordante, #libc, ldionne Spies: ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D121435
-
Brad Smith authored
-
Luo, Yuanke authored
We have some discission in D99152 and llvm-dev and finially come up with a solution to add amx specific cast intrinsics. We've support the intrinsics in llvm IR. This patch is to replace bitcast with amx cast intrinsics in code emitting in FE. Differential Revision: https://reviews.llvm.org/D122567
-
Siva Chandra Reddy authored
Instead, memory is allocated and deallocated using mmap and munmap syscalls directly. Reviewed By: lntue, michaelrj Differential Revision: https://reviews.llvm.org/D122876
-
Arthur Eubanks authored
This option tells the host clang to use the new pass manager. Given that it's been the default for a while, this seems unnecessary. This was added in D57068. (this does not affect any LLVM/Clang functionality) Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D122947
-
jacquesguan authored
This revision adds constant folder for vector.extractelement. Differential Revision: https://reviews.llvm.org/D122886
-
Jake Egan authored
Big archive writer operation is not currently supported so mark these tests XFAIL for now. Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D122949
-
jacquesguan authored
This revision adds constant folder for vector.insertelement. Differential Revision: https://reviews.llvm.org/D122721
-
Craig Topper authored
This is a straightforward extension of D122512 to unsigned integers.
-
Jonas Devlieghere authored
Update the Linux and NetBSD Host libraries for 2165c36b which removed DataBufferLLVM::GetChars. These files are compiled conditionally based on the host platform.
-
Jonas Devlieghere authored
The concrete class (DataBufferLLVM) is an implementation detail.
-
Owen Pan authored
Related to #54513.
-
Maksim Panchenko authored
Use target-specific flags for building AArch64 non-runnable tests. Reviewed By: yota9 Differential Revision: https://reviews.llvm.org/D122520
-
Michael Gottesman authored
[debug-info] As an NFC commit, refactor EmitFuncArgumentDbgValue so that it can be extended to support llvm.dbg.addr. The reason why I am making this change is that before this commit, EmitFuncArgumentDbgValue relied on a boolean flag IsDbgDeclare both to signal that a DBG_VALUE should be made to be indirect /and/ that the original intrinsic was a dbg.declare. This is no longer always true if we add support for handling dbg.addr since we will have an indirect DBG_VALUE that is a different intrinsic from dbg.declare. With that in mind, in this NFC patch, we prepare for future fixes by introducing a 3 case-enum argument to EmitFuncArgumentDbgValue that allows the caller to explicitly specify how the argument's DBG_VALUE should be emitted. This then allows us to turn the indirect checks into a != FuncArgumentDbgValueKind::Value and prepare us for a future where we add support here for llvm.dbg.addr directly. rdar://83957028 Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D122945
-
Mitch Phillips authored
-
Jacques Pienaar authored
Supports more cases.
-
Nico Weber authored
Addresses review feedback I had missed on https://reviews.llvm.org/D122624 No behavior change. Differential Revision: https://reviews.llvm.org/D122904
-
Adrian Prantl authored
-
Arthur Eubanks authored
For systems using gnuwin32, awk does not exist.
-
Michael Jones authored
This patch adds the headers for printf. It contains minimal actual code, and is more intended to be used for design review. The code is not built yet, and may have minor errors. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D122773
-
LLVM GN Syncbot authored
-
Richard authored
[buildbot issues fixed] This check performs basic analysis of macros and replaces them with an anonymous unscoped enum. Using an unscoped anonymous enum ensures that everywhere the macro token was used previously, the enumerator name may be safely used. Potential macros for replacement must meet the following constraints: - Macros must expand only to integral literal tokens. The unary operators plus, minus and tilde are recognized to allow for positive, negative and bitwise negated integers. - Macros must be defined on sequential source file lines, or with only comment lines in between macro definitions. - Macros must all be defined in the same source file. - Macros must not be defined within a conditional compilation block. - Macros must not be defined adjacent to other preprocessor directives. - Macros must not be used in preprocessor conditions Each cluster of macros meeting the above constraints is presumed to be a set of values suitable for replacement by an anonymous enum. From there, a developer can give the anonymous enum a name and continue refactoring to a scoped enum if desired. Comments on the same line as a macro definition or between subsequent macro definitions are preserved in the output. No formatting is assumed in the provided replacements. The check cppcoreguidelines-macro-to-enum is an alias for this check. Fixes #27408 Differential Revision: https://reviews.llvm.org/D117522
-
Adrian Prantl authored
I found this function somewhat hard to read and removed a few entirely redundant checks and converted it to early exits. Differential Revision: https://reviews.llvm.org/D122912
-
Jean Perier authored
Previously, some semantic checks that are checking if an entity is an allocatable were relying on the expression being a designator whose last symbol has the allocatable attribute. This is wrong since this was considering substrings and array sections of allocatables as being allocatable. This is wrong (see NOTE 2 in Fortran 2018 section 9.5.3.1). Add evaluate::IsAllocatableDesignator to correctly test this. Also add some semantic tests for ALLOCATED to test the newly added helper. Note that ifort and nag are rejecting coindexed-named-object in ALLOCATED (`allocated(coarray_scalar_alloc[2])`). I think it is wrong given allocated argument is intent(in) as per 16.2.1 point 3. So 15.5.2.6 point 4 regarding allocatable dummy is not violated (If the actual argument is a coindexed object, the dummy argument shall have the INTENT (IN) attribute.) and I think this is valid. gfortran accepts it. The need for this helper was exposed in https://reviews.llvm.org/D122779. Differential Revision: https://reviews.llvm.org/D122899 Co-authored-by:
Peixin-Qiao <qiaopeixin@huawei.com>
-
Craig Topper authored
If we expand (uaddo X, 1) we previously expanded the overflow calculation as (X + 1) <u X. This potentially increases the live range of X and can prevent X+1 from reusing the register that previously held X. Since we're adding 1, overflow only occurs if X was UINT_MAX in which case (X+1) would be 0. So this patch adds a special case to expand the overflow calculation to (X+1) == 0. This seems to help with uaddo intrinsics that get introduced by CodeGenPrepare after LSR. Alternatively, we could block the uaddo transform in CodeGenPrepare for this case. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D122933
-
Erich Keane authored
We expect that `extern "C"` static functions to be usable in things like inline assembly, as well as ifuncs: See the bug report here: https://github.com/llvm/llvm-project/issues/54549 However, we were diagnosing this as 'not defined', because the ifunc's attempt to look up its resolver would generate a declared IR function. Additionally, as background, the way we allow these static extern "C" functions to work in inline assembly is by making an alias with the C mangling in MOST situations to the version we emit with internal-linkage/mangling. The problem here was multi-fold: First- We generated the alias after the ifunc was checked, so the function by that name didn't exist yet. Second, the ifunc's generation caused a symbol to exist under the name of the alias already (the declared function above), which suppressed the alias generation. This patch fixes all of this by moving the checking of ifuncs/CFE aliases until AFTER we have generated the extern-C alias. Then, it does a 'fixup' around the GlobalIFunc to make sure we correct the reference. Differential Revision: https://reviews.llvm.org/D122608
-
Craig Topper authored
The overflow calculation can be optimized to check if the add result is 0.
-
Erich Keane authored
-
Erich Keane authored
-
Lei Zhang authored
For such cases, the transpose op can be elided. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D122903
-
Erich Keane authored
As reported in https://github.com/llvm/llvm-project/issues/54588 and discussed in https://github.com/itanium-cxx-abi/cxx-abi/issues/139 We are supposed to do a DFS, pre-order, decl-order search for a name for the union in this case. Prevoiusly we crashed because the IdentiferInfo pointer was nullptr, so this makes sure we have a name in the cases described by the ABI. I added an llvm-unreachable to cover an unexpected case at the end of the new function with information/reference to the ABI in case we come up with some way to get back to here. Differential Revision: https://reviews.llvm.org/D122820
-
-
wren romano authored
Prior to this change there were a number of places where the allocation and deallocation of SparseTensorCOO objects were not cleanly paired, leading to inconsistencies regarding whether each function released its tensor/coo arguments or not, as well as making it easy to run afoul of memory leaks, use-after-free, or double-free errors. This change cleans up the codegen vs runtime boundary to resolve those issues. Now, the only time the runtime library frees an object is either (a) because it's a function explicitly designed to do so, or (b) because the allocated object is entirely local to the function and would be a memory leak if not released. Thus, now the codegen takes complete responsibility for releasing any objects it caused to be allocated. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D122435
-
Sanjay Patel authored
These are copied from x86 ( 1074bdfb ) to provide more coverage for a potential generic combine.
-
Sanjay Patel authored
Issue #54558
-
Zequan Wu authored
-
Yitzhak Mandelbaum authored
This patch extends the join logic for environments to explicitly handle boolean values. It creates the disjunction of both source values, guarded by the respective flow conditions from each input environment. This change allows the framework to reason about boolean correlations across multiple branches (and subsequent joins). Differential Revision: https://reviews.llvm.org/D122838
-
Yitzhak Mandelbaum authored
Adds logical interpretation of built-in equality operators, `==` and `!=`.s Differential Revision: https://reviews.llvm.org/D122830
-