Jay Foad [Tue, 21 Jun 2022 10:46:28 +0000 (11:46 +0100)]
[AMDGPU] New AMDGPUInsertDelayAlu pass
Differential Revision: https://reviews.llvm.org/D128270
Daniel Bertalan [Wed, 29 Jun 2022 09:33:41 +0000 (11:33 +0200)]
[lld-macho] Emit REBASE_OPCODE_ADD_ADDR_IMM_SCALED if possible
An ADD_ADDR rebase opcode's argument can be encoded as an immediate if
the offset is less than 15 * word size. This change reduces the size of
chromium_framework by 100+ KiB.
Differential Revision: https://reviews.llvm.org/D128798
Volodymyr Sapsai [Thu, 23 Jun 2022 01:08:05 +0000 (18:08 -0700)]
[ODRHash diagnostics] Move repetetive code at lambda calls into lambdas themselves. NFC.
It helps to avoid copy-paste mistakes and makes custom code paths more
noticeable.
Not funnelling all diagnostic through `ODRDiagDeclError` because plan to
break down `err_module_odr_violation_mismatch_decl_diff` into smaller
pieces instead of making it bigger and bigger.
Differential Revision: https://reviews.llvm.org/D128487
Corentin Jabot [Wed, 29 Jun 2022 20:21:33 +0000 (22:21 +0200)]
[Clang] Mark consteval as supported in Clang 15 [NFC]
Support was completed by D119646.
Jay Foad [Tue, 28 Jun 2022 14:14:00 +0000 (15:14 +0100)]
[AMDGPU] Generate checks for clamp.ll and add GFX11
Differential Revision: https://reviews.llvm.org/D128802
Sam Estep [Wed, 29 Jun 2022 20:13:56 +0000 (20:13 +0000)]
[clang][dataflow] Delete SourceLocationsLattice
This patch deletes the now-unused `SourceLocationsLattice` class, along with its containing files and surrounding helper functions and tests.
Reviewed By: xazax.hun, ymandel, sgatev, gribozavr2
Differential Revision: https://reviews.llvm.org/D128448
Zequan Wu [Wed, 29 Jun 2022 20:11:04 +0000 (13:11 -0700)]
Sam Estep [Wed, 29 Jun 2022 20:10:31 +0000 (20:10 +0000)]
[clang][dataflow] Use NoopLattice in optional model
Followup to D128352. This patch pulls the `NoopLattice` class out from the `NoopAnalysis.h` test file into its own `NoopLattice.h` source file, and uses it to replace usage of `SourceLocationsLattice` in `UncheckedOptionalAccessModel`.
Reviewed By: ymandel, sgatev, gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D128356
Richard Smith [Wed, 29 Jun 2022 20:06:42 +0000 (13:06 -0700)]
Fix miscompile with [[no_unique_address]] struct fields.
If a zero-sized field has a non-trivial initializer, it should prevent
the overall struct initialization from being folded to a constant during
IR generation. Don't just ignore zero-sized fields entirely in IR
constant emission.
Richard Smith [Fri, 6 May 2022 21:22:24 +0000 (14:22 -0700)]
Repair tautological condition.
Fixes #49725.
Fabian Parzefall [Wed, 29 Jun 2022 20:01:46 +0000 (13:01 -0700)]
[BOLT] Add option to randomize function split point
For test purposes, we want to split functions at a random split point
to be able to test different layouts without relying on the profile.
This patch introduces an option, that randomly chooses a split point
to partition blocks of a function into hot and cold regions.
Reviewed By: Amir, yota9
Differential Revision: https://reviews.llvm.org/D128773
rdzhabarov [Wed, 29 Jun 2022 19:47:57 +0000 (19:47 +0000)]
[Fix] Fix compilation warning on unused var.
Sam Estep [Wed, 29 Jun 2022 19:19:58 +0000 (19:19 +0000)]
[clang][dataflow] Use diagnosis API in optional checker
Followup to D127898. This patch updates `bugprone-unchecked-optional-access` to use the new `diagnoseCFG` function instead of just looking at the exit block.
A followup to this will update the optional model itself to use a noop lattice rather than redundantly computing the diagnostics in both phases of the analysis.
Reviewed By: ymandel, sgatev, gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D128352
Sam Estep [Wed, 29 Jun 2022 19:34:44 +0000 (19:34 +0000)]
Revert "[clang][dataflow] Use diagnosis API in optional checker"
This reverts commit
cafb8b4ff2c38f81e65f97193eb1d8d16c581522.
Sam Estep [Wed, 29 Jun 2022 19:34:30 +0000 (19:34 +0000)]
Revert "[clang][dataflow] Use NoopLattice in optional model"
This reverts commit
335c05f5d19fecd5c0972ac801e58248d772a78e.
Florian Hahn [Wed, 29 Jun 2022 19:28:42 +0000 (20:28 +0100)]
[LoopUnrollRuntime] Invalidate SCEV for exit phi in ConnectProlog.
ConnectProlog adds new incoming values to exit phi nodes which can
change the SCEV for the phi after
20d798bd47ec51.
Fix is analog to
cfc741bc0e029.
Fixes #56286.
Muhammad Omair Javaid [Wed, 29 Jun 2022 09:24:26 +0000 (13:24 +0400)]
[LLDB] Allow API tests to override -gdwarf on Windows
This patch fixes LLDB API tests MakeFile.rules to allow overriding of
debug symbol flags when compiling tests for Windows.
Previously windows tests were forced to emit only dwarf debug symbols
as majority of the tests rely on dwarf debug info. After this patch
any test can override debug symbol flag by setting DEBUG_INFO_FLAG
variable in its make file.
River Riddle [Wed, 29 Jun 2022 19:23:00 +0000 (12:23 -0700)]
[mlir] Update the pass crash reproducer documentation
The reproducer is now encoded using an external resource, instead
of a comment at the top of the file.
Muhammad Omair Javaid [Wed, 29 Jun 2022 09:44:28 +0000 (13:44 +0400)]
Fix inline-record.test for Arm/Windows
This patch fixes inline-record.test to run on multiple platforms
including Arm/Windows. Test is fixed to expect any value for id
fields of functions and blocks returned by 'image lookup' command.
This field can be any value as it is internally generated id.
Sam Estep [Wed, 29 Jun 2022 19:20:46 +0000 (19:20 +0000)]
[clang][dataflow] Use NoopLattice in optional model
Followup to D128352. This patch pulls the `NoopLattice` class out from the `NoopAnalysis.h` test file into its own `NoopLattice.h` source file, and uses it to replace usage of `SourceLocationsLattice` in `UncheckedOptionalAccessModel`.
Reviewed By: ymandel, sgatev, gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D128356
Sam Estep [Wed, 29 Jun 2022 19:19:58 +0000 (19:19 +0000)]
[clang][dataflow] Use diagnosis API in optional checker
Followup to D127898. This patch updates `bugprone-unchecked-optional-access` to use the new `diagnoseCFG` function instead of just looking at the exit block.
A followup to this will update the optional model itself to use a noop lattice rather than redundantly computing the diagnostics in both phases of the analysis.
Reviewed By: ymandel, sgatev, gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D128352
Sam Estep [Wed, 29 Jun 2022 19:18:10 +0000 (19:18 +0000)]
[clang][dataflow] Add API to separate analysis from diagnosis
This patch adds an optional `PostVisitStmt` parameter to the `runTypeErasedDataflowAnalysis` function, which does one more pass over all statements in the CFG after a fixpoint is reached. It then defines a `diagnose` method for the optional model in a new `UncheckedOptionalAccessDiagnosis` class, but only integrates that into the tests and not the actual optional check for `clang-tidy`. That will be done in a followup patch.
The primary motivation is to separate the implementation of the unchecked optional access check into two parts, to allow for further refactoring of just the model part later, while leaving the checking part alone. Currently there is duplication between the `transferUnwrapCall` and `diagnoseUnwrapCall` functions, but that will be dealt with in the followup.
Because diagnostics are now all gathered into one collection rather than being populated at each program point like when computing a fixpoint, this patch removes the usage of `Pair` and `UnorderedElementsAre` from the optional model tests, and instead modifies all their expectations to simply check the stringified set of diagnostics against a single string, either `"safe"` or some concatenation of `"unsafe: input.cc:y:x"`. This is not ideal as it loses any connection to the `/*[[check]]*/` annotations in the source strings, but it does still retain the source locations from the diagnostic strings themselves.
Reviewed By: sgatev, gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D127898
River Riddle [Tue, 28 Jun 2022 20:39:15 +0000 (13:39 -0700)]
[mlir] Refactor pass crash reproducer generation to be an assembly resource
We currently generate reproducer configurations using a comment placed at
the top of the generated .mlir file. This is kind of hacky given that comments
have no semantic context in the source file and can easily be dropped. This
strategy also wouldn't work if/when we have a bitcode format. This commit
switches to using an external assembly resource, which is verifiable/can
work with a hypothetical bitcode naturally/and removes the awkward processing
from mlir-opt for splicing comments and re-applying command line options. With
the removal of command line munging, this opens up new possibilities for
executing reproducers in memory.
Differential Revision: https://reviews.llvm.org/D126447
River Riddle [Tue, 28 Jun 2022 20:25:24 +0000 (13:25 -0700)]
[mlir] Allow for attaching external resources to .mlir files
This commit enables support for providing and processing external
resources within MLIR assembly formats. This is a mechanism with which
dialects, and external clients, may attach additional information when
printing IR without that information being encoded in the IR itself.
External resources are not uniqued within the MLIR context, are not
attached directly to any operation, and are solely intended to live and be
processed outside of the immediate IR. There are many potential uses of this
functionality, for example MLIR's pass crash reproducer could utilize this to
attach the pass resource executing when a crash occurs. Other types of
uses may be embedding large amounts of binary data, such as weights in ML
applications, that shouldn't be copied directly into the MLIR context, but
need to be kept adjacent to the IR.
External resources are encoded using a key-value pair nested within a
dictionary anchored by name either on a dialect, or an externally registered
entity. The key is an identifier used to disambiguate the data. The value
may be stored in various limited forms, but general encodings use a string
(human readable) or blob format (binary). Within the textual format, an
example may be of the form:
```mlir
{-#
// The `dialect_resources` section within the file-level metadata
// dictionary is used to contain any dialect resource entries.
dialect_resources: {
// Here is a dictionary anchored on "foo_dialect", which is a dialect
// namespace.
foo_dialect: {
// `some_dialect_resource` is a key to be interpreted by the dialect,
// and used to initialize/configure/etc.
some_dialect_resource: "Some important resource value"
}
},
// The `external_resources` section within the file-level metadata
// dictionary is used to contain any non-dialect resource entries.
external_resources: {
// Here is a dictionary anchored on "mlir_reproducer", which is an
// external entity representing MLIR's crash reproducer functionality.
mlir_reproducer: {
// `pipeline` is an entry that holds a crash reproducer pipeline
// resource.
pipeline: "func.func(canonicalize,cse)"
}
}
```
Differential Revision: https://reviews.llvm.org/D126446
Craig Topper [Wed, 29 Jun 2022 18:20:30 +0000 (11:20 -0700)]
[RISCV] Pre-commit tests for D128843. NFC
Joseph Huber [Wed, 29 Jun 2022 18:53:45 +0000 (14:53 -0400)]
[OpenMP] Add variant extension that applies to declarations
This patch adds a new extension to the `omp begin / end declare variant`
support that causes it to apply to function declarations as well. This
is explicitly not done in the standard, but can be useful in some
situations so we should provide it as an extension. This will allow us
to uniquely bind and overload existing definitions with a simple
declaration using variants.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D124624
Matt Arsenault [Mon, 24 Jan 2022 16:35:34 +0000 (11:35 -0500)]
AMDGPU: Add gfx11 feature to force initializing 16 input SGPRs
The total user+system SGPR count needs to be padded out to 16 if fewer
inputs are enabled.
Joseph Huber [Wed, 29 Jun 2022 18:39:42 +0000 (14:39 -0400)]
[LinkerWrapper] Change wrapping to include jumps for other variables
Summary:
We don't currently support other variable types, like managed or
surface. This patch simply adds code that checks the flags and does
nothing. This prevents us from registering a surface as a variable as we
do now. In the future, registering these will require adding the flags
to the entry struct.
Peter Klausler [Mon, 27 Jun 2022 21:22:31 +0000 (14:22 -0700)]
[flang][runtime] Emit "0.0E+0" for (1PG0.0) editing of 0.0
When a scale factor is in effect, respect it for G0.0 output editing.
Differential Revision: https://reviews.llvm.org/D128761
Egor Zhdan [Wed, 29 Jun 2022 12:35:54 +0000 (13:35 +0100)]
[Clang][Preprocessor] Fix inconsistent `FLT_EVAL_METHOD` when compiling vs preprocessing
When running `clang -E -Ofast` on macOS, the `__FLT_EVAL_METHOD__` macro is `0`, which causes the following typedef to be emitted into the preprocessed source: `typedef float float_t`.
However, when running `clang -c -Ofast`, `__FLT_EVAL_METHOD__` is `-1`, and `typedef long double float_t` is emitted.
This causes build errors for certain projects, which are not reproducible when compiling from preprocessed source.
The issue is that `__FLT_EVAL_METHOD__` is configured in `Sema::Sema` which is not executed when running in `-E` mode.
This change moves that logic into the preprocessor initialization method, which is invoked correctly in `-E` mode.
rdar://
96134605
rdar://
92748429
Differential Revision: https://reviews.llvm.org/D128814
Peter Klausler [Thu, 23 Jun 2022 00:42:57 +0000 (17:42 -0700)]
[flang] Better error recovery for bad submodules
When a submodule appears in a source file and the compiler can't find the
named ancestor module (and submodule, if one appears), crashes may occur
later due to the absence of a scope. For better resilience, a dummy
ancestral scope should be generated within which the submodule scope
can be created.
Differential Revision: https://reviews.llvm.org/D128760
Valentin Clement [Wed, 29 Jun 2022 18:06:11 +0000 (20:06 +0200)]
[flang] Fix lowering issue with character temp
- Add verifiers that determine if an Op requires type parameters or
not and checks that the correct number of parameters is specified.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D128828
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Benoit Jacob [Tue, 28 Jun 2022 16:50:39 +0000 (16:50 +0000)]
Fix CombineContractBroadcast folding reduction iterators.
Fix CombineContractBroadcast folding reduction iterators.
Differential Revision: https://reviews.llvm.org/D128739
Pavel Labath [Wed, 29 Jun 2022 17:59:24 +0000 (19:59 +0200)]
[lldb] Attempt to fix TestStepThroughTrampoline on windows
Fangrui Song [Wed, 29 Jun 2022 17:42:54 +0000 (10:42 -0700)]
[llvm-objcopy] Remove support for legacy .zdebug sections
clang 14 removed -gz=zlib-gnu support and ld.lld removed linker input support
for zlib-gnu in D126793. Now let's remove zlib-gnu from llvm-objcopy.
* .zdebug* sections are no longer recognized as debug sections. --strip* don't remove them.
They are copied like other opaque sections
* --decompress-debug-sections does not uncompress .zdebug* sections
* --compress-debug-sections=zlib-gnu is not supported
It is very rare but in case a user has object files using .zdebug . They can use
llvm-objcopy<15 or GNU objcopy for uncompression.
--compress-debug-sections=zlib-gnu is unlikely ever used by anyone, so I do not
add a custom diagnostic.
Differential Revision: https://reviews.llvm.org/D128688
Philip Reames [Wed, 29 Jun 2022 17:24:38 +0000 (10:24 -0700)]
Revert "[RISCV] Avoid changing etype for splat of 0 or -1"
This reverts commit
755c84c62cda80b0acf51ccc5653fc6d64536f7e. A bug was reported on the original review thread (https://reviews.llvm.org/D128006), and on inspection this patch is simply wrong. It needs to be checking for VLInBytes, not MaxVL. These happen to be the same when using AVL=VLMAX (which is quite common), but this does not fold when AVL != VLMAX.
Florian Hahn [Wed, 29 Jun 2022 17:26:00 +0000 (18:26 +0100)]
[UnrollRuntime] Invalidate SCEVs for modified phis in ConnectEpilog.
ConnectEpilog adds new incoming values to exit phi nodes which can
change the SCEV for the phi after
20d798bd47ec51.
Fix is analog to
cfc741bc0e029.
Fixes #56282.
Peter Klausler [Thu, 16 Jun 2022 18:41:09 +0000 (11:41 -0700)]
[flang] Fix folding of LEN(f(...))
LEN(f(...)), where "f" is a non-intrinsic function, should not be folded
to anything else unless the result is a known constant value. While there
are conceivable cases in which we could do better (e.g., an internal function
whose length is a host-associated INTENT(IN) dummy argument), there are
other cases that we're getting wrong.
Differential Revision: https://reviews.llvm.org/D128759
Kevin Cadieux [Wed, 29 Jun 2022 16:06:46 +0000 (09:06 -0700)]
[clang-format] Fix incorrect isspace input (NFC)
This change fixes a clang-format unit test failure introduced by [D124748](https://reviews.llvm.org/D124748). The `countLeadingWhitespace` function was calling `isspace` with values that could fall outside the valid input range. The valid input range for `isspace` is unsigned 0-255. Values outside this range produce undefined behavior, which on Windows manifests as an assertion being raised in the debug runtime libraries. `countLeadingWhitespace` was calling `isspace` with a signed char that could produce a negative value if the underlying byte's value was 128 or above, which can happen for non-ASCII encodings. The fix is to use `StringRef`'s `bytes_begin` and `bytes_end` iterators to read the values as unsigned chars instead.
This bug can be reproduced by building the `check-clang-unit` target with a DEBUG configuration under Windows. This change is already covered by existing unit tests.
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D128786
Fangrui Song [Wed, 29 Jun 2022 17:00:42 +0000 (10:00 -0700)]
[llvm-ar] Add --output to specify output directory
From binutils 2.34 onwards, ar supports --output to specify a directory
where archive members should be extracted to. Port this feature.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D128626
Martin Sebor [Wed, 29 Jun 2022 16:46:43 +0000 (10:46 -0600)]
[InstCombine] Relax test to avoid Darwin failure.
Avoid testing folding of atoi calls with out-of-bounds pointers.
Sanjay Patel [Wed, 29 Jun 2022 15:38:48 +0000 (11:38 -0400)]
[InstCombine] add fold for (ShiftC >> X) >u C
This is the 'ugt' sibling to:
0399473de886595d
Decrement the input compare constant (and implicitly
decrement the new compare constant):
https://alive2.llvm.org/ce/z/iELmct
Sanjay Patel [Wed, 29 Jun 2022 14:43:55 +0000 (10:43 -0400)]
[InstCombine] add tests for (pow2 >> X) <u C; NFC
Adapted from
af5e64df728f498ea9c6
Corentin Jabot [Tue, 28 Jun 2022 21:48:48 +0000 (23:48 +0200)]
[Clang] Rename StringLiteral::isAscii() => isOrdinary() [NFC]
"Ascii" StringLiteral instances are actually narrow strings
that are UTF-8 encoded and do not have an encoding prefix.
(UTF8 StringLiteral are also UTF-8 encoded strings, but with
the u8 prefix.
To avoid possible confusion both with actuall ASCII strings,
and with future works extending the set of literal encodings
supported by clang, this rename StringLiteral::isAscii() to
isOrdinary(), matching C++ standard terminology.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D128762
Walter Erquinigo [Fri, 24 Jun 2022 21:02:47 +0000 (14:02 -0700)]
[trace] Make events first class items in the trace cursor and rework errors
We want to include events with metadata, like context switches, and this
requires the API to handle events with payloads (e.g. information about
such context switches). Besides this, we want to support multiple
similar events between two consecutive instructions, like multiple
context switches. However, the current implementation is not good for this because
we are defining events as bitmask enums associated with specific
instructions. Thus, we need to decouple instructions from events and
make events actual items in the trace, just like instructions and
errors.
- Add accessors in the TraceCursor to know if an item is an event or not
- Modify from the TraceDumper all the way to DecodedThread to support
- Renamed the paused event to disabled.
- Improved the tsc handling logic. I was using an API for getting the tsc from libipt, but that was an overkill that should be used when not processing events manually, but as we are already processing events, we can more easily get the tscs.
event items. Fortunately this simplified many things
- As part of this refactor, I also fixed and long stating issue, which is that some non decoding errors were being inserted in the decoded thread. I changed this so that TraceIntelPT::Decode returns an error if the decoder couldn't be set up proplerly. Then, errors within a trace are actual anomalies found in between instrutions.
All test pass
Differential Revision: https://reviews.llvm.org/D128576
Craig Topper [Wed, 29 Jun 2022 15:51:10 +0000 (08:51 -0700)]
[RISCV] Select (srl (and X, C2) as (slli (srliw X, C3), C3-C).
If C2 has 32 leading zeros and C3 trailing zeros.
Matt Arsenault [Sat, 25 Jun 2022 14:25:11 +0000 (10:25 -0400)]
AMDGPU: Make packed 32-bit instructions rematerializable
Matt Arsenault [Sat, 25 Jun 2022 17:24:31 +0000 (13:24 -0400)]
AMDGPU: Make 16-bit pk instructions rematerializable
Matt Arsenault [Sat, 25 Jun 2022 16:56:51 +0000 (12:56 -0400)]
AMDGPU: Add rematerialize tests for 16-bit pk instructions
Michał Górny [Wed, 29 Jun 2022 15:47:53 +0000 (17:47 +0200)]
[lldb] [test] Avoid relying on signos in other fork tests
Sponsored by: The FreeBSD Foundation
Florian Hahn [Wed, 29 Jun 2022 15:34:11 +0000 (16:34 +0100)]
[LV] Add test case showing dead recipe blocking region merging.
Matt Arsenault [Sat, 25 Jun 2022 15:39:59 +0000 (11:39 -0400)]
AMDGPU: Mark more instructions as rematerializable
D106023 excluded 16-bit instructions from rematerialization, with the
justification that we can't rematerialize instructions that preserve
the high bits (plus the instructions which do are a confusing mess
between different subtargets). This doesn't make sense to me as a
problem since cases where we would rely on the high bit behavior would
still need to be represented as a register value constraint with a
tied operand. It's not a hidden side effect and should still be
rematerializable.
Matt Arsenault [Sat, 25 Jun 2022 13:53:31 +0000 (09:53 -0400)]
AMDGPU: Add more rematerialization tests for 16-bit instructions
Nikita Popov [Wed, 29 Jun 2022 15:17:20 +0000 (17:17 +0200)]
[VectorCombine] Avoid ConstantExpr::get() (NFC)
Use IRBuilder APIs instead, which will still constant fold.
Guillaume Chatelet [Wed, 29 Jun 2022 15:12:24 +0000 (15:12 +0000)]
Revert "[libc][test] Remove dependency on sstream in algorithm_test.cpp"
This reverts commit
292b281caf8c3750cc0796b971af2ca24236a926.
Guillaume Chatelet [Wed, 29 Jun 2022 12:28:00 +0000 (12:28 +0000)]
[libc][test] Remove dependency on sstream in algorithm_test.cpp
Bots have been failing in full build mode because ´#include <sstream>´ would pull pthread which is not possible when code is compiled with ´-freestanding´.
Differential Revision: https://reviews.llvm.org/D128809
Nicolas Vasilache [Wed, 29 Jun 2022 14:51:41 +0000 (07:51 -0700)]
[mlir][Tensor] Improve documentation of verification behavior of InsertSliceOp.
Nikita Popov [Wed, 29 Jun 2022 14:41:38 +0000 (16:41 +0200)]
[JumpThreading] Avoid ConstantExpr::get() (NFCI)
This code requires the result to be an UndefValue/ConstantInt
anyway (checked by getKnownConstant), so we are only interested
in the case where this folds.
Nicolas Vasilache [Wed, 29 Jun 2022 11:16:49 +0000 (04:16 -0700)]
[mlir][Tensor][NFC] Better document rank-reducing behavior of ExtractSliceOp and cleanup
Lei Huang [Tue, 21 Jun 2022 16:54:40 +0000 (11:54 -0500)]
[PowerPC] Fix signatures for vec_replace_unaligned builtin
``vec_replace_unaligned`` is meant to return vuc to emphasize that elements
are being inserted on unnatural boundaries.
Reviewed By: amyk, quinnp
Differential Revision: https://reviews.llvm.org/D128288
Matt Arsenault [Mon, 6 Jun 2022 21:19:03 +0000 (17:19 -0400)]
AMDGPU: Use isMeta flags on pseudoinstructions
Nikita Popov [Wed, 29 Jun 2022 14:06:49 +0000 (16:06 +0200)]
[InstCombine] Avoid some calls to ConstantExpr::get() (NFCI)
Replace some calls to ConstantExpr::get() with IRBuilder APIs
(which will also constant fold if possible).
Michał Górny [Wed, 29 Jun 2022 14:04:50 +0000 (16:04 +0200)]
[lldb] [test] Un-XFAIL fork tests on arm as well
Sponsored by: The FreeBSD Foundation
Stephen Long [Tue, 28 Jun 2022 13:45:18 +0000 (06:45 -0700)]
[clang-cl] Handle some pragma alloc_text corner cases handled by MSVC
MSVC's pragma alloc_text accepts a function that was redeclared in
a non extern-C context if the previous declaration was in an extern-C
context. i.e.
```
extern "C" { static void f(); }
static void f();
```
MSVC's pragma alloc_text also rejects non-functions.
Reviewed By: hans
Differential Revision: https://reviews.llvm.org/D128649
Jay Foad [Wed, 29 Jun 2022 13:43:01 +0000 (14:43 +0100)]
[AMDGPU] Remove FIXMEs that were resolved by D30134
Michał Górny [Wed, 29 Jun 2022 05:18:54 +0000 (07:18 +0200)]
[lldb] [test] Use raise(SIGSTOP) instead of trap in fork tests
Replace the use of "trap" with a new "stop" command in fork tests,
that maps to `raise(SIGSTOP)`. Since traps do not increment PC on some
architectures (notably ARM), using traps would require special logic
to increment it while testing. Using SIGSTOP avoids the problem
and is probably more logical, given that the purpose of the "trap"s
was to simply stop the inferior at a synchronization point. This fixes
tests on AArch64 (and possibly ARM, I'll update XFAILs when it is
confirmed by the buildbot).
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D128780
Joseph Huber [Tue, 28 Jun 2022 19:21:03 +0000 (15:21 -0400)]
[CUDA] Stop adding CUDA features twice
We currently call the `addNVPTXFeatures` function in two places, inside
of the CUDA Toolchain and inside of Clang in the standard entry point.
We normally add features to the job in Clang, so the call inside of the
CUDA toolchain is redundant and results in `+ptx` features being added.
Since we remove this call, we no longer will have a cached CUDA
installation so we will usually create it twice.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D128752
Haojian Wu [Wed, 29 Jun 2022 13:10:39 +0000 (15:10 +0200)]
[pseudo] Update the cxx.bnf path in comments to reflect the new
location, NFC
Corentin Jabot [Fri, 20 Aug 2021 15:52:28 +0000 (17:52 +0200)]
Improve handling of static assert messages.
Instead of dumping the string literal (which
quotes it and escape every non-ascii symbol),
we can use the content of the string when it is a
8 byte string.
Wide, UTF-8/UTF-16/32 strings are still completely
escaped, until we clarify how these entities should
behave (cf https://wg21.link/p2361).
`FormatDiagnostic` is modified to escape
non printable characters and invalid UTF-8.
This ensures that unicode characters, spaces and new
lines are properly rendered in static messages.
This make clang more consistent with other implementation
and fixes this tweet
https://twitter.com/jfbastien/status/
1298307325443231744 :)
Of note, `PaddingChecker` did print out new lines that were
later removed by the diagnostic printing code.
To be consistent with its tests, the new lines are removed
from the diagnostic.
Unicode tables updated to both use the Unicode definitions
and the Unicode 14.0 data.
U+00AD SOFT HYPHEN is still considered a print character
to match existing practices in terminals, in addition of
being considered a formatting character as per Unicode.
Reviewed By: aaron.ballman, #clang-language-wg
Differential Revision: https://reviews.llvm.org/D108469
Valentin Clement [Wed, 29 Jun 2022 12:46:19 +0000 (05:46 -0700)]
[Flang] fix some types in error message
Pavel Labath [Wed, 29 Jun 2022 12:48:54 +0000 (14:48 +0200)]
[lldb] Replace linux/uio.h with sys/uio.h in NativeRegisterContextLinux_s390x
Fixes PR56280.
Max Kazantsev [Wed, 29 Jun 2022 12:30:52 +0000 (19:30 +0700)]
[Test] Add XFAIL test for PR56243
This test demonstrates how sinking down gc.relocate may lead to breach
of LCSSA form by tokens and, consecutively, end up with SSA breach by
LoopSimplifyCFG which creates fake edges and is unable to update missing
LCSSA phis for tokens used outside of the loop.
Nikita Popov [Wed, 29 Jun 2022 12:16:30 +0000 (14:16 +0200)]
[Bitcode] Restore bitcast expression auto-upgrade
Restore the autoupgrade from bitcast to ptrtoint+inttoptr, which
was lost as part of D127729.
This fixes the backwards compatibility issue noted in:
https://reviews.llvm.org/D127729#inline-1236519
Nikita Popov [Wed, 29 Jun 2022 12:34:02 +0000 (14:34 +0200)]
[SCEV] Don't create udiv constant expression (NFC)
Work on APInts to make it clear that this will not create a
constant expression.
This code path is not reached if the RHS is zero.
Valentin Clement [Wed, 29 Jun 2022 12:21:00 +0000 (14:21 +0200)]
[flang][NFC] Cosmetic changes to make the file more homogenous
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D128799
Valentin Clement [Wed, 29 Jun 2022 12:19:56 +0000 (14:19 +0200)]
[flang] Switch attr name to bindc_name
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D128788
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Mehdi Amini [Sun, 12 Jun 2022 18:12:26 +0000 (18:12 +0000)]
Apply clang-tidy fixes for readability-simplify-boolean-expr in ViewLikeInterface.cpp (NFC)
Mehdi Amini [Sun, 12 Jun 2022 18:08:50 +0000 (18:08 +0000)]
Apply clang-tidy fixes for readability-identifier-naming in Float16bits.cpp (NFC)
Bradley Smith [Fri, 17 Jun 2022 10:45:27 +0000 (10:45 +0000)]
[AArch64][SVE] Match (add x (urshr/srshr y c)) -> ursra/srsra x y c
Differential Revision: https://reviews.llvm.org/D128447
Kiran Chandramohan [Wed, 29 Jun 2022 11:59:52 +0000 (11:59 +0000)]
[Flang][OpenMP] Remove TODO for shared and two values of default clause
Shared is the default behaviour in the IR, so no handling is required.
Default clause with shared or none do not require any handling since
Shared is the default behaviour in the IR and None is only required
for semantic checks.
This patch is carved out from D123930 to remove couple of false TODOs.
Reviewed By: peixin, shraiysh
Differential Revision: https://reviews.llvm.org/D128797
Co-authored-by: Nimish Mishra <neelam.nimish@gmail.com>
Arjun P [Wed, 29 Jun 2022 12:02:52 +0000 (13:02 +0100)]
[MLIR][Preburger] fix typo covertVarKind -> convertVarKind
Also update parameter names in the implementation file to match the header.
Kadir Cetinkaya [Wed, 15 Jun 2022 13:44:09 +0000 (15:44 +0200)]
[clangd] Support multiline semantic tokens
Per LSP, multiline tokens should be handled as if they end at the end
of the line starting the token (there's also a capability to enable them, but
that's an adventure for a different day).
Fixes https://github.com/clangd/clangd/issues/1145
Differential Revision: https://reviews.llvm.org/D127856
Michał Górny [Wed, 29 Jun 2022 11:33:43 +0000 (13:33 +0200)]
[lldb] [test] Fix variable overwrite in non-stop fork tests
Thanks to Pavel Labath for noticing the mistake in:
https://reviews.llvm.org/D128638#3618039
Sponsored by: The FreeBSD Foundation
Arjun P [Wed, 29 Jun 2022 11:21:48 +0000 (12:21 +0100)]
Revert clang-tidy fixes for readability-simplify-boolean-expr and add NOLINT
The original code is more readable because the goal is to check if the given
value does *not* lie in the range. It is harder to understand this by
reading the rewritten code.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D128753
Nikita Popov [Wed, 29 Jun 2022 11:04:15 +0000 (13:04 +0200)]
[IRBuilder] Migrate div/rem to use fold infrastructure
Migrate udiv, sdiv, urem, and srem to use the FoldXYZ rather than
the CreateXYZ infrastructure.
isuckatcs [Wed, 29 Jun 2022 10:50:24 +0000 (12:50 +0200)]
[analyzer] Fix BindingDecl evaluation for reference types
The case when the bound variable is reference type in a
BindingDecl wasn't handled, which lead to false positives.
Differential Revision: https://reviews.llvm.org/D128716
Jay Foad [Tue, 28 Jun 2022 16:05:21 +0000 (17:05 +0100)]
[AMDGPU] Remove FIXME that was resolved by D30212
Benjamin Kramer [Wed, 29 Jun 2022 10:32:32 +0000 (12:32 +0200)]
[Presburger] Cheat around old versions of clang not doing NRVO when there's a derived-to-base cast in the way
Should be NFC. We can just do the base conversion manually and avoid
warnings about it. Clang before Clang 13 didn't implement P1825 and
complains:
mlir/lib/Analysis/Presburger/IntegerRelation.cpp:226:10: warning: local variable 'result' will be copied
despite being returned by name [-Wreturn-std-move]
return result;
^~~~~~
mlir/lib/Analysis/Presburger/IntegerRelation.cpp:226:10: note: call 'std::move' explicitly to avoid copying
return result;
^~~~~~
std::move(result)
Valentin Clement [Wed, 29 Jun 2022 10:21:26 +0000 (03:21 -0700)]
[flang][NFC] Fix some typos
Dmitry Preobrazhensky [Mon, 27 Jun 2022 15:55:53 +0000 (18:55 +0300)]
[AMDGPU][GFX90a][DOC][NFC] Update assembler syntax description
Summary of changes:
- Update MUBUF lds syntax (see https://reviews.llvm.org/D124485).
- Update SMEM syntax (see https://reviews.llvm.org/D127314).
- Enable src0=literal for v_madak*, v_madmk* (see https://reviews.llvm.org/D111067).
- Correct src0 operands of v_accvgpr_write_b32.
- Correct description of s_getreg/s_setreg (add TBA/TMA).
- Remove SYSMSG_OP_HOST_TRAP_ACK message.
- Minor bug fixing and improvements.
Florian Hahn [Wed, 29 Jun 2022 10:29:31 +0000 (11:29 +0100)]
[SCEV] Construct SCEV iteratively.
This patch updates SCEV construction to work iteratively instead of recursively
in most cases. It resolves stack overflow issues when trying to construct SCEVs
for certain inputs, e.g. PR45201.
The basic approach is to to use a worklist to queue operands of V which
need to be created before V. To do so, the current patch adds a
getOperandsToCreate function which collects the operands SCEV
construction depends on for a given value. This is a slight duplication
with createSCEV.
At the moment, SCEVs for phis are still created recursively.
Fixes #32078, #42594, #44546, #49293, #49599, #55333, #55511
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D114650
Anton Afanasyev [Sat, 25 Jun 2022 11:02:32 +0000 (14:02 +0300)]
[test][RISCV][Driver] Precommit tests for D128625
Florian Hahn [Wed, 29 Jun 2022 10:25:19 +0000 (11:25 +0100)]
[BasicAA] Add test coverage from D76194.
Florian Hahn [Wed, 29 Jun 2022 10:25:13 +0000 (11:25 +0100)]
[BasicAA] Convert test to use opaque pointers.
Using opaque pointers simplifies the tests quite a bit.
Christian Sigg [Wed, 29 Jun 2022 10:24:28 +0000 (12:24 +0200)]
Revert "Add default copy and move c'tor/assignment to PresburgerRelation."
This reverts commit
2cd468ef1561e9f4c888e5dde821f86e427a75a1.
Nicolai Hähnle [Tue, 28 Jun 2022 17:14:09 +0000 (19:14 +0200)]
StandardInstrumentation: print verifier output to errs
Enabling the verifiers is not very helpful if their output is
suppressed beyond the fatal error.
Differential Revision: https://reviews.llvm.org/D128743
Christian Sigg [Wed, 29 Jun 2022 08:40:34 +0000 (10:40 +0200)]
Add default copy and move c'tor/assignment to PresburgerRelation.
Differential Revision: https://reviews.llvm.org/D128789
Jolanta Jensen [Wed, 15 Jun 2022 16:11:28 +0000 (17:11 +0100)]
[NFC] Switch FloatModeKind enum class to use bitmask enums
Using bitmask enums simplifies and clarifies the code.
Differential Revision: https://reviews.llvm.org/D128182
Nikita Popov [Wed, 29 Jun 2022 09:51:22 +0000 (11:51 +0200)]
[SROA] Don't create constant expressions (NFC)
Use IRBuilder instead, which will fold these. Just to clarify
that this does not actually create any udiv expression.
Nikita Popov [Wed, 29 Jun 2022 09:24:16 +0000 (11:24 +0200)]
[SCCP] Regenerate test checks (NFC)