Matthias Springer [Fri, 7 Oct 2022 01:36:31 +0000 (10:36 +0900)]
[mlir][bufferize] Fix enclosing repetitive region computation
The wrong function overload was called.
Differential Revision: https://reviews.llvm.org/D135342
Joseph Huber [Fri, 7 Oct 2022 01:14:31 +0000 (20:14 -0500)]
[Clang] Fix unknown argument test on Windows
Summary:
This added a check for no unknown argument warnings. This apparently
occurs in the Windows toolchain as it cannot find a toolchain. This
patch fixes it by just ignoring this warning.
Mehdi Amini [Thu, 6 Oct 2022 18:17:40 +0000 (18:17 +0000)]
Apply clang-tidy fixes for performance-move-const-arg in IntegerRelation.cpp (NFC)
Kai Sasaki [Fri, 7 Oct 2022 00:29:36 +0000 (09:29 +0900)]
[mlir] Fix test failure with invalid piping syntax on old bash
Using '|&' syntax for piping both stdout and stderr is not supported by older bash. macOS pre-installs 3.2.57 as of today, and it causes test failure due to unexpected token '&'. We can use '2>&1' instead to make it compatible as much as possible.
```
******************** TEST 'MLIR :: mlir-cpu-runner/invalid.mlir' FAILED ********************
Script:
--
: 'RUN: at line 1'; not mlir-cpu-runner --no-implicit-module llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir |& llvm-project/build/bin/FileCheck llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir
--
Exit Code: 2
Command Output (stderr):
--
mlir-cpu-runner/Output/invalid.mlir.script: line 1: syntax error near unexpected token `&'
/mlir-cpu-runner/Output/invalid.mlir.script: line 1: `set -o pipefail;{ : 'RUN: at line 1'; not mlir-cpu-runner --no-implicit-module llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir |& llvm-project/build/bin/FileCheck llvm-project/mlir/test/mlir-cpu-runner/invalid.mlir; }'
```
Reference: https://stackoverflow.com/questions/
35384999/what-does-mean-in-bash
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D135347
Qiongsi Wu [Thu, 6 Oct 2022 23:56:45 +0000 (19:56 -0400)]
[clang][LTO] Remove the use of `--` for arange option
https://reviews.llvm.org/D134668 removed all `--` (double dashes) when using `plugin-opt` to pass linker options and replaced them with `-`. https://reviews.llvm.org/D133092 was committed later but introduced an instance of `--`. This patch replaces the `--` with `-`.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D135400
Ye Luo [Fri, 7 Oct 2022 00:05:14 +0000 (19:05 -0500)]
[DeviceRTL] Fix a CMake multi-step compilation dependency issue.
caused by
92233159035d1b50face95d886901cf99035bd99
Joseph Huber [Thu, 6 Oct 2022 16:17:39 +0000 (11:17 -0500)]
[OpenMP][AMDGPU] Add 'uniform-work-group' attribute to OpenMP kernels
The `cl-uniform-work-group` attribute asserts that the global work-size
be a multiple of the work-group specified work group size. This should
allow optimizations. It is already present by default in the AMD
compiler and for HIP kernels so it should be safe to allow this for
OpenMP kernels by default.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D135374
Jan Svoboda [Thu, 6 Oct 2022 23:03:48 +0000 (16:03 -0700)]
[clang][modules] Fix handling of `ModuleHeaderRole::ExcludedHeader`
This is a follow-up to D134224. The original patch added new `ExcludedHeader` enumerator to `ModuleMap::ModuleHeaderRole` and started associating headers with the modules they were excluded from. This was necessary to consider their module maps as "affecting" in certain situations and in turn serialize them into the PCM.
The association of the header and module needs to be handled when deserializing the PCM as well, though. This patch fixes a potential assertion failure and a regression. This essentially reverts parts of
feb54b6ded123f8118fdc20620d3f657dfeab485.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D135381
Joseph Huber [Thu, 6 Oct 2022 19:50:45 +0000 (14:50 -0500)]
[Clang] Emit a warning for ambiguous joined '-o' arguments
The offloading toolchain makes heavy use of options beginning with
`--o`. This is problematic when combined with the joined `-o` flag. In
the following situation, the user will not get the expected output and
will not notice as the expected output will still be written.
```
clang++ -x cuda foo.cu -offload-arch=sm_80 -o foo
```
This patch introduces a warning that checks for joined `-o` arguments
that would also be a valid driver argument if an additional `-` were
added. I believe this situation is uncommon enough to warrant a warning,
and can be trivially fixed by the end user by using the more common
separate form instead.
Reviewed By: tra, MaskRay
Differential Revision: https://reviews.llvm.org/D135389
Leonard Chan [Thu, 6 Oct 2022 23:13:42 +0000 (23:13 +0000)]
[llvm] Clear the ForwardRefDSOLocalEquivalentIDs map
I accidentally cleared ForwardRefDSOLocalEquivalentNames twice instead.
Differential Revision: https://reviews.llvm.org/D135315
Craig Topper [Thu, 6 Oct 2022 22:23:12 +0000 (15:23 -0700)]
[RISCV] Use mask agnostic policy for isel patterns where the merge operand is IMPLICIT_DEF.
I tend to think we should ignore the policy bit in vsetvli insertion
if the tied operand is IMPLICIT_DEF. But that raises questions about
what the policy operand on RVV intrinsics means if you also pass
vundefined().
This change at least fixes some cases. I'll post a separate patch
for vsetvli insertion for discussion.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D135386
Alina Sbirlea [Tue, 23 Aug 2022 22:39:09 +0000 (15:39 -0700)]
[SmallVector] Reallocate if assigned memory is right after the current vector, created with capacity 0
Potential solution for
https://github.com/llvm/llvm-project/issues/57324.
Differential Revision: https://reviews.llvm.org/D132512
Michael Jones [Thu, 6 Oct 2022 22:34:33 +0000 (15:34 -0700)]
[libc][obvious] move kill into fullbuild only
Signal is currently fullbuild only, so all functions inside it should be
as well.
Differential Revision: https://reviews.llvm.org/D135410
Michael Jones [Thu, 6 Oct 2022 21:59:30 +0000 (14:59 -0700)]
[libc] add kill
Add the kill syscall wrapper and tests.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D135406
Peter Klausler [Thu, 6 Oct 2022 00:15:50 +0000 (17:15 -0700)]
[flang] Correct epistemological edge cases for IS_CONTIGUOUS folding
Don't return a hard .FALSE. when folding IS_CONTIGUOUS() unless the
subscript triplets are discontiguous and array section is nonempty,
or if the array section is nonempty and there is a vector subscript.
Differential Revision: https://reviews.llvm.org/D135334
Peter Klausler [Wed, 5 Oct 2022 22:40:13 +0000 (15:40 -0700)]
fix
Peter Klausler [Tue, 4 Oct 2022 21:14:05 +0000 (14:14 -0700)]
[flang][runtime] Handle array components in NAMELIST input
A namelist input item that is a derived type component reference
needs additional processing when the base item or the component
is an array. When both have rank > 0, the component reference
must of course be subscripted.
(Fixes https://gitlab-master.nvidia.com/fortran/f18-stage/-/issues/999, NAG test t/tz2.)
Ellis Hoag [Thu, 6 Oct 2022 22:17:30 +0000 (15:17 -0700)]
[llvm-profdata] Add some missing options to docs
I forgot to add documentation for these options when I added them to the `show` command, so add them now.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D135383
Michael Jones [Tue, 27 Sep 2022 22:29:09 +0000 (15:29 -0700)]
[libc] fix futex type
Previously the futex type was defined in terms of unsigned int, now it's
uint32, which is more portable.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D135408
Philip Reames [Thu, 6 Oct 2022 22:12:37 +0000 (15:12 -0700)]
[RISCV] Use branchless form for selects with -1 in either arm
We can lower these as an or with the negative of the condition value. This appears to result in significantly less branch-y code on multiple common idioms (as seen in tests).
Differential Revision: https://reviews.llvm.org/D135316
Philip Reames [Thu, 6 Oct 2022 22:11:34 +0000 (15:11 -0700)]
[RISCV] Verify that policy operands only exist on instructions with tied passthru operands
This is a non-trivial property relied upon by D135396. I wrote this to convince myself it was true.
Differential Revision: https://reviews.llvm.org/D135403
LLVM GN Syncbot [Thu, 6 Oct 2022 22:03:16 +0000 (22:03 +0000)]
[gn build] Port
96a509bca28b
Xiang Li [Thu, 6 Oct 2022 21:00:25 +0000 (14:00 -0700)]
[HLSL] Remove global ctor/dtor variable for non-lib profile.
After generated call for ctor/dtor for entry, global variable for ctor/dtor are useless.
Remove them for non-lib profiles.
Lib profile still need these in case export function used the global variable which require ctor/dtor.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D133993
Shubham Sandeep Rastogi [Thu, 6 Oct 2022 21:58:10 +0000 (14:58 -0700)]
Revert "Remove the dependency between lib/DebugInfoDWARF and MC."
This reverts commit
d96ade00c3c96bd451c60e34a17e613cdd5fdc38.
Hui Xie [Mon, 5 Sep 2022 15:45:47 +0000 (16:45 +0100)]
implement `std::views::istream`
implement `std::ranges::basic_istream_view` and `std::views::istream`. Although the view itself is constexpr,
the constructor argument is a base class std::istream where its ctor/dtor are not constexpr. So no tests are performed in
constexpr
Differential Revision: https://reviews.llvm.org/D133317
Peter Klausler [Tue, 4 Oct 2022 21:14:05 +0000 (14:14 -0700)]
[flang][runtime] Handle array components in NAMELIST input
A namelist input item that is a derived type component reference
needs additional processing when the base item or the component
is an array. When both have rank > 0, the component reference
must of course be subscripted.
Differential Revision: https://reviews.llvm.org/D135218
Shubham Sandeep Rastogi [Thu, 6 Oct 2022 19:15:07 +0000 (12:15 -0700)]
Remove the dependency between lib/DebugInfoDWARF and MC.
This patch had to be reverted because on gcc 7.5.0 we see an error converting from std::unique_ptr<MCRegisterInfo> to Expected<std::unique_ptr<MCRegisterInfo>> as the return type for the function createRegInfo. This has now been fixed.
Peter Klausler [Tue, 4 Oct 2022 20:45:11 +0000 (13:45 -0700)]
[flang] Supply missing source location for a message
An error message in semantic analysis of SELECT TYPE type guards
doesn't allow for the possibility of failure from FindSourceLocation(),
and that can happen when the type guard is just an intrinsic type
name like "type is (character)". Deal with it.
Differential Revision: https://reviews.llvm.org/D135217
Jeffrey Byrnes [Thu, 6 Oct 2022 21:29:04 +0000 (14:29 -0700)]
[AMDGPU] Add test coverage to ensure first regallocfast only allocates SGPR
Register allocation is split into two passes, and the expected behavior is that the first pass only should only work on virtual SGPRs. Whereas the second pass works on virtual VGPRs. This adds a test case which breaks if the first pass allocates VGPRs.
Differential Revision: https://reviews.llvm.org/D135331
LLVM GN Syncbot [Thu, 6 Oct 2022 21:24:57 +0000 (21:24 +0000)]
[gn build] Port
2c799b7793cc
Matthew Voss [Thu, 6 Oct 2022 21:20:13 +0000 (14:20 -0700)]
[llvm-reduce] Add pass that reduces DebugInfo metadata
This new pass for llvm-reduce attempts to reduce DebugInfo metadata.
The process used is:
1. Scan every MD node, keeping track of nodes already visited.
2. Look for DebugInfo nodes, then record any operands that are lists.
3. Bisect though all the elements of the collected lists.
Differential Revision: https://reviews.llvm.org/D132077
Aart Bik [Thu, 6 Oct 2022 21:10:36 +0000 (14:10 -0700)]
[mlir][sparse] remove llvm dependence from sparse bazel
Reviewed By: wrengr, Peiming
Differential Revision: https://reviews.llvm.org/D135401
Florian Hahn [Thu, 6 Oct 2022 21:11:51 +0000 (22:11 +0100)]
[ConstraintElimination] Add tests where unsigned system can be queried.
Add tests with a mix of signed and unsigned predicates. In some cases,
the unsigned system can be queried for signed predicates to improve
results.
Peter Klausler [Tue, 4 Oct 2022 20:14:49 +0000 (13:14 -0700)]
[flang] Improve syntax error messages by fixing withMessage() parser combinator
The parser combinator withMessage("error message"_err_en_US, PARSER) is meant
to run the parser PARSER and, if it fails, override its error messages if
it failed silently or it was unable to recognize any tokens at all. This
gives the parser a way to avoid emitting some confusing or missing error
messages. Unfortunately, the implementation could sometimes lose track of
whether any tokens had been recognized, leading to problems with outer usage
of withMessage() and also -- more seriously -- with ParseState::CombineFailedParses().
That's a utility that determines which error messages to retain when two
or more parsers have been attempted at the same starting point and none
of them succceed. Its policy is to retain the state from the parser that
consumed the most input text before failing, so long as it had recognized at
least one token.
So anyway, fix up withMessage(), adjust the tests, and add a test of the
original motivating confusing error situation, in which a syntax error in
a COMMON statement was being diagnosed as a problem with a statement function
definition because withMessage() had lost the fact that the parse of the
COMMON statement had recognized some tokens, and the last attempted parse
later was a failed attempt to parse a statement function.
Differential Revision: https://reviews.llvm.org/D135216
Aart Bik [Thu, 6 Oct 2022 17:53:33 +0000 (10:53 -0700)]
[mlir][sparse] minor header ordering cleanup
Order of methods was getting a bit out of sync with headers
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D135377
Peiming Liu [Thu, 6 Oct 2022 17:41:48 +0000 (17:41 +0000)]
[mlir][sparse] Favors synthetic tensor over other undefined tensors
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135385
Peter Klausler [Tue, 4 Oct 2022 19:41:48 +0000 (12:41 -0700)]
[flang] Add missing source location to a semantic error message
Ensure that the semantic error "An allocatable or pointer component
reference must be applied to a scalar base" is emitted with a source
code location.
Differential Revision: https://reviews.llvm.org/D135215
Ellis Hoag [Thu, 6 Oct 2022 20:11:35 +0000 (13:11 -0700)]
Revert "[llvm-reduce] Remove debug metadata elements"
This reverts commit
69549de865550e54983ed8d00009920184de47ff.
The change in D135237 can lead to verification failures like `scope must have two or three operands`.
The ongoing work in D132077 does something similar without these failures, so lets wait for that to land and revert this patch.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D135395
Jorge Gorbe Moya [Fri, 23 Sep 2022 22:09:08 +0000 (15:09 -0700)]
[lldb] Skip check for conflicting filter/synth when adding a new regex.
When adding a new synthetic child provider, we check for an existing
conflicting filter in the same category (and vice versa). This is done
by trying to match the new type name against registered formatters.
However, the new type name we're registered can also be a regex
(`type synth add -x`), and in this case the conflict check is just
wrong: it will try to match the new regex as if it was a type name,
against previously registered regexes.
See https://github.com/llvm/llvm-project/issues/57947 for a longer
explanation with concrete examples of incorrect behavior.
Differential Revision: https://reviews.llvm.org/D134570
Philip Reames [Thu, 6 Oct 2022 20:10:58 +0000 (13:10 -0700)]
[DAG] Extract helper for (neg x) [nfc]
This is a frequently reoccurring pattern, let's factor it out.
Differential Revision: https://reviews.llvm.org/D135301
Shilei Tian [Thu, 6 Oct 2022 20:21:51 +0000 (16:21 -0400)]
[OpenMP][DeviceRTL] Fix build issue
Aaron Puchert [Wed, 13 Jul 2022 23:47:52 +0000 (01:47 +0200)]
Thread safety analysis: Support copy-elided production of scoped capabilities through arbitrary calls
When support for copy elision was initially added in
e97654b2f2807, it
was taking attributes from a constructor call, although that constructor
call is actually not involved. It seems more natural to use attributes
on the function returning the scoped capability, which is where it's
actually coming from. This would also support a number of interesting
use cases, like producing different scope kinds without the need for tag
types, or producing scopes from a private mutex.
Changing the behavior was surprisingly difficult: we were not handling
CXXConstructorExpr calls like regular calls but instead handled them
through the DeclStmt they're contained in. This was based on the
assumption that constructors are basically only called in variable
declarations (not true because of temporaries), and that variable
declarations necessitate constructors (not true with C++17 anymore).
Untangling this required separating construction from assigning a
variable name. When a call produces an object, we use a placeholder
til::LiteralPtr for `this`, and we collect the call expression and
placeholder in a map. Later when going through a DeclStmt, we look up
the call expression and set the placeholder to the new VarDecl.
The change has a couple of nice side effects:
* We don't miss constructor calls not contained in DeclStmts anymore,
allowing patterns like
MutexLock{&mu}, requiresMutex();
The scoped lock temporary will be destructed at the end of the full
statement, so it protects the following call without the need for a
scope, but with the ability to unlock in case of an exception.
* We support lifetime extension of temporaries. While unusual, one can
now write
const MutexLock &scope = MutexLock(&mu);
and have it behave as expected.
* Destructors used to be handled in a weird way: since there is no
expression in the AST for implicit destructor calls, we instead
provided a made-up DeclRefExpr to the variable being destructed, and
passed that instead of a CallExpr. Then later in translateAttrExpr
there was special code that knew that destructor expressions worked a
bit different.
* We were producing dummy DeclRefExprs in a number of places, this has
been eliminated. We now use til::SExprs instead.
Technically this could break existing code, but the current handling
seems unexpected enough to justify this change.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D129755
Aaron Puchert [Thu, 14 Jul 2022 11:39:04 +0000 (13:39 +0200)]
Thread safety analysis: Handle additional cast in scoped capability construction
We might have a CK_NoOp cast and a further CK_ConstructorConversion.
As an optimization, drop some IgnoreParens calls: inside of the
CK_{Constructor,UserDefined}Conversion should be no more parentheses,
and inside the CXXBindTemporaryExpr should also be none.
Lastly, we factor out the unpacking so that we can reuse it for
MaterializeTemporaryExprs later on.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D129752
Shilei Tian [Thu, 6 Oct 2022 20:13:22 +0000 (16:13 -0400)]
[OpenMP][DeviceRTL] Fix an issue that thread array might be corrupted
The shared memory stack in the device runtime assumes no intervined uses.
D135037 breaks the assumption, potentially causing the shared stack corruption.
This patch moves the thread array to heap memory. Since it is already the slow
path, it doesn't matter that much anyway.
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D135391
Alina Sbirlea [Thu, 6 Oct 2022 20:10:41 +0000 (13:10 -0700)]
Revert "Reapply [InstCombine] Switch foldOpIntoPhi() to use InstSimplify"
This reverts commit
e94619b955104841cc2a4a6febe4025ee140194e.
Peter Klausler [Thu, 29 Sep 2022 20:47:38 +0000 (13:47 -0700)]
[flang][NFC] Document Fortran aliasing rules
Summarize current understanding of Fortran's guarantees to a compiler
(or in other words, restrictions on programs and programmers)
about aliasing.
Differential Revision: https://reviews.llvm.org/D135214
Peter Klausler [Tue, 4 Oct 2022 19:11:20 +0000 (12:11 -0700)]
[flang] Clarify edge case of host association and generic interfaces
Name resolution was mishandling cases of generic interfaces and specific procedures
(sometimes complicatd by use of the same name for each) when the specific procedure
was accessed by means of host association; only the scope of the generic interface
definition was searched for the specific procedure. Also search enclosing scopes
in the usual way.
Differential Revision: https://reviews.llvm.org/D135213
TatWai Chong [Thu, 6 Oct 2022 19:50:12 +0000 (12:50 -0700)]
[tosa] Add legalization for conv3d
Update the existing implementation to match TOSA spec.
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D133062
Siva Chandra Reddy [Thu, 6 Oct 2022 05:24:18 +0000 (05:24 +0000)]
[libc] Add POSIX execv and execve functions.
The POSIX global variable environ has also been added.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D135351
Valentin Clement [Thu, 6 Oct 2022 19:40:50 +0000 (21:40 +0200)]
[flang] Use assembly format for fir.dispatch
Remove custom parser/printer and make use of the assembly format
for the fir.dispatch operation.
Depends on D135358
Reviewed By: PeteSteinfeld, jeanPerier
Differential Revision: https://reviews.llvm.org/D135363
Julian Lettner [Wed, 21 Sep 2022 21:05:28 +0000 (14:05 -0700)]
[Sanitizer] Fix compile errors in rtl-old/tsan_rtl.cpp
Differential Revision: https://reviews.llvm.org/D134389
Stefan Pintilie [Thu, 6 Oct 2022 18:34:09 +0000 (13:34 -0500)]
[PowerPC] Fix types for vcipher builtins.
The documentation specifies that the parameters for the vcipher builtins are
```
vector unsigned char
```
The code used
```
vector unsigned long long
```
This patch fixes the types for the vcipher builtins.
Reviewed By: amyk
Differential Revision: https://reviews.llvm.org/D135300
Jorge Gorbe Moya [Fri, 16 Sep 2022 22:58:19 +0000 (15:58 -0700)]
[NFCI] Simplify TypeCategoryImpl for-each callbacks.
The callback system to iterate over every formatter of a given kind in
a TypeCategoryImpl is only used in one place (the implementation of
`type {formatter_kind} list`), and it's too convoluted for the sake of
unused flexibility.
This change changes it so that only one callback is passed to `ForEach`
(instead of a callback for exact matches and another one for regex
matches), and moves the iteration logic to `TieredFormatterContainer`
to avoid duplication.
If in the future we need different logic in the callback depending on
exact/regex match, the callback can get the type of formatter matching
used from the TypeMatcher argument anyway.
Differential Revision: https://reviews.llvm.org/D134771
Alexey Bataev [Wed, 5 Oct 2022 15:43:39 +0000 (08:43 -0700)]
[SLP]Improve/fix CSE analysis of the blocks/instructions.
Added analysis for invariant extractelement instructions and improved
detection of the CSE blocks for generated extractelement instructions.
Differential Revision: https://reviews.llvm.org/D135279
Mariusz Borsa [Tue, 20 Sep 2022 22:23:58 +0000 (15:23 -0700)]
[Sanitizers][Darwin] Fix invalid gap found by FindAvailableMemoryRange
An application running with ASAN can fail during shadow memory allocation, with an error
indicating a failure to map shadow memory region due to negative size parameter passed to mmap.
It turns out that the mach_vm_region_recurse() call can return an address of a module
which is beyond the range of the VM address space available to the iOS process,
i.e. greater than the value returned by GetMaxVirtualAddress(). It leads the FindAvailableMemoryRange function
to the an incorrect conclusion that it has found a suitable gap where the shadow memory can fit in,
while the shadow memory cannot be really allocated in this case.
The fix just takes the maximum VM address into account, causing the function to return 0,
meaning that the VM gap to fit the requested size could not be found.
rdar://
66530705
Differential Revision: https://reviews.llvm.org/D134836
Jonas Devlieghere [Thu, 6 Oct 2022 18:01:49 +0000 (11:01 -0700)]
[lldb] Fix hard-coded argument to set_target_properties
The call to `set_target_properties` should use the target passed to
`add_lldb_library` instead of a hard-coded value. Upstream `liblldb` is
the only target for which this matters, but downstream we have
LLDBRPC.framework which needs this as well.
Jessica Paquette [Thu, 6 Oct 2022 17:30:10 +0000 (10:30 -0700)]
[GlobalISel] Add a m_SpecificReg matcher
Similar to the specific matchers for constants.
The intention here is to make it easier to write combines which check if a
specific register is used more than once.
e.g. matching patterns like:
```
(X + Y) == Y
```
Differential Revision: https://reviews.llvm.org/D135378
Peter Klausler [Tue, 4 Oct 2022 18:40:38 +0000 (11:40 -0700)]
[flang][runtime] When NAMELIST input hits EOF, signal END, not an error
NAMELIST input processing in the runtime support library treats an
end-of-file found while searching for the initial '&' character
as an error condition, but it really should be distinguishable.
Call SignalEnd() rather than SignalError().
Differential Revision: https://reviews.llvm.org/D135212
Peter Klausler [Tue, 4 Oct 2022 18:10:59 +0000 (11:10 -0700)]
[flang] Selectors whose expressions are pointers returned from functions are valid targets
An ASSOCIATE or SELECT TYPE statement's selector whose "right-hand side" is the result
of a reference to a function that returns a pointer must be usable as a valid target
(but not as a pointer).
Differential Revision: https://reviews.llvm.org/D135211
Peter Klausler [Tue, 4 Oct 2022 17:42:42 +0000 (10:42 -0700)]
[flang] Delay parse tree rewriting for I/O UNIT=func()
When an I/O statement's UNIT= specifier is a variable that is a
function reference, parse tree rewriting may determine the wrong type
of the result because generic resolution has not yet been performed.
So move this bit of parse tree rewriting into I/O semantic
checking so that the right handling (integer -> external file unit
number, character pointer -> internal I/O) applies.
Differential Revision: https://reviews.llvm.org/D135210
Peter Klausler [Tue, 4 Oct 2022 17:37:36 +0000 (10:37 -0700)]
[flang] Ignore errors on declarations in interfaces that "have no effect"
Fortran strangely allows declarations to appear in procedure interface
definitions when those declarations do not contribute anything to the
characteristics of the procedure; in particular, one may declare local
variables that are neither dummy variables nor function results.
Such declarations "have no effect" on the semantics of the program,
and that should include semantic error checking for things like
special restrictions on PURE procedures.
Differential Revision: https://reviews.llvm.org/D135209
Alex Brachet [Thu, 6 Oct 2022 18:27:34 +0000 (18:27 +0000)]
[PGO] Make emitted symbols hidden
Differential Revision: https://reviews.llvm.org/D135340
Peter Klausler [Mon, 26 Sep 2022 23:24:32 +0000 (16:24 -0700)]
[flang] Ensure USE associations of shadowed procedures are emitted to module files
When a generic interface in a module shadows a procedure of the same name that
has been brought into scope via USE association, ensure that that USE association is
not lost when the module file is written.
Differential Revision: https://reviews.llvm.org/D135207
Peter Klausler [Tue, 4 Oct 2022 17:24:29 +0000 (10:24 -0700)]
[flang] Error message situation should be a warning
f18 emits an error message when the same name is used in a scope
for both a procedure and a generic interface, and the procedure is
not a specific procedure of the generic interface. It may be
questionable usage, and not portable, but it does not appear to
be non-conforming by a strict reading of the standard, and many
popular Fortran compilers accept it.
Differential Revision: https://reviews.llvm.org/D135205
Peter Klausler [Tue, 4 Oct 2022 17:17:04 +0000 (10:17 -0700)]
[flang] Don't force SET_EXPONENT(I=...) argument to integer(4)
The implementation of the folding code for SET_EXPONENT() was written
in such a fashion as to convert the I= actual argument value to a 32-bit
integer. Which is usually not a problem, but it's not always correct
and a test case ran into trouble with it. Fix to allow any kind of
INTEGER without conversion.
Differential Revision: https://reviews.llvm.org/D135203
Joao Moreira [Tue, 4 Oct 2022 21:02:18 +0000 (14:02 -0700)]
[X86] Do not emit JCC to __x86_indirect_thunk
Clang may optimize conditional tailcall blocks with the following layout:
cmp <condition>
je tailcall_target
ret
When retpoline is in place, indirect calls are converted into direct calls to a retpoline thunk. When these indirect calls are tail calls, they may be subject to the above described optimization (there is no indirect JCC, but since now the jump is direct it can be made conditional). The above layout is non-ideal for the Linux kernel scenario because the branches into thunks may be patched back into indirect branches during runtime depending on the underlying CPU features, what would not be feasible if the binary is emitted with the optimized layout above.
Thus, prevent clang from emitting this it if CodeModel is Kernel.
Feature request from the respective kernel mailing list: https://lore.kernel.org/llvm/Yv3uI%2FMoJVctmBCh@worktop.programming.kicks-ass.net/
Reviewed By: nickdesaulniers, pengfei
Differential Revision: https://reviews.llvm.org/D134915
Craig Topper [Thu, 6 Oct 2022 18:02:08 +0000 (11:02 -0700)]
[RISCV] Use fixed vector types in fixed-vectors-vfnmsac-vp.ll. NFC
Bill Wendling [Thu, 6 Oct 2022 18:00:41 +0000 (11:00 -0700)]
[clang][NFC] Remove extraneous normalized value
Bjorn Pettersson [Tue, 4 Oct 2022 18:57:29 +0000 (20:57 +0200)]
[SimplifyLibCalls] Adjust code comment in optimizeStringLength. NFC
The limitation in LibCallSimplifier::optimizeStringLength to only
optimize when the string is an i8 array was changed already in
commit
50ec0b5dceff1f3fe93 back in 2017.
We still only simplify when 's' points at an array of 'CharSize', so
the comment is still valid in the sense that we do not support
arbitrary array types.
Differential Revision: https://reviews.llvm.org/D135261
Craig Topper [Thu, 6 Oct 2022 17:20:37 +0000 (10:20 -0700)]
[RISCV] Cleanup some vector tests. NFC
Some tests had scalable vector intrinsic names with fixed vector types.
Some had types in the wrong order.
Remove scalable vector test from fixed vector files.
Also replace insert+shuffle constexprs with fixed constant vectors.
Son Tuan Vu [Wed, 5 Oct 2022 20:04:47 +0000 (20:04 +0000)]
[LLVM][Support] Support for `llvm::cl::list`'s default values
This patch introduces support for default values of list of CL options.
It fixes the issue in https://github.com/llvm/llvm-project/issues/52667
Reviewed By: bkramer
Differential Revision: https://reviews.llvm.org/D135311
Bill Wendling [Mon, 3 Oct 2022 19:53:15 +0000 (12:53 -0700)]
[clang][NFC] Use enum for -fstrict-flex-arrays
Use enums for the strict flex arrays flag so that it's more readable.
Differential Revision: https://reviews.llvm.org/D135107
Arthur Eubanks [Thu, 6 Oct 2022 17:29:46 +0000 (10:29 -0700)]
Revert "[DSE] Eliminate noop store even through has clobbering between LoadI and StoreI"
This reverts commit
cd8f3e75813995c1d2da35370ffcf5af3aff9c2f.
Causes miscompiles, see D132657
Aaron Ballman [Thu, 6 Oct 2022 17:30:15 +0000 (13:30 -0400)]
Silence a signed/unsigned mismatch warning; NFC
Florian Hahn [Thu, 6 Oct 2022 17:24:15 +0000 (18:24 +0100)]
[ConstraintElimination] Remove fixme addressed in
8e3e96298f5a20.
Sanjay Patel [Thu, 6 Oct 2022 16:31:42 +0000 (12:31 -0400)]
[InstCombine] fold sdiv with hidden common factor
(X * Y) s/ (X << Z) --> Y s/ (1 << Z)
https://alive2.llvm.org/ce/z/yRSddG
issue #58137
Sanjay Patel [Thu, 6 Oct 2022 16:25:22 +0000 (12:25 -0400)]
[PhaseOrdering] add test for mul + sdiv; NFC
issue #58137
Ben Langmuir [Thu, 6 Oct 2022 16:11:51 +0000 (09:11 -0700)]
[clang][test] Make headers unique to avoid linking issues
Make the empty headers used by cl-pch-showincludes.cpp unique so that
filesystems that link these files together by contents will not see
different behaviour in this test, which is not testing linked files
specifically.
This was uncovered by
5ea78c4113f8 which made us stop mutating the name
of the presumed loc for the file in ContentCache, but that just surfaced
an underlying issue that the filename of multiple includes of linked
files are not separately tracked.
Differential Revision: https://reviews.llvm.org/D135373
Florian Hahn [Thu, 6 Oct 2022 17:07:25 +0000 (18:07 +0100)]
[ConstraintElimination] Update tests to use opaque pointers.
Gulfem Savrun Yeniceri [Wed, 5 Oct 2022 01:54:04 +0000 (01:54 +0000)]
[InstrProf] Add version into llvm-profdata
This patch adds support of printing profile version
into llvm-profdata which was proposed in:
https://discourse.llvm.org/t/llvm-profdata-failure-guarantees-for-code-coverage/64924
Differential Revision: https://reviews.llvm.org/D135317
bixia1 [Thu, 6 Oct 2022 15:51:46 +0000 (08:51 -0700)]
[mlir][sparse] Implement insertion sort for the stable sort operator.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135182
Erich Keane [Thu, 6 Oct 2022 15:52:29 +0000 (08:52 -0700)]
[NFC] Replace use of !isTranslationUnit && !isNamespace with !isFileContext
isFileContext is exactly equal to these two, so simplify the function.
Ivan Tetyushkin [Thu, 6 Oct 2022 16:22:13 +0000 (09:22 -0700)]
[RISCV] Optimization for using compressed beqz and bnez PR#56391
Optimization for using compressed beqz and bnez
If there is pattern
```
br_cc val1 constval eq/neq place
select_cc val1 constval eq/neq trueval falseval
```
and constval does not fit in compressed imm format(6 bit), but fit in
imm format(12 bit), we can replace by non compress sub and compress
c.beqz/c.bneqz:
```
addi val val -constval
c.beqz val place
```
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D132839
Shubham Sandeep Rastogi [Thu, 6 Oct 2022 16:30:18 +0000 (09:30 -0700)]
Revert "Remove the dependency between lib/DebugInfoDWARF and MC."
This reverts commit
0008990479a2daf587c2a4f274384b2fb87247fb.
Ellis Hoag [Wed, 5 Oct 2022 04:27:25 +0000 (21:27 -0700)]
[llvm-reduce] Remove debug metadata elements
There can be lots of `MDTuple` debug metadata nodes. For example, `globals: !{!1, !2}` in `!DICompileUnit()`. Search through all debug info to find `MDTuple`'s and remove some of their elements.
For D135114 I was able to get a reproducer with 364 lines without manually deleting elements. After this patch I got it down to 67 lines.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D135237
Shubham Sandeep Rastogi [Tue, 27 Sep 2022 20:08:29 +0000 (13:08 -0700)]
Remove the dependency between lib/DebugInfoDWARF and MC.
Differential Revision: https://reviews.llvm.org/D134817
Florian Hahn [Thu, 6 Oct 2022 16:17:37 +0000 (17:17 +0100)]
[ConstraintElimination] Generalize AND matching.
Extend more general matching used for chains of ORs to also support
chains of ANDs.
Valentin Clement [Thu, 6 Oct 2022 16:10:33 +0000 (18:10 +0200)]
[flang] Update fir.dispatch operation
Update the `fir.dispatch` operation to prepare
the lowering part. `nopass` and `pass_arg_pos` attributes
are added in the arguments list so accessors are generated
by MLIR tablegen. A verifier is added as well as some tests.
This patch is part of the implementation of the poltymorphic
entities.
https://github.com/llvm/llvm-project/blob/main/flang/docs/PolymorphicEntities.md
Reviewed By: jeanPerier, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D135358
Petr Hosek [Fri, 30 Sep 2022 20:33:13 +0000 (20:33 +0000)]
[CMake] Provide Findzstd module
This module is used to find the system zstd library. The imported
targets intentionally use the same name as the generate zstd config
CMake file so these can be used interchangeably.
Differential Revision: https://reviews.llvm.org/D134990
LLVM GN Syncbot [Thu, 6 Oct 2022 16:02:20 +0000 (16:02 +0000)]
[gn build] Port
79df8e19beb9
Sam McCall [Thu, 6 Oct 2022 15:57:58 +0000 (17:57 +0200)]
[Format] Drop speculative test added in previous patch, it hits asserts?
Tyker [Wed, 14 Sep 2022 01:55:32 +0000 (18:55 -0700)]
[ADT] Add support for more formats in APFixedPoint
Prior to this patch FixedPointSemantics and APFixedPoint only support semantics where
the Scale larger or equal to zero and the Width is larger or equal to the Scale.
This patch removes both those requirements while staying API compatible.
Peter Steinfeld [Wed, 5 Oct 2022 21:02:59 +0000 (14:02 -0700)]
[flang] Add a "not yet implemented" message for large, constant arrays
Rather than crashing in llvm code, nip things in the bud.
Differential Revision: https://reviews.llvm.org/D135321
bixia1 [Wed, 5 Oct 2022 21:33:53 +0000 (14:33 -0700)]
[mlir][sparse] Add rewrite rules for sparse-to-sparse reshape operators.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135077
Sanjay Patel [Thu, 6 Oct 2022 15:33:19 +0000 (11:33 -0400)]
[InstCombine] fold udiv with hidden common factor
(X * Y) u/ (X << Z) --> Y u>> Z
https://alive2.llvm.org/ce/z/4G9D_W
Sanjay Patel [Thu, 6 Oct 2022 13:42:18 +0000 (09:42 -0400)]
[InstCombine] add tests for div with common factor; NFC
Pavel Labath [Thu, 29 Sep 2022 14:47:52 +0000 (16:47 +0200)]
[lldb] Move breakpoint hit reset code to Target::CleanupProcess
This ensures it is run regardless of the method we use to initiate the
session (previous version did not handle connects), and it is the same
place that is used for resetting watchpoints.
Differential Revision: https://reviews.llvm.org/D134882
Pavel Labath [Tue, 27 Sep 2022 18:04:10 +0000 (20:04 +0200)]
[lldb/gdb-server] Better reporting of launch errors
Use our "rich error" facility to propagate error reported by the stub to
the user. lldb-server reports rich launch errors as of D133352.
To make this easier to implement, and reduce code duplication, I have
moved the vRun/A/qLaunchSuccess handling into a single
GDBRemoteCommunicationClient function.
Differential Revision: https://reviews.llvm.org/D134754
Sam McCall [Tue, 4 Oct 2022 23:33:36 +0000 (01:33 +0200)]
[clangd] Optimize Dex::generateProximityURIs().
Production profiles show that generateProximityURIs is roughly 3.8% of
buildPreamble. Of this, the majority (3% of buildPreamble) is parsing
and reserializing URIs.
We can do this with ugly string manipulation instead.
Differential Revision: https://reviews.llvm.org/D135226
Sam McCall [Thu, 6 Oct 2022 11:10:19 +0000 (13:10 +0200)]
[Format] Fix crash when hitting eof while lexing JS template string
Different loop termination conditions resulted in confusion of whether
*Offset was intended to be inside or outside the token.
This ultimately led to constructing an out-of-range SourceLocation.
Fix by making Offset consistently point *after* the token.
Differential Revision: https://reviews.llvm.org/D135356