Yitzhak Mandelbaum [Thu, 14 Apr 2022 13:42:02 +0000 (13:42 +0000)]
[clang][dataflow] Fix `Environment::join`'s handling of flow-condition merging.
The current implementation mutates the environment as it performs the
join. However, that interferes with the call to the model's `merge` operation,
which can modify `MergedEnv`. Since any modifications are assumed to apply to
the post-join environment, providing the same environment for both is
incorrect. This mismatch is a particular concern for joining the flow
conditions, where modifications in the old environment may not be propagated to
the new one.
Differential Revision: https://reviews.llvm.org/D124104
Jeremy Morse [Mon, 25 Apr 2022 14:23:57 +0000 (15:23 +0100)]
Reapply D124184, [DebugInfo][InstrRef] Add a size operand to DBG_PHI
This was applied in
fda4305e53784, reverted in
13815e8cbf8d49, the problem
was that fp80 X86 registers that were spilt to the stack aren't expected by
LiveDebugValues. It pre-allocates a position number for all register sizes
that can be spilt, and 80 bits isn't exactly common.
The solution is to scan the register classes to find any unrecognised
register sizes, adn pre-allocate those position numbers, avoiding a later
assertion.
Joseph Huber [Mon, 25 Apr 2022 12:28:30 +0000 (08:28 -0400)]
[Libomptarget] Use entry name for global info
Currently, globals on the device will have an infinite reference count
and an unknown name when using `LIBOMPTARGET_INFO` to print the mapping
table. We already store the name of the global in the offloading entry
so we should be able to use it, although there will be no source
location. To do this we need to create a valid `ident_t` string from a
name only.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D124381
Florian Hahn [Mon, 25 Apr 2022 13:26:41 +0000 (14:26 +0100)]
[SimpleLoopUnswitch] Enable freezing of conditions by default.
This fixes a series of mis-compiles by SimpleLoopUnswitch.
My measurements showed no performance regression with -O3 on AArch64
in SPEC2006, SPEC2017 and a set of internal benchmarks.
Fixes #50387, #50430
Depends on D124251.
Reviewed By: nikic, aqjune
Differential Revision: https://reviews.llvm.org/D124252
Nikolas Klauser [Mon, 25 Apr 2022 13:17:12 +0000 (15:17 +0200)]
[libc++] Fix C++03 with the unstable ABI enabled
Jeremy Morse [Mon, 25 Apr 2022 13:06:12 +0000 (14:06 +0100)]
Revert "[DebugInfo][InstrRef] Add a size operand to DBG_PHI"
This reverts commit
fda4305e5378478051be225248bfe9c1d401d938.
Green dragon has spotted a problem -- it's understood, but might be fiddly
to fix, reverting in the meantime.
Nico Weber [Mon, 25 Apr 2022 12:48:57 +0000 (08:48 -0400)]
Revert "[sanitizer] Use canonical syscalls everywhere"
This reverts commit
34b676eb60ca1fa012068d161633f268d8ea7e6c.
Speculative, might have caused test problems on Android.
Jeremy Morse [Thu, 21 Apr 2022 13:39:39 +0000 (14:39 +0100)]
[DebugInfo][InstrRef] Add a size operand to DBG_PHI
DBG_PHI instructions can refer to stack slots, to indicate that multiple
values merge together on control flow joins in that slot. This is fine --
however the slot might be merged at a later date with a slot of a different
size. In doing so, we lose information about the size the eliminated PHI.
Later analysis passes have to guess.
Improve this by attaching an optional "bit size" operand to DBG_PHI, which
only gets added for stack slots, to let us know how large a size the value
on the stack is.
Differential Revision: https://reviews.llvm.org/D124184
Sam McCall [Fri, 22 Apr 2022 09:59:38 +0000 (11:59 +0200)]
[Frontend] shrink in-memory PCH buffers to fit
After building a PCH, the vector capacity is on average ~1/3 unused.
If we're going to keep it in memory for a while, reallocate to the right size.
Take care to do this once clang is destroyed so that we can reuse its
memory rather than requesting more.
Differential Revision: https://reviews.llvm.org/D124242
Nikita Popov [Mon, 25 Apr 2022 11:18:31 +0000 (13:18 +0200)]
[InstCombine] Remove redundant unsigned underflow fold (NFCI)
This is now handled as a combination of two other folds:
(A+B) <= A & (A+B) != 0 --> (A+B)-1 < A
(A+B)-1 < A --> -B < A
Mariusz Sikora [Mon, 25 Apr 2022 11:57:27 +0000 (12:57 +0100)]
[AMDGPU] Use d16 flag for image.sample instructions
Image.sample instruction can be forced to return half type instead of
float when d16 flag is enabled.
This patch adds new pattern in InstCombine to detect if output of
image.sample is used later only by fptrunc which converts the type
from float to half. If pattern is detected then fptrunc and image.sample
are combined to single image.sample which is returning half type.
Later in Lowering part d16 flag is added to image sample intrinsic.
Differential Revision: https://reviews.llvm.org/D124232
Luo, Yuanke [Mon, 25 Apr 2022 11:47:21 +0000 (19:47 +0800)]
[X86][AMX] Add test case for D124378.
Andrzej Warzynski [Thu, 17 Mar 2022 16:24:54 +0000 (16:24 +0000)]
[flang][driver] Add support for generating executables
This patch adds 2 missing items required for `flang-new` to be able to
generate executables:
1. The Fortran_main runtime library, which implements the main entry
point into Fortran's `PROGRAM` in Flang,
2. Extra linker flags to include Fortran runtime libraries (e.g.
Fortran_main).
Fortran_main is the bridge between object files generated by Flang and
the C runtime that takes care of program set-up at system-level. For
every Fortran `PROGRAM`, Flang generates the `_QQmain` function.
Fortran_main implements the C `main` function that simply calls
`_QQmain`.
Additionally, "<driver-path>/../lib" directory is added to the list of
search directories for libraries. This is where the required runtime
libraries are currently located. Note that this the case for the build
directory. We haven't considered installation directories/targets yet.
With this change, you can generate an executable that will print `hello,
world!` as follows:
```bash
$ cat hello.f95
PROGRAM HELLO
write(*, *) "hello, world!"
END PROGRAM HELLO
$ flang-new -flang-experimental-exec hello.f95
./a.out
hello, world!
```
NOTE 1: Fortran_main has to be a static library at all times. It invokes
`_QQmain`, which is the main entry point generated by Flang for the
given input file (you can check this with `flang-new -S hello.f95 -o - |
grep "Qmain"`). This means that Fortran_main has an unresolved
dependency at build time. The linker will allow this for a static
library. However, if Fortran_main was a shared object, then the linker
will produce an error: `undefined symbol: `_QQmain`.
NOTE 2: When Fortran runtime libraries are generated as shared libraries
(excluding Fortran_main, which is always static), you will need to
tell the dynamic linker (by e.g. tweaking LD_LIBRARY_PATH) where to look
for them when invoking the executables. For example:
```bash
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<flang-build-dir>/lib/ ./a.out
```
NOTE 3: This feature is considered experimental and currently guarded
with a flag: `-flang-experimental-exec`.
Differential Revision: https://reviews.llvm.org/D122008
[1] https://github.com/flang-compiler/f18-llvm-project
CREDITS: Fortran_main was originally written by Eric Schweitz, Jean
Perier, Peter Klausler and Steve Scalpone in the fir-dev` branch in [1].
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Peter Klausler <pklausler@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Steve Scalpone <sscalpone@nvidia.com
Florian Hahn [Mon, 25 Apr 2022 11:49:07 +0000 (12:49 +0100)]
[SimpleLoopUnswitch] Run LICM for nested unswitching tests.
When enabling freeze-loop-unswitch-cond the inserted freeze instruction
may block unswitching of parent loops if they get inserted in a block in
the parent loop (as the llvm::Loop-based invariance check only checks
whether an instruction is in a loop block or not).
In the optimization pipeline, LICM is responsible to hoist out loop
invariant instructions to enable further unswitching. Also run LICM for
nested unswitching tests in preparation for flipping the default of
freeze-loop-unswitch-cond.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D124251
Simon Pilgrim [Mon, 25 Apr 2022 11:17:23 +0000 (12:17 +0100)]
[X86][AVX] Add shuffle test case for Issue #55066
Nikita Popov [Fri, 22 Apr 2022 13:14:49 +0000 (15:14 +0200)]
[InstCombine] Fold (X != 0) & (Y u>= X)
This adds the De Morgan conjugated fold for the existing
(X == 0) | (Y u< X) fold.
Proof: https://alive2.llvm.org/ce/z/3Me3JQ
Nico Weber [Mon, 25 Apr 2022 01:10:55 +0000 (21:10 -0400)]
[lld/mac] Revert libcompiler_rt.dylib version check change
This reverts D117925 since it's no longer needed after D124336.
Differential Revision: https://reviews.llvm.org/D124354
Nikita Popov [Mon, 25 Apr 2022 10:08:30 +0000 (12:08 +0200)]
[InstCombine] Fold X + Y + C u< X
This is a variation on the X + Y u< X fold with an extra constant.
Proof: https://alive2.llvm.org/ce/z/VNb8pY
Nikita Popov [Mon, 25 Apr 2022 10:47:03 +0000 (12:47 +0200)]
[InstCombine] Add additional tests for X + Y + C u< X (NFC)
We don't actually need the limitation for C == -1, so update test
naming accordingly, and also test a non-uniform vector constant.
Max Kazantsev [Mon, 25 Apr 2022 10:33:57 +0000 (17:33 +0700)]
[LoopInstSimplify] Ignore users in unreachable blocks. PR55072
Logic in this pass assumes that all users of loop instructions are
either in the same loop or are LCSSA Phis. In fact, there can also
be users in unreachable blocks that currently break assertions.
Such users don't need to go to the next round of simplifications.
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D124368
Florian Hahn [Mon, 25 Apr 2022 10:32:50 +0000 (11:32 +0100)]
[LangRef] Limit readnone,read/writeonly to memory visible outside the fn
This patch unifies the wording used for readnone, readonly and writeonly
attributes. The definitions now more specifically refer to memory visible
outside the function
The motivation for the clarification is D123473.
Reviewed By: nlopes
Differential Revision: https://reviews.llvm.org/D124124
LLVM GN Syncbot [Mon, 25 Apr 2022 10:26:57 +0000 (10:26 +0000)]
[gn build] Port
042dc3c46d73
Markus Böck [Mon, 25 Apr 2022 10:23:09 +0000 (12:23 +0200)]
[mlir][LLVM] Support opaque pointers in `llvm.mlir.addressof`
The verifier of llvm.mlir.addressof did not properly account for opaque pointers, that is, the pointer type not having an element type equal to the type of the referenced global or function. This patch fixes that by skipping the test for the element type if the pointer is opaque.
Differential Revision: https://reviews.llvm.org/D124333
Hui Xie [Mon, 25 Apr 2022 10:18:54 +0000 (12:18 +0200)]
[libc++] add zip_view and views::zip for C++23
- add zip_view and views::zip for C++23
- added unit tests
- implemented section 5.6 (zip) in P2321R2
I used clang-format to format the files but they look nothing like the rest of the code base. Manually indenting each line to match the styles sounds like an impossible task. Is there any clang-format file which can format it reasonable similar to the rest of the code base so that I can manually format the rest lines that look weird?
Reviewed By: ldionne, #libc, philnik, var-const
Spies: Mordante, philnik, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D122806
Nikita Popov [Mon, 25 Apr 2022 10:20:56 +0000 (12:20 +0200)]
[InstCombine] Add tests for X + Y - 1 u< X (NFC)
Max Kazantsev [Mon, 25 Apr 2022 10:20:08 +0000 (17:20 +0700)]
[Test] Simplify test for PR55072
Sam McCall [Fri, 22 Apr 2022 12:00:36 +0000 (14:00 +0200)]
[Serialization] write expr dependence bits as a single integer
When exprs are written unabbreviated:
- these were encoded as 5 x vbr6 = 30 bits
- now they fit exactly into a one-chunk vbr = 6 bits
clangd --check=clangd/AST.cpp reports ~1% reduction in PCH size
(
42826720->
42474460)
Differential Revision: https://reviews.llvm.org/D124250
Alex Zinenko [Mon, 25 Apr 2022 08:25:59 +0000 (10:25 +0200)]
[mlir][vector] insert `alloca`s outside of loops
After https://reviews.llvm.org/D119743 added the `AutomaticAllocationScope`
trait to loop-like constructs, the vector transfer full/partial splitting pass
started inserting allocations for temporaries within the closest loop rather
than the closest function (or other allocation scope such as `async.execute`).
While this is correct as long as the lowered code takes care of automatic
deallocation at the end of each iteration of the loop, this interferes with
downstream optimizations that expect `alloca`s to be at the function level.
Step over loops when looking for the closest allocation scope in vector
transfer full/partial splitting pass thus restoring the original behavior.
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D124366
Florian Hahn [Mon, 25 Apr 2022 08:22:45 +0000 (09:22 +0100)]
[MemorySSA] Use -simple-loop-unswitch instead of -loop-unswitch in test.
Martin Storsjö [Mon, 25 Apr 2022 06:03:00 +0000 (09:03 +0300)]
[runtimes] [CMake] Rename a cmake variable missed in
b3df14b6c98702ce50401fd039852787373e4676
This was missed as this check only is executed if linking doesn't
work without it.
Max Kazantsev [Mon, 25 Apr 2022 08:18:51 +0000 (15:18 +0700)]
[Test] Add test for PR55072
Florian Hahn [Mon, 25 Apr 2022 08:02:42 +0000 (09:02 +0100)]
[MemorySSA] Generate check lines for test.
This is to ensure we produce the same code when switching to
SimpleLoopUnswitch.
Adrian Kuegel [Mon, 25 Apr 2022 07:16:16 +0000 (09:16 +0200)]
[mlir][Bazel] Add missing dependencies.
When building with layering_check enabled, there needs to be a
dependency for each header include.
Jean Perier [Mon, 25 Apr 2022 07:20:07 +0000 (09:20 +0200)]
[flang] fix LBOUND lowering with KIND and no DIM arguments
The lowering code was mistakenly assuming that the second argument
in the signature provided by semantics is the DIM argument. This
caused calls with a KIND argument but no DIM to be lowered as if the
KIND argument was DIM.
Differential Revision: https://reviews.llvm.org/D124243
Markus Böck [Mon, 25 Apr 2022 07:14:18 +0000 (09:14 +0200)]
[mlir][LLVM] Support opaque pointers in data layout entries
This is likely preferable to having it crash if one were to specify an opaque pointer type, and the actual element type is unused either way.
Differential Revision: https://reviews.llvm.org/D124334
Jun Zhang [Mon, 25 Apr 2022 04:43:49 +0000 (12:43 +0800)]
Fix an issue in comment. NFC
I think the author renamed the function but forgot to update the
comment.
Signed-off-by: Jun Zhang <jun@junz.org>
Shraiysh Vaishay [Mon, 25 Apr 2022 02:53:58 +0000 (08:23 +0530)]
[OpenMP][IRBuilder] Handle unexcuted EXPECT_FALSE
This patch addresses the comment about unexecuted test in D122371.
Reviewed By: probinson
Differential Revision: https://reviews.llvm.org/D123920
Chenbing Zheng [Mon, 25 Apr 2022 01:48:43 +0000 (09:48 +0800)]
[InstCombine] Complete folding of fneg-of-fabs
This patch add a function foldSelectWithFCmpToFabs, and do more combine for
fneg-of-fabs.
With 'nsz':
fold (X < +/-0.0) ? X : -X or (X <= +/-0.0) ? X : -X to -fabs(x)
fold (X > +/-0.0) ? X : -X or (X >= +/-0.0) ? X : -X to -fabs(x)
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D123830
Brad Smith [Mon, 25 Apr 2022 01:45:49 +0000 (21:45 -0400)]
[libcxx] random_device, use arc4random() on FreeBSD, NetBSD and DragonFlyBSD
Reviewed By: ldionne, emaste, dim
Differential Revision: https://reviews.llvm.org/D122628
sstwcw [Sun, 24 Apr 2022 22:30:22 +0000 (22:30 +0000)]
[clang-format] Refactor determineStarAmpUsage NFC
There was some duplicate code in determineStarAmpUsage and
determinePlusMinusCaretUsage
Now a `-` or `+` following `;`, `sizeof`, `co_await`, or `delete` is
regarded as a unary operator.
Now a `*` or `&` following `case` is also a unary operator.
Reviewed By: curdeius, MyDeveloperDay, HazardyKnusperkeks
Differential Revision: https://reviews.llvm.org/D121754
Aaron Puchert [Sun, 24 Apr 2022 20:30:25 +0000 (22:30 +0200)]
Move test/.gitattributes to clang-tools-extra/test
It was probably accidentally added there, see the discussion on change
D97625. It is certainly without effect, to quote gitattributes(5):
When deciding what attributes are assigned to a path, Git consults
[...], `.gitattributes` file in the same directory as the path in
question, and its parent directories up to the toplevel of the work
tree [...]
Running `git check-attr -a` on the files in question shows that now the
settings are indeed effective whereas before they were not.
Lastly, lit ignores the file like any dotfile, see getTestsInDirectory
of FileBasedTest in llvm/utils/lit/lit/formats/base.py. This can be
verified with `llvm-lit --show-tests clang-tools-extra/test`.
Valentin Clement (バレンタイン クレメン) [Sun, 24 Apr 2022 18:37:27 +0000 (20:37 +0200)]
[flang] Do not create arith.extui with same from/to type
In some case the lowering of `ichar` is generating an `arith.extui` operation
with the same from/to type. This operation do not accept from/to types to be
the same. If the from/to types are identical, we do not generate the extra
operation.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D124107
Jonas Toth [Sun, 24 Apr 2022 15:16:36 +0000 (17:16 +0200)]
run-clang-tidy: Fix infinite loop on windows
`find_compilation_database` checked only for "/" as exit point, but on Windows, this root is impossible.
Fixes #53642
Authored By: Febbe
Reviewed By: JonasToth
Differential Revision: https://reviews.llvm.org/D119481
Matt Arsenault [Sun, 17 Apr 2022 14:15:16 +0000 (10:15 -0400)]
llvm-reduce: Don't delete triple/datalayout
Removing these is extremely unhelpful and just adds extra hassle. This
is really finding out whether your test script uses -mtriple or
not. You can't meaningfully delete these fields, and the resulting
module defaults to the host.
Petr Hosek [Thu, 10 Mar 2022 09:47:09 +0000 (11:47 +0200)]
[runtimes] [CMake] Unify variable names
Avoid repeating CMake checks across runtimes by unifying names of
variables used for results to leverage CMake caching.
Differential Revision: https://reviews.llvm.org/D110005
Chenbing Zheng [Sun, 24 Apr 2022 09:26:15 +0000 (17:26 +0800)]
[InstCombine] Add test for fold fcmp-of-copysign. nfc
Add more tests with differert predicates.
Vince Bridgers [Fri, 8 Apr 2022 11:17:14 +0000 (06:17 -0500)]
[analyzer] Add option for AddrSpace in core.NullDereference check
This change adds an option to detect all null dereferences for
non-default address spaces, except for address spaces 256, 257 and 258.
Those address spaces are special since null dereferences are not errors.
All address spaces can be considered (except for 256, 257, and 258) by
using -analyzer-config
core.NullDereference:DetectAllNullDereferences=true. This option is
false by default, retaining the original behavior.
A LIT test was enhanced to cover this case, and the rst documentation
was updated to describe this behavior.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D122841
wangpc [Sun, 24 Apr 2022 06:55:54 +0000 (14:55 +0800)]
[RISCV] Add sched to pseudo function call instructions
To fix llvm-mca's error of 'found an unsupported instruction
in the input assembly sequence.' caused by the lack of
scheduling info.
Pseudo function call instructions will be expanded to `auipc`
and `jalr`, so their scheduling info are the combination of
two.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D123578
Senran Zhang [Sun, 24 Apr 2022 02:49:58 +0000 (10:49 +0800)]
[NFC][Clang][Pragma] Remove unused variables
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D124339
Vaivaswatha Nagaraj [Sun, 24 Apr 2022 04:07:04 +0000 (09:37 +0530)]
[OCaml][DebugInfo] Add bindings for parameter and auto variable creation
This patch extends https://reviews.llvm.org/D90831 with a few more
functions added to the OCaml debuginfo bindings.
Differential Revision: https://reviews.llvm.org/D123914
Nico Weber [Fri, 22 Apr 2022 15:55:50 +0000 (11:55 -0400)]
[lld/mac] For catalyst outputs, tolerate implicitly linking against mac-only tbd files
Before this,
clang empty.cc -target x86_64-apple-ios13.1-macabi \
-framework CoreServices -fuse-ld=lld
would error out with
ld64.lld: error: path/to/MacOSX.sdk/System/Library/Frameworks/
CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/
Versions/A/CarbonCore.tbd(
/System/Library/Frameworks/
CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/
Versions/A/CarbonCore) is incompatible with x86_64 (macCatalyst)
Now it works, like with ld64.
Differential Revision: https://reviews.llvm.org/D124336
Jun Ma [Fri, 22 Apr 2022 07:08:01 +0000 (15:08 +0800)]
[InlineCost] Set LastCallToStaticBonus in ML inlining models.
This patch set LastCallToStaticBonus based on check, it has
no noticeable size reduction on an internal workload and linux kernel
with Os/Oz.
Differential Revision: https://reviews.llvm.org/D124233
Nick Kreeger [Sun, 24 Apr 2022 01:14:48 +0000 (20:14 -0500)]
Revert "[mlir][sparse] Expose SpareTensor passes as enums instead of opaque numbers for vectorization and parallelization options."
This reverts commit
d59cf901cbae7991f7847eb038d825efff1221ad.
Build fails on NVIDIA Sparse tests:
https://lab.llvm.org/buildbot/#/builders/61/builds/25447
Nick Kreeger [Sun, 24 Apr 2022 01:12:15 +0000 (20:12 -0500)]
Reverting accidental git-revert commits.
Revert "Revert "Revert "Revert "[Concepts] Fix overload resolution bug with constrained candidates""""
This reverts commit
cfc2c5905ec11a501cdfc9502f503ab494c200b6.
Nick Kreeger [Sun, 24 Apr 2022 01:11:58 +0000 (20:11 -0500)]
Reverting accidental git-revert commits.
Revert "Revert "Revert "[Concepts] Fix overload resolution bug with constrained candidates"""
This reverts commit
a0636b5855f5ba1f7033670dc32c956d63baaa51.
Nick Kreeger [Sun, 24 Apr 2022 01:11:27 +0000 (20:11 -0500)]
Reverting accidental git-revert commits.
Revert "Revert "[Concepts] Fix overload resolution bug with constrained candidates""
This reverts commit
f6af446b6625657b1b9046273f5b33bc1173a97c.
Nick Kreeger [Sun, 24 Apr 2022 00:36:51 +0000 (19:36 -0500)]
Revert "Revert "Revert "[Concepts] Fix overload resolution bug with constrained candidates"""
This reverts commit
a0636b5855f5ba1f7033670dc32c956d63baaa51.
Nick Kreeger [Sun, 24 Apr 2022 00:35:50 +0000 (19:35 -0500)]
Revert "Revert "[Concepts] Fix overload resolution bug with constrained candidates""
This reverts commit
f6af446b6625657b1b9046273f5b33bc1173a97c.
Nick Kreeger [Sun, 24 Apr 2022 00:35:41 +0000 (19:35 -0500)]
Revert "[Concepts] Fix overload resolution bug with constrained candidates"
This reverts commit
807e418413a0958ad1ea862093fb262673b2afa1.
Nick Kreeger [Sun, 24 Apr 2022 00:16:57 +0000 (19:16 -0500)]
[mlir][sparse] Expose SpareTensor passes as enums instead of opaque numbers for vectorization and parallelization options.
The SparseTensor passes currently use opaque numbers for the CLI, despite using an enum internally. This patch exposes the enums instead of numbered items that are matched back to the enum.
Fixes GitHub issue #53389
Reviewed by: aartbik, mehdi_amini
Differential Revision: https://reviews.llvm.org/D123876
Roy Jacobson [Fri, 15 Apr 2022 15:58:11 +0000 (11:58 -0400)]
[Concepts] Fix overload resolution bug with constrained candidates
When doing overload resolution, we have to check that candidates' parameter types are equal before trying to find a better candidate through checking which candidate is more constrained.
This revision adds this missing check and makes us diagnose those cases as ambiguous calls when the types are not equal.
Fixes GitHub issue https://github.com/llvm/llvm-project/issues/53640
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D123182
Fangrui Song [Sat, 23 Apr 2022 21:07:31 +0000 (14:07 -0700)]
[hwasan][test] Change -hwasan to -passes=hwasan
With the -enable-new-pm defaulting to true, the two forms have the same effect,
but the previous form uses the legacy pass manager syntax which is being phased
out.
Fangrui Song [Sat, 23 Apr 2022 20:06:54 +0000 (13:06 -0700)]
[Bazel] Add more mlir dependencies after D124298
The Bazel layering_check feature compiles libraries with `-fmodule-name=X
-fmodules-strict-decluse` which require #include to be in deps.
Fangrui Song [Sat, 23 Apr 2022 19:59:37 +0000 (12:59 -0700)]
[Bazel] Make mlir:BufferizationDialect depend on mlir:ArithmeticDialect after D124298
Vince Bridgers [Sun, 10 Apr 2022 12:44:11 +0000 (07:44 -0500)]
[analyzer] Clean checker options from bool to DefaultBool (NFC)
A recent review emphasized the preference to use DefaultBool instead of
bool for checker options. This change is a NFC and cleans up some of the
instances where bool was used, and could be changed to DefaultBool.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D123464
Joseph Huber [Fri, 22 Apr 2022 17:19:16 +0000 (13:19 -0400)]
[OpenMP] Use CUDA's non-RDC mode when LTO has whole program visibility
When we do LTO we consider ourselves to have whole program visibility if
every single input file we have contains LLVM bitcode. If we have whole
program visibliity then we can create a single image and utilize CUDA's
non-RDC mode by not passing `-c` to `ptxas` and ignoring the `nvlink`
job. This should be faster for some situations and also saves us the
time executing `nvlink`.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D124292
Mark de Wever [Wed, 20 Apr 2022 16:47:13 +0000 (18:47 +0200)]
[libc++] Fixes concepts overload resolution.
D123182 fixes a bug in Clang's overload resolution. After it landed it
was discovered `basic_format_arg`'s constructors contains this bug. This
fixes the bug in libc++, unblocking D123182.
The code has been tested in combination with D123182.
Reviewed By: royjacobson, #libc
Differential Revision: https://reviews.llvm.org/D124103
Amir Ayupov [Sat, 23 Apr 2022 16:16:53 +0000 (12:16 -0400)]
[BOLT][CMAKE] Simplify Clang/LLD identification
Refactor nested conditions. NFC
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D123861
Ye Luo [Sat, 23 Apr 2022 14:25:54 +0000 (09:25 -0500)]
Revert "[clang] Adding Platform/Architecture Specific Resource Header Installation Targets"
Caused build failure see github issue #55002
This reverts commit
2512a875ccac158bc9b654b09e3347db167e33df.
Iain Sandoe [Fri, 31 Jul 2020 09:44:12 +0000 (10:44 +0100)]
[C++20][Modules][Driver][HU 4/N] Add fdirectives-only mode for preprocessing output.
When the -fdirectives-only option is used together with -E, the preprocessor
output reflects evaluation of if/then/else directives.
Thus it preserves macros that are still live after such processing.
This output can be consumed by a second compilation to produce a header unit.
We automatically invoke this (with -E) when we know that the job produces a
header unit so that the preprocessed output reflects the macros that will be
defined when the binary HU is emitted.
Differential Revision: https://reviews.llvm.org/D121591
Eric Schweitz [Fri, 22 Apr 2022 20:57:21 +0000 (13:57 -0700)]
[NFC] Sync code for upstreaming.
Remove redundant code.
Differential Revision: https://reviews.llvm.org/D124310
Florian Hahn [Sat, 23 Apr 2022 13:08:47 +0000 (14:08 +0100)]
[IndVarSimplify] Replace legacy loop-unswitch with SimpleLoopUnswitch.
Also moves the test to use the new pass manager.
Florian Hahn [Sat, 23 Apr 2022 13:03:32 +0000 (14:03 +0100)]
[SimpleLoopUnswitch] Use SLU version of memoryssa-threshold option.
Update the test to use the SLU version of the option.
Florian Hahn [Fri, 22 Apr 2022 21:23:21 +0000 (22:23 +0100)]
[SCCP] Add initial tests for freeze.
Florian Hahn [Sat, 23 Apr 2022 10:12:58 +0000 (11:12 +0100)]
[SCEV] Use getConstant to construct SCEV for ConstantInt (NFC).
We already know that we will construct a SCEVConstant. Directly use
getConstant, rather than going through getSCEV.
Matthias Springer [Sat, 23 Apr 2022 08:59:47 +0000 (17:59 +0900)]
[mlir][bufferize][NFC] Remove old references to Comprehensive Bufferize
Differential Revision: https://reviews.llvm.org/D124324
Matthias Springer [Sat, 23 Apr 2022 08:59:06 +0000 (17:59 +0900)]
[mlir][bufferize][NFC] Clean up test cases
Run `one-shot-bufferize` instead of `linalg-comprehensive-module-bufferize` and move some test cases to their respective dialects.
Differential Revision: https://reviews.llvm.org/D124323
Iain Sandoe [Thu, 18 Feb 2021 12:23:15 +0000 (12:23 +0000)]
[C++20][Modules][Driver][HU 3/N] Handle foo.h with -fmodule-header and/or C++ invocation.
Allow an invocation like clang -fmodule-header bar.h (which will be a C++
compilation, but using a header which will be recognised as a C one).
Also we do not want to produce:
"treating 'c-header' input as 'c++-header' when in C++ mode"
diagnostics when the user has been specific about the intent.
Differential Revision: https://reviews.llvm.org/D121590
River Riddle [Fri, 22 Apr 2022 21:17:08 +0000 (14:17 -0700)]
[mlir][NFC] Shift a bunch of dialect includes from the .h to the .cpp
Now that dialect constructors are generated in the .cpp file, we can
drop all of the dependent dialect includes from the .h file.
Differential Revision: https://reviews.llvm.org/D124298
River Riddle [Fri, 22 Apr 2022 21:16:06 +0000 (14:16 -0700)]
[mlir] Generate Dialect constructors in .cpp instead of .h
By generating in the .h file, we were forcing dialects to include
a lot of additional header files because:
* Fields of the dialect, e.g. std::unique_ptr<>, were unable to use
forward declarations.
* Dependent dialects are loaded in the constructor, requiring the
full definition of each dependent dialect (which, depending on
the file structure of the dialect, may include the operations).
By generating in the .cpp we get much faster builds, and also
better align with the rest of the code base.
Fixes #55044
Differential Revision: https://reviews.llvm.org/D124297
Alok Kumar Sharma [Thu, 14 Apr 2022 09:04:22 +0000 (14:34 +0530)]
[clang][OpenMP][DebugInfo] Debug support for TLS variables present in OpenMP consruct
In case of OpenMP programs, thread local variables can be present in
any clause pertaining to OpenMP constructs, as we know that compiler
generates artificial functions and in some cases values are passed to
those artificial functions thru parameters. For an example, if thread
local variable is present in copyin clause (testcase attached with the
patch), parameter with same name is generated as parameter to artificial
function. When user inquires the thread Local variable, its debug info
is hidden by the parameter. User never gets the actual TLS variable
when inquires it, instead gets the artificial parameter.
Current patch suppresses the debug info for such artificial parameter to
enable correct debugging of TLS variables.
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D123787
Vitaly Buka [Sat, 23 Apr 2022 06:28:27 +0000 (23:28 -0700)]
[test] Don't rely on default of detect_stack_use_after_return
Vitaly Buka [Sat, 23 Apr 2022 06:25:02 +0000 (23:25 -0700)]
Revert "[test] Don't rely on default of detect_stack_use_after_return"
Revent acidentally deleted lines.
This reverts commit
ff25f694731f7b9fa33f2955e751f3ccb3c35afa.
Chang-Sun Lin Jr [Sat, 23 Apr 2022 06:16:20 +0000 (23:16 -0700)]
[NFC][LAA] Match-up type sizes for possible extensions, based on actual bit-size rather than rounded-up byte size.
Differential Revision: https://reviews.llvm.org/D119200
Vitaly Buka [Sat, 23 Apr 2022 02:08:56 +0000 (19:08 -0700)]
[test] Don't rely on default of detect_stack_use_after_return
Enna1 [Sat, 23 Apr 2022 03:57:23 +0000 (11:57 +0800)]
[ASan][test] Fix mismatched-new-delete in asan test unaligned_loads_and_stores.cpp
Fix mismatched-new-delete in asan test unaligned_loads_and_stores.cpp
Reviewed By: vitalybuka, MaskRay
Differential Revision: https://reviews.llvm.org/D124268
Akira Hatanaka [Fri, 22 Apr 2022 23:48:38 +0000 (16:48 -0700)]
[Driver] Call hasFlag instead of hasArg
`_HAS_STATIC_RTTI` should be set to 0 only by `-fno-rtti` according to the
summary of https://reviews.llvm.org/D103771.
rdar://
92039243
Differential Revision: https://reviews.llvm.org/D124312
Zakk Chen [Fri, 22 Apr 2022 03:01:54 +0000 (20:01 -0700)]
[RISCV][test] Rename prefix and remove unused text (NFC)
In D123418 we removed some RUN line (ex. RV32-ELEN16) but their
expected results still exist there.
Remove them and rename prefix for more descriptive.
Reviewed By: frasercrmck, asb, craig.topper
Differential Revision: https://reviews.llvm.org/D124179
Jez Ng [Sat, 23 Apr 2022 02:17:24 +0000 (22:17 -0400)]
[lld-macho] Remove stray debug printf
Accidentally committed as part of
b440c25742.
Vitaly Buka [Sat, 23 Apr 2022 02:10:08 +0000 (19:10 -0700)]
Revert "[nfc][asan][windows] Fix test after D124057"
The patch does not fix the bot.
This reverts commit
62b78a063ab1dc6c2df33c7a6582ecc62b31b519.
Vitaly Buka [Sat, 23 Apr 2022 02:09:52 +0000 (19:09 -0700)]
[asan] Don't enable detect_stack_use_after_return on Windows
It's not clear how ready it's there.
Vitaly Buka [Sat, 23 Apr 2022 02:08:56 +0000 (19:08 -0700)]
[test] Don't rely on default of detect_stack_use_after_return
Valery N Dmitriev [Sat, 23 Apr 2022 01:59:08 +0000 (18:59 -0700)]
[SLP][NFC] Outline lookahead heuristics into a separate helper class.
Minor refactoring to reduce size of functional change D124309:
look-ahead scoring routines pulled out of VLOperands and formed
new LookAheadHeuristics helper class.
Reviewed By: Alexey Bataev (ABataev), Vasileios Porpodas (vporpo)
Differential Revision: https://reviews.llvm.org/D124313
Dan Liew [Sat, 23 Apr 2022 01:44:15 +0000 (18:44 -0700)]
Revert "Revert "[compiler-rt][Darwin] Add arm64 to simulator platforms""
This reverts commit
3469cb14e2316a1e3cf64db5be3738379d9daa8d.
Relanding the patch on behalf of Byoungchan Lee.
The original patch (
8a3afc6da5bc94fcbac708156fc1cf4220e7d1f1) was
reverted because it appeared to be landed without the approval
of an Apple engineer.
After internal discussion we're happy for this to land and I've
formally approved the patch in phabricator
(https://reviews.llvm.org/D119174).
rdar://
92134140
Vincent Lee [Thu, 21 Apr 2022 02:57:10 +0000 (19:57 -0700)]
[lld-macho] Allow dead_strip to work with exported private extern symbols
It seems like we are overly asserting when running `-dead_strip` with
exported symbols. ld64 treats exported private extern symbols as a liveness
root. Loosen the assert to match ld64's behavior.
Reviewed By: #lld-macho, int3
Differential Revision: https://reviews.llvm.org/D124143
Volodymyr Sapsai [Sat, 23 Apr 2022 00:59:17 +0000 (17:59 -0700)]
[fixup] Handle enum constant `Lang_OBJC` introduced in
4604db94.
Ben Barham [Fri, 22 Apr 2022 18:36:00 +0000 (11:36 -0700)]
[Index] Remove reference to `UnresolvedUsingIfExists`
Assuming `ns::foo` doesn't exist, given:
```
using ns::foo __attribute__((using_if_exists));
```
The AST will look something like:
UsingDecl
UsingShadowDecl
UnresolvedUsingIfExistsDecl
Thus we end up adding a reference to `UnresolvedUsingIfExistsDecl` when
processing `UsingDecl`, but never add the decl itself. In this case the
decl is really the `UsingDecl` anyway though (which we do output), so it
makes more sense to just remove the extra reference.
Differential Revision: https://reviews.llvm.org/D124288
Vitaly Buka [Sat, 23 Apr 2022 00:16:11 +0000 (17:16 -0700)]
[nfc][asan][android] Fix test after D124057
Vitaly Buka [Sat, 23 Apr 2022 00:09:47 +0000 (17:09 -0700)]
[nfc][asan][windows] Fix test after D124057
Dan Liew [Fri, 22 Apr 2022 23:50:35 +0000 (16:50 -0700)]
Revert "[compiler-rt][Darwin] Add arm64 to simulator platforms"
This reverts commit
8a3afc6da5bc94fcbac708156fc1cf4220e7d1f1.
The commit being was landed without review from any Apple engineers
which is problematic because the patch only affects Apple platforms.
rdar://
92134140