Martin Storsjö [Wed, 7 Jun 2023 10:41:15 +0000 (13:41 +0300)]
[llvm-dlltool] Ignore the --temp-prefix option
llvm-dlltool tolerates unknown options as long as they are plain
flags, but if given the parameter value as a separate argument,
e.g. "--temp-prefix foo", it fails to ignore it.
Differential Revision: https://reviews.llvm.org/D152361
Martin Storsjö [Wed, 7 Jun 2023 11:13:55 +0000 (14:13 +0300)]
[llvm-dlltool] Clarify parameters, simplify ArgList usage. NFC.
Add comments about unclear bool arguments to functions, switch to
hasArg instead of getLastArg for cases where we don't need to check
the argument's value.
Differential Revision: https://reviews.llvm.org/D152360
Martin Storsjö [Wed, 7 Jun 2023 10:55:21 +0000 (13:55 +0300)]
[COFF] Remove misleading and unclear comments. NFC.
It is not planned that GNU binutils would change this aspect of
its behaviour wrt how symbol decoration is done.
Differential Revision: https://reviews.llvm.org/D152359
Nick Desaulniers [Thu, 8 Jun 2023 18:30:00 +0000 (11:30 -0700)]
[ExprConstant] fix ICE from Evaluate on _Atomic structs
Fixes two crashes reported by @efriedma and @ahatanak, as per
@ahatanak's analysis.
Link: https://reviews.llvm.org/D151587#4397446
Link: https://reviews.llvm.org/D151587#4399684
Reviewed By: ahatanak, aaron.ballman
Differential Revision: https://reviews.llvm.org/D152303
Matt Arsenault [Sun, 20 Nov 2022 22:31:04 +0000 (14:31 -0800)]
HIP: Directly call copysign builtins
Florian Hahn [Thu, 8 Jun 2023 20:13:05 +0000 (21:13 +0100)]
[LV] Add tests for reasoning about SCEV predicates.
Add extra tests with cases where SCEV predicates can be proven to always
be false. The test in pointer-induction.ll has been adjusted to avoid
the induction always to wrap.
Matt Arsenault [Sun, 20 Nov 2022 16:48:29 +0000 (08:48 -0800)]
HIP: Directly call isnan builtin
Andrzej Warzynski [Thu, 1 Jun 2023 13:24:22 +0000 (14:24 +0100)]
[mlir][transform] Add support for expressing scalable vector sizes
This patch enables specifying scalable vector sizes when using the
Transform dialect to drive vectorisation, e.g.:
```
transform.structured.masked_vectorize %0 vector_sizes [8, 16, [4]]
```
This is implemented by extending the MaskedVectorizeOp with a dedicated
attribute for "scalability" and by overloading `parseDynamicIndexList`
so that MaskedVectorizeOp can continue using the auto-generated parser
and printer.
At the moment, only the trailing vec size can be scalable. The following
is not yet supported:
```
transform.structured.masked_vectorize %0 vector_sizes [8, [16], [4]]
```
As the vectoriser does not support scalable vectorisation just yet, a
warning is issues when scalable vector sizes are used. You can also use
the debug output, `--debug-only=linalg-vectorization`, to check whether
scalable vectorisation has been switched on.
This change is a part of a larger effort to enable scalable
vectorisation in Linalg. See this RFC for more context:
* https://discourse.llvm.org/t/rfc-scalable-vectorisation-in-linalg/
Similar patch for tiling: https://reviews.llvm.org/D150944
Differential Revision: https://reviews.llvm.org/D151892
Teresa Johnson [Thu, 8 Jun 2023 19:19:44 +0000 (12:19 -0700)]
[MemProf] Remove stale comment (NFC)
We already do the simplification described in the FIXME comment.
Matt Arsenault [Sun, 20 Nov 2022 16:48:03 +0000 (08:48 -0800)]
HIP: Directly call isinf builtins
Matt Arsenault [Sun, 20 Nov 2022 16:38:31 +0000 (08:38 -0800)]
HIP: Directly call signbit builtins
Alex Langford [Wed, 7 Jun 2023 01:10:48 +0000 (18:10 -0700)]
[lldb][NFCI] DecodedThread::TraceItemStorage::error should own its own data
The way it works now, it stores a `const char *` that it does not
explicitly own. It's owned by the ConstString StringPool. This is purely
to manage its lifetime, we don't really benefit from deduplication (nor
should we try to, they are errors). We also don't really benefit from
quick comparisons.
This may make the size of TraceItemStorage larger, but you have to pay
the cost of owning the data somewhere. The ConstString StringPool is an
attractive choice but ultimately a poor one.
Differential Revision: https://reviews.llvm.org/D152326
Joel E. Denny [Thu, 8 Jun 2023 19:09:35 +0000 (15:09 -0400)]
[OpenMP] Fix --libomptarget-nvptx-bc-path in tests
After D151324, which landed as
349c0aacb380, many libomptarget non-LTO
nvptx64 tests fail with errors like:
```
clang: error: bitcode library '/tmp/llvm-project/build/runtimes/runtimes-bins/openmp/libomptarget/libomptarget-nvptx-sm_70.bc' does not exist
```
This patch updates the bc path.
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D152462
Mahesh Ravishankar [Thu, 8 Jun 2023 18:39:32 +0000 (18:39 +0000)]
[mlir][SliceAnalysis] Add an options object to forward and backward slice.
Add an options object to allow control of the slice computation (for
both forward and backward slice). This makes the ABI stable, and also
allows avoiding an assert that makes the slice analysis unusable for
operations with multiple blocks.
Reviewed By: hanchung, nicolasvasilache
Differential Revision: https://reviews.llvm.org/D151520
Felipe de Azevedo Piovezan [Sat, 3 Jun 2023 11:23:16 +0000 (07:23 -0400)]
[AppleAccelTable] Keep track of the size of each hash data entry
In a future patch, it will be desirable to skip over all hash data entries for a
particular string. In order to do so, we must know how many bytes each of those
entries have.
In its full specification, Apple tables allow for variable length entries, which
would make the above impossible without reading the data of each entry. However,
this is largely unsupported today (as a FIXME in the code indicates, there is a
bug with hash collisions exactly because we don't know how to skip over data),
and the documentation[1] states that:
> For the current implementations of the “.apple_names” (all functions +
> globals), the “.apple_types” (names of all types that are defined), and the
> “.apple_namespaces” (all namespaces), we currently set the Atom array to be:
> [...]
> This defines the contents to be the DIE offset (eAtomTypeDIEOffset) that is
> encoded as a 32 bit value (DW_FORM_data4).
In other words, we only produce fixed sized entries.
A few tests containing invalid dwarf had to be updated, as the error is now
detected earlier (when the accelerator table is being parsed, instead of inside
the explicit call to "verify").
[1]: https://llvm.org/docs/SourceLevelDebugging.html#fixed-lookup
Depends on D152156
Differential Revision: https://reviews.llvm.org/D152157
Alex Langford [Wed, 24 May 2023 00:13:31 +0000 (17:13 -0700)]
[DebugInfo] Add error-handling to DWARFAbbreviationDeclarationSet
This commit aims to improve error handling in the
DWARFAbbreviationDeclarationSet class. Specifically, we change the return type
of DWARFAbbreviationDeclarationSet::extract to an llvm::Error. In doing
so, we propagate the error from DWARFAbbreviationDeclaration::extract
another layer upward.
I have built on the previous unittest for DWARFDebugAbbrev that I
wrote a few days prior.
Namely, I am verifying that the following should give an error:
- An invalid tag following a non-null code
- An invalid attribute with a valid form
- A valid attribute with an invalid form
- An incorrectly terminated DWARFAbbreviationDeclaration
Additionally, I uncovered some invalid DWARF in an unrelated dsymutil
test. Namely the last Abbreviation Decl was missing a code.
This test has been updated accordingly. However, this commit does
not fix the underlying issue: llvm-dwarfdump does not correctly
verify the debug abbreviation section to catch these kinds of
mistakes. I have updated DWARFVerifier to not dereference a
pointer without first checking it and left a FIXME for future
contributors.
Differential Revision: https://reviews.llvm.org/D151353
Krzysztof Parzyszek [Tue, 30 May 2023 00:15:10 +0000 (17:15 -0700)]
[RDF] Add RegisterAggr::refs to return iterator range, NFC
Krzysztof Parzyszek [Mon, 29 May 2023 23:58:28 +0000 (16:58 -0700)]
[RDF] Create individual phi for each indivisible register
This isn't quite using register units, but it's getting close. The phi
generation is driven by register units, but each phi still contains a
reference to a register, potentially with a mask that amounts to a unit.
In cases of explicit register aliasing this may still create phis with
references that are aliased, whereas separate phis would ideally contain
disjoint references (this is all within a single basic block).
Previously phis used maximal registers, now they use minimal. This is a
step towards both, using register units directly, and a simpler liveness
calculation algorithm. The idea is that a phi cannot reach a reference
to anything smaller than the phi itself represents. Before there could
be a phi for R1_R0, now there will be two for this case (assuming R0 and
R1 have one unit each).
Krzysztof Parzyszek [Mon, 29 May 2023 23:34:04 +0000 (16:34 -0700)]
[RDF] Use RegisterAggr instead of RegisterSet in few places
This shouldn't change any functionality.
Krzysztof Parzyszek [Mon, 29 May 2023 18:09:18 +0000 (11:09 -0700)]
[RDF] Clang-format the sources, NFC
eopXD [Thu, 8 Jun 2023 17:50:13 +0000 (10:50 -0700)]
[Clang][RISCV] Adjust naming from `DeclareRISCVVectorBuiltins` to `DeclareRISCVSiFiveVectorBuiltins`. NFC
The variable indicates if RISC-V Sifive vector builtin functions
are enabled or not. The adjusted naming help clarifies this.
cc: @4vtomat
Jakub Beránek [Thu, 8 Jun 2023 16:41:11 +0000 (09:41 -0700)]
Increase memory of BOLT runtime instrumentation bump allocator used for writing resulting profile
The BOLT instrumentation runtime uses a bump allocator that has a fixed amount of maximum memory. In some cases, this memory limit is not large enough (https://github.com/llvm/llvm-project/issues/59174). We are hitting this limit when instrumenting the Rust compiler with BOLT.
This change increases the memory of the bump allocator used for writing the resulting BOLT profile.
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D151891
Matt Arsenault [Sun, 20 Nov 2022 16:34:20 +0000 (08:34 -0800)]
HIP: Directly call fmin/fmax builtins
Alison Zhang [Thu, 8 Jun 2023 17:08:30 +0000 (13:08 -0400)]
[AIX] Update CMake linker flags to use large glink code
Building clang/llvm as a debug build results in TOC overflow even when
using large code model on AIX. This review updates the
llvm/cmake/modules/HandleLLVMOptions.cmake file to use large glink code
in addition to building as a large code model.
Differential Revision: https://reviews.llvm.org/D151733
Vy Nguyen [Thu, 8 Jun 2023 15:22:46 +0000 (11:22 -0400)]
[lldb][NFC]Update debug (eh-frame) tests to work with new dwarwin MC changes
Details:
D144999 potentially changes the debug format (from compact-unwind to dwarf).
Updated this test to no longer prefer debug-frame over eh-frame to be compatible with the new behaviour
Differential Revision: https://reviews.llvm.org/D152449
LLVM GN Syncbot [Thu, 8 Jun 2023 17:00:55 +0000 (17:00 +0000)]
[gn build] Port
4d13896d8a2e
Thorsten Schütt [Thu, 8 Jun 2023 14:36:45 +0000 (16:36 +0200)]
[GlobalIsel][X86] Legalize G_SELECT
with bug fixes
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D152445
Alexandros Lamprineas [Thu, 11 May 2023 23:07:49 +0000 (00:07 +0100)]
Reland "[FuncSpec] Improve the accuracy of the cost model"
Instead of blindly traversing the use-def chain of constant arguments,
compute known constants along the way. Stop as soon as a user cannot
be replaced by a constant. Keep it light-weight by handling some basic
instruction types.
Differential Revision: https://reviews.llvm.org/D150464
Alexandros Lamprineas [Fri, 2 Jun 2023 10:17:20 +0000 (11:17 +0100)]
Reland "[FuncSpec] Replace LoopInfo with BlockFrequencyInfo"
Using AvgLoopIters on any loop is too imprecise making the cost model
favor users inside loop nests regardless of the actual tripcount.
Differential Revision: https://reviews.llvm.org/D150375
eopXD [Sat, 3 Jun 2023 16:35:28 +0000 (09:35 -0700)]
[1/11][Clang][Type] Expand BuiltinTypeBits from 8 to 9 bits
This patch-set aims to expand all variants of the RVV segment
load/store intrinsics. The first commit expands the limitation of
builtin types from 256 to 512. The following patches expands the
full variants one-by-one.
The next patch introduces a number of new RVV tuple types and lets the
total of builtin types exceed the current limit (256). This patch
attempts to increase the bits used so we can continue to expand new
builtin types.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D152069
eopXD [Thu, 8 Jun 2023 08:37:09 +0000 (01:37 -0700)]
[Clang][Type] Add static assertion to guard future expansion for BuiltinType numbering
Recent expansion D152070 exceeds the limit and I had a hard time
triaging the bug because the overflow just creates unexpected
behaviors within the compiler.
This patch adds a static assertion to keep an eye for overflows when we
expand more types in the future.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D152429
Craig Topper [Thu, 8 Jun 2023 16:15:48 +0000 (09:15 -0700)]
[RISCV] Update documentation for -mvscale-min/max options to mention RISC-V. NFC
Craig Topper [Thu, 8 Jun 2023 16:13:43 +0000 (09:13 -0700)]
[RISCV] Support LMUL!=1 for __attribute__((riscv_rvv_vector_bits(N)))
The first patch supported only LMUL=1 types. This patch supports
LMUL!=1.
LMUL is length multiplier that allows multiple vector registers to
be treated as one large register or a fraction of a single vector
register. Supported values for LMUL are 1/8, 1/4, 1/2, 1, 2, 4, and 8.
An LMUL=2 type will be twice as large as an LMUL=1 type. An LMUL=1/2
type will be half the size as an LMUL=1 type.
Type name with "m2" is LMUL=2, "m4" is LMUL=4.
Type name with "mf2" is LMUL=1/2, "mf4" is LMUL=1/4.
For the LMUL!=1 types the user will need to scale __riscv_v_fixed_vlen
by the LMUL before passing to the attribute.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D150926
Michael Buch [Thu, 8 Jun 2023 15:58:58 +0000 (16:58 +0100)]
[lldb][test] LogTest: Fix stack overflow
The expected function name requires 18 bytes of storage.
Caught by the public ASAN buildbot
Differential Revision: https://reviews.llvm.org/D152454
Fangrui Song [Thu, 8 Jun 2023 16:02:12 +0000 (09:02 -0700)]
[Driver] Make -G TargetSpecific
so that we report `unsupported option '-G' for target ...` on
unsupported targets (most targets).
This error is tested by one target in aix-err-options.c.
Follow-up to D89897 and D90063.
Slava Zakharin [Thu, 8 Jun 2023 15:12:33 +0000 (08:12 -0700)]
[flang][hlfir] Propagate non-default lbounds from the mutable box.
The issue affected type select tests, such that inside the type guard
block the associated variable was using default lbounds instead of
inheriting it from the original variable.
The bridge's `genExprBox` ended up creating BoxValue from a MutableBoxValue
without setting non-default lbounds. So the hlfir.declare generated
for the associated name inside the type guard block was also using
the default lbounds. The fix is to read the value of the mutable box
and propagate the lbounds to the new BoxValue.
The fix might affect more than just select type cases.
Reviewed By: tblah
Differential Revision: https://reviews.llvm.org/D152413
Nikita Popov [Thu, 8 Jun 2023 14:43:26 +0000 (16:43 +0200)]
[Clang] Remove -no-opaque-pointers cc1 flag
Migration of clang tests to opaque pointers is finished, so remove
the -no-opaque-pointers flag.
Differential Revision: https://reviews.llvm.org/D152447
Craig Topper [Thu, 8 Jun 2023 15:47:58 +0000 (08:47 -0700)]
[RISCV] Add test cases to show that rvv_vector_bits attribute is not accepted for vbool or LMUL!=1 RVV types. NFC
The error message isn't great, but it's temporary until we support these.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D152415
Craig Topper [Thu, 8 Jun 2023 15:41:22 +0000 (08:41 -0700)]
[RISCV] Fix crash in lowerVECTOR_INTERLEAVE when VecVT is an LMUL=8 type.
If VecVT is an LMUL=8 VT, we can't concatenate the vectors as that
would create an illegal type. Instead we need to split the vectors
and emit two VECTOR_INTERLEAVE operations that can each be lowered.
Reviewed By: fakepaper56
Differential Revision: https://reviews.llvm.org/D152411
Craig Topper [Thu, 8 Jun 2023 15:41:07 +0000 (08:41 -0700)]
[RISCV] Fix crash in lowerVECTOR_DEINTERLEAVE when VecVT is an LMUL=8 type.
If VecVT is an LMUL=8 VT, we can't concatenate the vectors as that
would create an illegal type. Instead we need to split the vectors
and emit two VECTOR_DEINTERLEAVE operations that can each be lowered.
Reviewed By: luke, rogfer01
Differential Revision: https://reviews.llvm.org/D152402
Nikita Popov [Thu, 8 Jun 2023 15:32:36 +0000 (17:32 +0200)]
[Clang] Remove some explicit -opaque-pointers options in tests (NFC)
This is the default, so don't specify it explicitly, in preparation
for removing the option.
Mirko Brkusanin [Thu, 8 Jun 2023 15:29:17 +0000 (17:29 +0200)]
[GlobalISel] Check if ShiftAmt is greater then size of operand
matchCombineShlOfExtend did not check if the size of new shift would be
wider then a size of operand. Current condition did not work if the value
being shifted was zero. Updated to support vector splat.
Patch by: Acim Maravic
Differential Revision: https://reviews.llvm.org/D151122
Vladislav Dzhidzhoev [Thu, 8 Jun 2023 15:36:30 +0000 (17:36 +0200)]
Revert "[DebugMetadata] Simplify handling subprogram's retainedNodes field. NFCI (1/7)"
This reverts commit
4418434c6de7a861e241ba2448ea4a12080cf08f.
Reverted because it breaks tests of OCaml bindings.
Krzysztof Parzyszek [Thu, 8 Jun 2023 15:18:07 +0000 (08:18 -0700)]
[Hexagon] Make RDF copy propagation a bit more aggressive
Update the testcase to actually test for RDF's output.
Craig Topper [Thu, 8 Jun 2023 15:23:16 +0000 (08:23 -0700)]
[RISCV] Add VPatBinaryVL_V to VPatBinaryFPWVL_VV_VF_WV_WF like VPatBinaryWVL_VV_VX_WV_WX.
This should hopefully fix a regression from D151969.
Paul Scoropan [Wed, 31 May 2023 15:06:35 +0000 (15:06 +0000)]
[Flang] Replace intrinsic function type generators with single generic function type generator
In a future patch we plan on introducing a large set of Power-PC specific intrinsics. During our prototyping we found that the number of function type generators we were defining, plus those already defined, were reaching an unreasonable number. This patch introduces a generic function type generator function that can be used for almost all cases. The generator supports creating function types with up to 4 arguments and with arguments/return type of types: void, integer, real, and comlex. The intention is for a future patch, which introduces a set of PowerPC-specific vector intrinsics, to also introduce support in the generator for: integer vector, unsigned vector, and real vector types.
Reviewed By: luporl
Differential Revision: https://reviews.llvm.org/D151812
Felipe de Azevedo Piovezan [Sat, 3 Jun 2023 10:53:11 +0000 (06:53 -0400)]
[AppleAccelTable][NFC] Make FormParams member of AppleAccelTable
These are used throughout the class and are recreated every time they are used.
To prevent the risk of it being created incorrectly in different places, we
create it once and in the earliest moment possible: when the table is extracted.
Depends on D151989
Differential Revision: https://reviews.llvm.org/D152156
Zain Jaffal [Thu, 8 Jun 2023 14:57:50 +0000 (15:57 +0100)]
change checking for auto-init metadata to use `equalsStr` instead of casing MDOperand nodes.
Since `MD_annotation` metadata now supports having mutliple strings in the annotation node. casing Operand to string directly will cause a crash. When checking if `MDOperand` equals str you can use `equalsStr` method.
Reviewed By: serge-sans-paille
Differential Revision: https://reviews.llvm.org/D152372
tripleCC [Thu, 8 Jun 2023 14:48:24 +0000 (16:48 +0200)]
[StaticAnalyzer] Fix false negative on NilArgChecker when creating literal object
Fix false negative on NilArgChecker when creating literal object, such
as @[nullableObject].
Patch By tripleCC!
Differential Revision: https://reviews.llvm.org/D152269
Akshay Khadse [Thu, 8 Jun 2023 14:39:56 +0000 (22:39 +0800)]
[x86][MC] Fix movdir64b addressing
This patch is to fix the [[ https://github.com/llvm/llvm-project/issues/63045 | issue 63045]].
Look at the following code:
```
int main(int argc, char *argv[]) {
int arr[1000];
__asm movdir64b rax, ZMMWORD PTR [arr]
return 0;
}
```
Compiling this code using `clang -O0 -fasm-blocks bug.c` gives the a linker error.
The problem seems to be in the generated assembly. Following is the out put of `clang -S -O0 -fasm-blocks bug.c`:
```
movq %rsi, -16(%rbp)
#APP
movdir64b arr, %rax
#NO_APP
xorl %eax, %eax
```
The symbol `arr` should be replaced with some address like `-4(%rbp)`.
This makes me believe that issue is not in the linker, but with the ASM parser.
This issue originates with patch [D145893](https://reviews.llvm.org/D145893). And that's why reverting it fixes the issue. More specifically, the function [isMem512_GR64()](https://github.com/llvm/llvm-project/blob/
ff471dcf7669b1ad7903a44d0773bef4eb175eb9/llvm/lib/Target/X86/AsmParser/X86Operand.h#L404) within the [llvm/lib/Target/X86/AsmParser/X86Operand.h](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/X86/AsmParser/X86Operand.h) file.
Reviewed By: skan
Differential Revision: https://reviews.llvm.org/D151863
Nikita Popov [Thu, 8 Jun 2023 14:21:10 +0000 (16:21 +0200)]
[Clang] Convert some tests to opaque pointers (NFC)
These tests all require some adjustments to make sure that struct
types still get generated, mostly done by stripping pointer
indirections.
Some of this may no longer test the situation it was originally
intended for, e.g. the issue from pr18962 just doesn't really
exist anymore with opaque pointers, as we no longer generate
recursive types.
Nishant Patel [Thu, 8 Jun 2023 14:30:54 +0000 (10:30 -0400)]
[mlir][spirv] Add a canonicalization pattern for UModOp
Add a transformation for a pattern like
%6 = "spirv.Constant"() <{value = 32 : i32}> : () -> i32
%7 = "spirv.UMod"(%5, %6) : (i32, i32) -> i32
%8 = "spirv.Constant"() <{value = 4 : i32}> : () -> i32
%9 = "spirv.UMod"(%7, %8) : (i32, i32) -> i32
to transform to
%6 = "spirv.Constant"() <{value = 32 : i32}> : () -> i32
%7 = "spirv.UMod"(%5, %6) : (i32, i32) -> i32
%8 = "spirv.Constant"() <{value = 4 : i32}> : () -> i32
%9= "spirv.UMod"(%5, %8) : (i32, i32) -> i32
Patch By: nbpatel
Reviewed By: antiagainst, kuhar
Differential Revision: https://reviews.llvm.org/D152341
Felipe de Azevedo Piovezan [Thu, 1 Jun 2023 14:55:06 +0000 (10:55 -0400)]
[AppleAccelTable][NFC] Refactor equal_range code
The current implementation of AppleAcceleratorTable::equal_range has a couple of
drawbacks:
1. Assumptions about how the hash table is structured are hard-coded throughout
the code. Unless you are familiar with the data layout of the table, it becomes
tricky to follow the code.
2. We currently load strings from the string table even for hashes that don't
match our current search hash. This is wasteful.
3. There is no error checking in most DataExtractor calls that can fail.
This patch cleans up (1) by making helper methods that hide the details of the
data layout from the algorithms relying on them. This should also help us in
future patches, where we want to expand the interface to allow iterating over
_all_ entries in the table, and potentially clean up the existing Iterator
class.
The changes above also fix (2), as the problem "just vanishes" when you have a
function called "idxOfHashInBucket(SearchHash)".
The changes above also fix (3), as having individual functions allow us to
expose the points in which reading data can fail. This is particularly important
as we would like to share this implementation with LLDB, which requires robust
error handling.
The changes above are also a step towards addressing a comment left by the
original author:
```
/// TODO: Generalize the rest of the AppleAcceleratorTable interface and move it
/// to this class.
```
I suspect a lot of these helper functions created also apply to DWARF 5's
accelerator table, so they could be moved to the base class.
The changes above also expose a bug in this implementation: the previous
algorithm looks at _one_ string inside the bucket, but never bothers checking
for collisions. When the main search loop is written as it is with this patch,
the problem becomes evident. We do not fix the issue in this patch, as it is
intended to be NFC.
Differential Revision: https://reviews.llvm.org/D151989
Nicolas Vasilache [Thu, 8 Jun 2023 14:15:54 +0000 (14:15 +0000)]
[mlir][Linalg][Transform] Fail gracefully instead of asserting
Teresa Johnson [Wed, 7 Jun 2023 22:42:56 +0000 (15:42 -0700)]
[ThinLTO] Ignore callee edge to global variable
Since the symbols in the ThinLTO summary are indexed by GUID we can end
up in corner cases where a callee edge in the combined index goes to a
summary for a global variable. This could happen in the case of hash
collisions, and in the case of SamplePGO profiles could potentially happen
due to code changes (since we synthesize call edges to GUIDs that were
inlined callees in the profiled code).
Handle this by simply ignoring any non-FunctionSummary callees.
Differential Revision: https://reviews.llvm.org/D152406
Nikita Popov [Thu, 8 Jun 2023 08:39:56 +0000 (10:39 +0200)]
[Clang] Convert some tests to opaque pointers (NFC)
Mathieu Fehr [Wed, 7 Jun 2023 09:52:59 +0000 (10:52 +0100)]
[mlir][irdl] NFC: Ensure ops ends with `Op` suffix
IRDL operations were inconsistent in their naming. They now
all end with the `Op` suffix.
Reviewed By: rriddle, jpienaar
Differential Revision: https://reviews.llvm.org/D152354
Navdeep Katel [Mon, 5 Jun 2023 06:39:35 +0000 (12:09 +0530)]
[MLIR][GPU] Add 16-bit version of cudaMemset in cudaRuntimeWrappers
Add 16-bit version of cudaMemset in cudaRuntimeWrappers and update the GPU to LLVM lowering.
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D151642
Matt Arsenault [Fri, 17 Feb 2023 15:03:40 +0000 (11:03 -0400)]
X86: Add more is.fpclass lowering tests
Matt Arsenault [Tue, 6 Jun 2023 19:25:25 +0000 (15:25 -0400)]
AMDGPU: Don't run AMDGPUAttributor with -O0
Dmitry Makogon [Thu, 8 Jun 2023 11:27:15 +0000 (18:27 +0700)]
[SimpleLoopUnswitch] Verify LoopInfo after turning guards to branches
SplitBlockAndInsertIfThen doesn't correctly update LoopInfo when called
with Unreachable=true, which is the case when we turn guards to branches
in SimpleLoopUnswitch.
This adds LoopInfo verification before returning from turnGuardIntoBranch.
Matt Arsenault [Wed, 7 Jun 2023 22:12:55 +0000 (18:12 -0400)]
AMDGPU: Merge dag and gisel tests for non-entry LDS handling
Matt Arsenault [Wed, 7 Jun 2023 21:47:02 +0000 (17:47 -0400)]
AMDGPU: Fix errors in test from using non-gfx calling convention
Amir Ayupov [Wed, 7 Jun 2023 00:53:15 +0000 (17:53 -0700)]
[BOLT] Handle recursive calls as inter-branches in DataAggregator
Align yaml and fdata profiles by applying the same treatment to recursive
calls (direct, indirect, tail). fdata profile increments entry count when
handling recursive calls. Make perf/pre-aggregated perf reader (DataAggregator)
do the same.
Test Plan:
In pre-aggregated-perf.test, add a dummy pre-aggregated branch entry between
an indirect call in `frame_dummy` function and its entry point.
Check that YAML profile gets incremented entry count for this function.
End-to-end test: https://github.com/rafaelauler/bolt-tests/pull/24
Reviewed By: #bolt, maksfb
Differential Revision: https://reviews.llvm.org/D152338
Florian Hahn [Thu, 8 Jun 2023 11:10:03 +0000 (12:10 +0100)]
[LV] Extend test coverage for loops with accesses with clamped indexes.
Extend test coverage ahead of upcoming patches.
Marco Elver [Wed, 7 Jun 2023 14:17:08 +0000 (16:17 +0200)]
[memprof] Fix rawprofile test on 32-bit architectures
The first argument of StackTrace constructor is a pointer to uptr. Match
the type accordingly.
This fixes builds on 32-bit architectures.
Marco Elver [Wed, 7 Jun 2023 20:44:49 +0000 (22:44 +0200)]
[sanitizer_common] Move UNDEFINED attribute outside _MSC_VER guard
The __has_attribute check is sufficient, and if clang-cl is used, the
attribute will be available as well.
Florian Hahn [Thu, 8 Jun 2023 10:58:58 +0000 (11:58 +0100)]
[LV] Remove UB caused by undef from pr37248.ll (NFC).
Also generate full check lines.
Mathieu Fehr [Tue, 6 Jun 2023 19:07:01 +0000 (20:07 +0100)]
[mlir][irdl] Add `irdl.c_pred`
`irdl.c_pred` is an attribute constraint defined by a C++ predicate.
Contrary to the other constraints, this operation cannot be used in
dialects that are registered at runtime. Its principal use is to
share dialect definitions that are defined in C++ or ODS.
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D152301
Jay Foad [Thu, 8 Jun 2023 07:11:01 +0000 (08:11 +0100)]
[RegScavenger] Remove scavengeRegister
All users have been converted to scavengeRegisterBackwards.
Differential Revision: https://reviews.llvm.org/D152425
Luo, Yuanke [Tue, 6 Jun 2023 05:27:15 +0000 (13:27 +0800)]
[X86] Prefer vmovmsk instead of vtest for alderlake.
On alderlake E-core, the latency of VMOVMSKPS is 5 for YMM/XMM. The
latency of VPTESTPS is 7 for YMM and is 5 for XMM. Since alderlake use
the P-core schedule model, we can't determine which one better based on
the latency information of schedule model. Alternatively we add an
tuning feature for alderlake and select VMOVMSKPS with the indication
for the tuning feature. In the case of "vmovmskps + test + jcc", the
test and jcc can be fused, while vtest and jcc can't.
Differential Revision: https://reviews.llvm.org/D152227
Amaury Séchet [Thu, 8 Jun 2023 09:07:36 +0000 (09:07 +0000)]
[NFC] Add regression tests for an infinite loop caused by D127115
Michael Platings [Thu, 8 Jun 2023 08:17:49 +0000 (09:17 +0100)]
[NFC][Driver] Change MultilibBuilder flags argument order
Follow up to D151437
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D152353
Nikita Popov [Thu, 8 Jun 2023 08:07:24 +0000 (10:07 +0200)]
[Clang] Convert some tests to opaque pointers (NFC)
Mariya Podchishchaeva [Wed, 7 Jun 2023 14:28:04 +0000 (10:28 -0400)]
[clang] Fix consteval operators in template contexts
Clang used to reject consteval operators if they're used inside a
template due to TreeTransform putting two different `DeclRefExpr`
expressions for the same reference of the same operator declaration into
`ReferenceToConsteval` set.
It seems there was an attempt to not rebuild the whole operator that
never succeeded, so this patch just removes this attempt and
problemating referencing of a `DeclRefExpr` that always ended up
discarded.
Fixes https://github.com/llvm/llvm-project/issues/62886
Reviewed By: cor3ntin
Differential Revision: https://reviews.llvm.org/D151553
Nicolas Vasilache [Wed, 7 Jun 2023 18:28:45 +0000 (18:28 +0000)]
[mlir][vector] NFC - Add debug information to vector unrolling patterns
Nikita Popov [Thu, 8 Jun 2023 07:12:34 +0000 (09:12 +0200)]
[Clang] Convert some tests to opaque pointers (NFC)
Bing1 Yu [Thu, 8 Jun 2023 07:51:43 +0000 (15:51 +0800)]
[CodeGen] Disable default copy ctor and copy assignment operator for AggressiveAntiDepBreaker
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D152233
Bing1 Yu [Thu, 8 Jun 2023 07:50:54 +0000 (15:50 +0800)]
[CodeGen] Disable default copy ctor and copy assignment operator for PressureDiffs
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D152237
Bing1 Yu [Thu, 8 Jun 2023 07:49:49 +0000 (15:49 +0800)]
[CodeGen] Disable default copy ctor and copy assignment operator for MachineSchedContext
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D152240
Matthias Springer [Thu, 8 Jun 2023 06:58:40 +0000 (08:58 +0200)]
[mlir][vector][transform] Drop redundant "apply_" from op names
This is for consistency with the other ops.
Differential Revision: https://reviews.llvm.org/D152355
Shivam Gupta [Thu, 8 Jun 2023 03:30:05 +0000 (09:00 +0530)]
[InstCombine] (icmp eq A, -1) & (icmp eq B, -1) --> (icmp eq (A&B), -1)
This patch add another icmp fold for -1 case.
This fixes https://github.com/llvm/llvm-project/issues/62311,
where we want instcombine to merge all compare intructions together so
later passes like simplifycfg and slpvectorize can better optimize this
chained comparison.
Reviewed By: goldstein.w.n
Differential Revision: https://reviews.llvm.org/D151660
Shivam Gupta [Thu, 8 Jun 2023 03:30:02 +0000 (09:00 +0530)]
[InstCombine] Add test case for (icmp eq A, -1) & (icmp eq B, -1) --> (icmp eq (A&B), -1); NFC
Reviewed By: goldstein.w.n
Differential Revision: https://reviews.llvm.org/D151694
Yeting Kuo [Tue, 6 Jun 2023 08:55:27 +0000 (16:55 +0800)]
[DAGCombiner] Use generalized pattern matcher in visitFMA to support vp.fma.
Note: Some patterns in visitFMA are needed refined to support splat of constant.
Reviewed By: luke
Differential Revision: https://reviews.llvm.org/D152260
Wenju He [Thu, 8 Jun 2023 01:23:52 +0000 (09:23 +0800)]
[ExecutionEngine] Support TargetExtType in Interpreter
When llvm Interpreter is used to execute bitcode, it shall be able to handle TargetExtType.
Reviewed By: jcranmer-intel
Differential Revision: https://reviews.llvm.org/D148283
Andrew Gozillon [Thu, 8 Jun 2023 00:27:34 +0000 (19:27 -0500)]
[Clang][OpenMP][OMPIRBuilder] Fix getTargetEntryUniqueInfo to fatal error instead of assert when it cannot generate a unique ID
This prevents access of uninitialized ID components later, or continuing progress
further making errors harder to track down.
Hoepfully this will be the last in my long series of mistakes in recent
commits relating to this area of code!
Joseph Huber [Fri, 2 Jun 2023 00:16:29 +0000 (19:16 -0500)]
[OpenMP] Fix using the target ID when using the new driver
AMDGPU sometimes uses a novel formatting for their offloading
architecture called the target id. This merges the attributes and the
architecture name into a single string. Previously, we were passing this
as the canonical architecture name. This caused the linker wrapper to
fail to find relevant libraries and then pass an incalid CPU name. This
patch changes the handling in the offload packager to handle the
canonical architecture and then extract the features.
Reviewed By: yaxunl
Differential Revision: https://reviews.llvm.org/D150998
Leonard Chan [Thu, 8 Jun 2023 00:14:53 +0000 (00:14 +0000)]
Revert "Revert "[clang-format] Fix overlapping replacements before PPDirectives""
This reverts commit
94e75469597f197f9c4b45baa6c8a576c78dbd02.
Apparently I broke some builders with the original revert: http://45.33.8.238/linux/109159/step_7.txt
Craig Topper [Thu, 8 Jun 2023 00:01:24 +0000 (17:01 -0700)]
[RISCV] Use Selection::getElementCount to simplify code. NFC
Tue Ly [Wed, 7 Jun 2023 23:23:12 +0000 (19:23 -0400)]
[libc] Update FMA detection macro for x86-64 targets.
To generate fma instructions for x86-64 targets, we need both -mavx2
and -mfma.
Reviewed By: brooksmoses
Differential Revision: https://reviews.llvm.org/D152410
Craig Topper [Wed, 7 Jun 2023 23:52:33 +0000 (16:52 -0700)]
[RISCV] Pass SDLoc by const reference. NFC
Med Ismail Bennani [Wed, 7 Jun 2023 23:51:45 +0000 (16:51 -0700)]
[lldb] Disable variable watchpoints when going out of scope
If we use a variable watchpoint with a condition using a scope variable,
if we go out-of-scope, the watpoint remains active which can the
expression evaluator to fail to parse the watchpoint condition (because
of the missing varible bindings).
This was discovered after `watchpoint_callback.test` started failing on
the green dragon bot.
This patch should address that issue by setting an internal breakpoint
on the return addresss of the current frame when creating a variable
watchpoint. The breakpoint has a callback that will disable the watchpoint
if the the breakpoint execution context matches the watchpoint execution
context.
This is only enabled for local variables.
This patch also re-enables the failing test following
e1086384e584.
rdar://
109574319
Differential Revision: https://reviews.llvm.org/D151366
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Leonard Chan [Wed, 7 Jun 2023 23:44:32 +0000 (23:44 +0000)]
Revert "[clang-format] Fix overlapping replacements before PPDirectives"
This reverts commit
4b9764959dc4b8783e18747c1742ab164e4bc4ee.
Reverting since this causes clang-formtat to incorrectly fall into an
error path yet return a zero exit code despite not formatting the file
at all.
See https://github.com/llvm/llvm-project/issues/63170
Sam McCall [Wed, 7 Jun 2023 23:36:59 +0000 (01:36 +0200)]
Fix namespace of operator<< defn
Lang Hames [Wed, 7 Jun 2023 17:16:14 +0000 (10:16 -0700)]
[ORC] Simplify construction of EPCIndirectionUtils.
ExecutionSessions always have an ExecutorProcessControl object now, so we can
construct EPCIndirectionUtil objects directly from an ExecutionSession.
Craig Topper [Wed, 7 Jun 2023 23:25:18 +0000 (16:25 -0700)]
[RISCV] Add i8 vector interleave test. NFC
Jonas Devlieghere [Wed, 7 Jun 2023 23:17:00 +0000 (16:17 -0700)]
[lldb] Reinvoke crashlog under lldb when run with -i from the command line
Run crashlog inside lldb when invoked in interactive mode from the
command line. Currently, when passing -i to crashlog from the command
line, we symbolicate in LLDB and immediately exit right after. This
pretty much defeats the purpose of interactive mode. That said, we
wouldn't want to re-implement the driver from the crashlog script.
Re-invoking the crashlog command from inside LLDB solves the issue.
rdar://
97801509
Differential revision: https://reviews.llvm.org/D152319
Andrew Gozillon [Wed, 7 Jun 2023 22:52:28 +0000 (17:52 -0500)]
[Clang][OpenMP][OMPIRBuilder] Change llvm_unreachable inside of getTargetEntryUniqueInfo to a more apt assert
However, with the correct condition this time and appropriate Clang
callback function to give the correct fallback Filename and Line Info.
Craig Topper [Wed, 7 Jun 2023 22:43:36 +0000 (15:43 -0700)]
[RISCV] Remove tab characters from a test. NFC
Razvan Lupusoru [Wed, 7 Jun 2023 21:40:20 +0000 (14:40 -0700)]
[llvm][openacc] Fix OpenACC frontend test
After D152389, single reduction clause constraint was removed.
This broke the OpenACC frontend test which seems to rely on specific
allowed clause ordering.
Reviewed By: vzakhari
Differential Revision: https://reviews.llvm.org/D152398