Marek Kurdej [Fri, 28 Jan 2022 10:21:21 +0000 (11:21 +0100)]
[clang-format] Remove useless npos parameter from substr. NFC.
Martin Storsjö [Fri, 28 Jan 2022 10:18:45 +0000 (12:18 +0200)]
[ADT] Remove unused variables in Triple.h, fix build warnings with GCC. NFC.
Pierre Gousseau [Fri, 28 Jan 2022 09:50:41 +0000 (09:50 +0000)]
[tblgen] Disable lsan weak hook when building with msvc
This change is to fix a link time error when building llvm with msvc.
MSVC's implementation does not support weak hook or lsan so this change
disables lsan's weak hook definition.
Only GCC supports LSan.
Tested with visual studio 2019 v16.9.6
Reviewed By: aaron.ballman, rnk
Differential Revision: https://reviews.llvm.org/D118162
Amilendra Kodithuwakku [Fri, 28 Jan 2022 09:58:08 +0000 (09:58 +0000)]
[clang][ARM] Emit warnings when PACBTI-M is used with unsupported architectures
Branch protection in M-class is supported by
- Armv8.1-M.Main
- Armv8-M.Main
- Armv7-M
Attempting to enable this for other architectures, either by
command-line (e.g -mbranch-protection=bti) or by target attribute
in source code (e.g. __attribute__((target("branch-protection=..."))) )
will generate a warning.
In both cases function attributes related to branch protection will not
be emitted. Regardless of the warning, module level attributes related to
branch protection will be emitted when it is enabled via the command-line.
The following people also contributed to this patch:
- Victor Campos
Reviewed By: chill
Differential Revision: https://reviews.llvm.org/D115501
Rainer Orth [Fri, 28 Jan 2022 09:44:22 +0000 (10:44 +0100)]
[Sparc] Implement BFD_RELOC_NONE
`instrprof-icall-promo.test` `FAIL`s on Solaris/sparcv9:
Profile-sparc :: instrprof-icall-promo.test
Profile-sparcv9 :: instrprof-icall-promo.test
when compiling `compiler-rt/test/profile/Inputs/instrprof-icall-promo_2.cpp` with
fatal error: error in backend: Relocation for CG Profile could not be created: unknown relocation name
This happens because the Sparc backend doesn't implement `BFD_RELOC_NONE`.
This patch fixes that, following what X86 does.
Tested on `sparcv9-sun-solaris2.11`.
Differential Revision: https://reviews.llvm.org/D118136
Pavel Labath [Thu, 27 Jan 2022 14:10:29 +0000 (15:10 +0100)]
[lldb] Convert DWARF log to the new API
This also deletes some dead log statements (log initialization commented
out).
Nikita Popov [Fri, 28 Jan 2022 09:36:12 +0000 (10:36 +0100)]
[InlineFunction] Use phis() iterator (NFC)
Florian Hahn [Fri, 28 Jan 2022 09:34:02 +0000 (09:34 +0000)]
[VPlan] Record whether scalar IVs are need in induction recipe. (NFC)
This explicitly records whether a scalar IV is needed in the
VPWidenIntOrFpInductionRecipe, to remove a dependence on the cost-model
during its ::execute.
It will also be used in D116123 to determine if a vector phi will be
generated.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D118167
Martin Storsjö [Sun, 9 Jan 2022 22:58:44 +0000 (22:58 +0000)]
[libcxx] [test] Fix testcases that fail on systems with 16 bit wchar_t
Don't decode a UTF-8 character that is out of range for a 16 bit
`wchar_t`.
Differential Revision: https://reviews.llvm.org/D118191
Martin Storsjö [Tue, 11 Jan 2022 09:23:39 +0000 (09:23 +0000)]
[libcxx] Allow using thread safety annotations in MinGW mode
These were omitted in all Windows configurations, but it turns out
that they work just fine in MinGW mode.
This allows converting a couple cases of "XFAIL: LIBCXX-WINDOWS-FIXME"
into "XFAIL: msvc" as the bug is specific to MSVC mode (clang-cl).
Differential Revision: https://reviews.llvm.org/D118192
Martin Storsjö [Thu, 27 Jan 2022 19:56:33 +0000 (21:56 +0200)]
[MC] Remove a stray space after tab for COFF .def directives
This extra stray space after tab can be traced back to when printing
of this directive was added originally in
4f01b783a3ca5b2544fe1b1677b5bcf6d91c6d2c. The same commit added
inconsistent printing of space after the ELF .type directive too,
which was fixed later in
77fe07a93aeb8feaf39b7d48ad8fc1e6c9e4c78e.
(This is kind of NFC, but it does alter the output, so it's not
strictly non-functional in that sense.)
Differential Revision: https://reviews.llvm.org/D118401
Michał Górny [Fri, 28 Jan 2022 08:18:14 +0000 (09:18 +0100)]
Revert "[lldb] [gdb-remote] Support getting siginfo via API"
This reverts commit
1a8f60f5f5b8638a3e8e7fb31ba7ae9e17a7ff2d.
The API requires further work.
David Spickett [Thu, 27 Jan 2022 13:27:58 +0000 (13:27 +0000)]
[lldb][ARM/AArch64] Update dissembler to v9.3-a
This means sve2 is enabled by default and the v8.8 mops (memcpy
and memset acceleration instructions) and HBC (hinted conditional
branch) extensions can be disassembled.
v9.3-a is equivalent to v8.8-a except that in v9.0-a sve2 was
enabled by default so v9.3-a includes that too.
MTE remains an optional extension, only enabled for specific CPUs.
Reviewed By: omjavaid
Differential Revision: https://reviews.llvm.org/D118358
Nikita Popov [Fri, 28 Jan 2022 08:41:17 +0000 (09:41 +0100)]
[MLIR] Remove some pointer element type accesses
Use the MLIR pointer element type, rather than the LLVM pointer
element type.
Alexander Shaposhnikov [Fri, 28 Jan 2022 08:36:38 +0000 (08:36 +0000)]
[lld][ELF] Cleanup %t directory in tests, NFC
Nikita Popov [Thu, 27 Jan 2022 13:44:19 +0000 (14:44 +0100)]
[OpenMPIRBuilder] Store element type in AtomicOpValue
With opaque pointers, we can no longer derive this from the pointer
type, so we need to explicitly provide the element type the atomic
operation should work with.
Differential Revision: https://reviews.llvm.org/D118359
Nikita Popov [Thu, 27 Jan 2022 13:21:21 +0000 (14:21 +0100)]
[ARM] Don't look through pointer types in canTailPredicateLoop()
Inspecting the pointer element type here is incompatible with
opaque pointers, and doesn't seem necessary to me. I think the
intention might have been to check the type of load/store pointer
arguments, but I believe those should get checked through their
return type or value operand anyway. I don't get any test failures
if I simply drop this.
Differential Revision: https://reviews.llvm.org/D118353
Dominic Chen [Fri, 28 Jan 2022 00:40:26 +0000 (16:40 -0800)]
[libc] Fix 64-bit Apple ARM support and header includes
Summary:
Reviewers: sivachandra
Subscribers:
Differential Revision: https://reviews.llvm.org/D114236
Chuanqi Xu [Fri, 28 Jan 2022 07:22:04 +0000 (15:22 +0800)]
[NFC] Add tests for ODR checking of default template argument
Adrian Kuegel [Fri, 28 Jan 2022 07:20:24 +0000 (08:20 +0100)]
[mlir][Bazel][cmake] Add missing dependency.
After
2c7b0685e179 this dependency is needed.
Christian Sigg [Thu, 27 Jan 2022 21:33:05 +0000 (22:33 +0100)]
[NVPTX] Remove fmin/fmax.NaN.f64 again
Added in https://reviews.llvm.org/D117204, but it does not exist.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D118398
David Tenty [Thu, 27 Jan 2022 16:09:27 +0000 (10:09 -0600)]
[LLVM][AIX] Prefer a 32-bit default target triple on AIX
If the user doesn't specify a default target triple, the LLVM CMake usually defaults us into the host triple. This is a problem when building Clang/LLVM on 64-bit AIX (i.e. powerpc64-ibm-aix), as the host toolchain (e.g. ar, ld, nm, dump) all expect the compiler to generate 32-bit objects by default (which both GCC and XL on the platform do) and will hard error if passed a 64-bit object without an explicit option or environment setting. This breaks downstream consumers, such as builds generated with build tools like CMake, which when they invoke clang, etc. without explicit bitmode flags also expect 32-bit mode.
This patch changes the default target selection when the host is powerpc64-ibm-aix to prefer powerpc-ibm-aix to avoid these issues. We don't update the runtimes/CMakeList.txt since the default is less meaningful as we assume runtimes will need to build for both targets anyways.
Differential Revision: https://reviews.llvm.org/D118377
Chuanqi Xu [Fri, 28 Jan 2022 05:56:08 +0000 (13:56 +0800)]
[NFC] Mark the parameter const for isSame* methods in ASTContext
Craig Topper [Fri, 28 Jan 2022 05:19:13 +0000 (21:19 -0800)]
[RISCV] Add Zbkb RUN lines to bswap-bitreverse.ll. NFC
Vitaly Buka [Fri, 28 Jan 2022 05:16:02 +0000 (21:16 -0800)]
Revert "clang-format: [JS] sort import aliases."
Triggers MSAN report.
This reverts commit
c6d5efb5d98093c4bd7578b2ea52c9032d20dea3.
Craig Topper [Fri, 28 Jan 2022 04:55:27 +0000 (20:55 -0800)]
[RISCV] Split bswap-bitreverse-ctlz-cttz-ctpop.ll into two files bswap/bitreverse and ctlz/cttz/ctpop. NFC
Add Zbkb command lines to the bswap/bitreverse test.
Max Kazantsev [Fri, 28 Jan 2022 05:10:55 +0000 (12:10 +0700)]
[Test] One more test for 'ne' and-reduce pattern
Heejin Ahn [Thu, 27 Jan 2022 01:25:33 +0000 (17:25 -0800)]
[WebAssembly] Nullify unnecessary setjmp invokes
This is similar to D116619, but now it handles `invoke`s. The reason we
didn't handle `invoke`s back then was we didn't support Wasm EH + Wasm
SjLj together, and the only case SjLj transformation will see `invoke`s
is when we are using Wasm EH. (In Emscripten EH, they would have been
transformed to `call`s to invoke wrappers.)
But after D117610 we support Wasm EH + Wasm SjLj together and we can
nullify `invoke`s to `setjmp` when there is no other longjmpable calls
within the function. Actually this is very unlikely to happen in
practice, because we treat destructors as longjmpable and also treat
`__cxa_end_catch` as longjmpable even if it is not.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D118408
Heejin Ahn [Thu, 27 Jan 2022 07:11:14 +0000 (23:11 -0800)]
[WebAssembly] Handle cleanuppad with no parent in Wasm SjLj
Wasm SjLj converts longjmpable calls into `invoke`s that unwind to
`%catch.longjmp.dispatch` BB, from where we check if the thrown
exception is a `longjmp`. But in case a call already has a `funclet`
attribute, i.e., it is within a catch scope, we have to unwind to its
unwind destination first to preserve the scoping structure. That will
eventually unwind to `%catch.longjmp.dispatch`, because all
`catchswitch` and `cleanupret` that unwind to caller are redirected to
`%catch.dispatch.longjmp` during Wasm SjLj transformation.
But the prevous code assumed `cleanuppad`'s parent pad was always an
instruction, and didn't handle when a `cleanuppad`'s parent is `none`.
This CL handles this case, and makes the `while` loop more intuitive by
removing `FromPad` condition and explicitly inserting `break`s.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D118407
Heejin Ahn [Wed, 26 Jan 2022 19:02:30 +0000 (11:02 -0800)]
[WebAssembly] Error out for setjmp within catch clause for Wasm SjLj
Wasm EH, used with either of Emscripten SjLj or Wasm SjLj, does not
allow `setjmp` calls to be placed within a `catch` clause, because we
don't support jumping into a `catch` block. Emscripten EH does not have
this restriction. But I think this restriction wouldn't prevent most of
use cases. This CL errors out with a clear messsage for this case.
Reviewed By: dschuff, kripken
Differential Revision: https://reviews.llvm.org/D118286
Heejin Ahn [Wed, 26 Jan 2022 05:41:43 +0000 (21:41 -0800)]
[WebAssembly] Don't copy noreturn attr to invokes
When we create an invoke wrapper call, if the original call instruction
has a `noreturn` attribute, we shouldn't copy it, because we expect
invoke wrapper calls to return. This generated incorrect `free` call
before an invoke wrapper call that calls `__cxa_throw`, because
`__cxa_throw` has `noreturn` attribute.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D118274
Heejin Ahn [Sat, 22 Jan 2022 06:22:03 +0000 (22:22 -0800)]
[WebAssembly] Treat __cxa_end_catch not longjmpable in Emscripten SjLj
In D117610 we treated `__cxa_end_catch` longjmpable even though it was
not to make unwind destination relationships correct. But we only need
to do this in Wasm SjLj, and doing this in Emscripten SjLj does not make
the code incorrect but add unnecessary invokes. This CL treats
`__cxa_end_catch` longjmpable only in Wasm SjLj.
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D117943
Max Kazantsev [Fri, 28 Jan 2022 04:47:05 +0000 (11:47 +0700)]
[Test] Add 'ne' tests for and-reduce pattern folding
Max Kazantsev [Fri, 28 Jan 2022 04:20:08 +0000 (11:20 +0700)]
[InstCombine] Fold and-reduce idiom
This patch introduces folding of and-reduce idiom and generates code
that is easier to read and which is lest costly in terms of icmp operations.
The folding is
```
icmp eq (bitcast(icmp ne (lhs, rhs)), 0)
```
into
```
icmp eq(bitcast(lhs), bitcast(rhs))
```
See PR53419.
Differential Revision: https://reviews.llvm.org/D118317
Reviewed By: lebedev.ri, spatel
Jonas Devlieghere [Fri, 28 Jan 2022 03:26:17 +0000 (19:26 -0800)]
[lldb] Remove reproducers documentation
Frederik Gossen [Fri, 28 Jan 2022 03:32:02 +0000 (04:32 +0100)]
Fix tensor.extract for complex elements
Fangrui Song [Fri, 28 Jan 2022 03:05:10 +0000 (19:05 -0800)]
[Driver] Update clang -B help message
* After
3452a0d8c17f7166f479706b293caf6ac76ffd90 (2020-07), $prefix/$triple-$file is not searched.
* Unlike GCC, -B is not used for include paths. Seems nobody needs this behavior because there are more targeted options like --sysroot/-isystem
Chenbing.Zheng [Fri, 28 Jan 2022 02:18:33 +0000 (02:18 +0000)]
[RISCV] Add support for matching vwmulsu from fixed vectors
According to riscv-v-spec-1.0, widening signed(vs2)-unsigned integer multiply
vwmulsu.vv vd, vs2, vs1, vm # vector-vector
vwmulsu.vx vd, vs2, rs1, vm # vector-scalar
It is worth noting that signed op is only for vs2.
For vwmulsu.vv, we can swap two ops, and don't care which is sign extension,
but for vwmulsu.vx signExt can not be a vector extended from scalar (rs1).
I specifically added two functions ending with _swap in the test case.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D118215
Florian Mayer [Fri, 28 Jan 2022 01:42:37 +0000 (17:42 -0800)]
[NFC] remove unnecessary references.
Ron Lieberman [Fri, 28 Jan 2022 01:41:10 +0000 (01:41 +0000)]
Revert "[OpenMP] Ensure broken assumptions print once, not thousands of times."
This reverts commit
27c799ecc9e9e3bfb8232c93fd500f45ca0cb345.
Ellis Hoag [Thu, 27 Jan 2022 19:22:43 +0000 (11:22 -0800)]
[InstrProf] Add single byte coverage mode
Use the llvm flag `-pgo-function-entry-coverage` to create single byte "counters" to track functions coverage. This mode has significantly less size overhead in both code and data because
* We mark a function as "covered" with a store instead of an increment which generally requires fewer assembly instructions
* We use a single byte per function rather than 8 bytes per block
The trade off of course is that this mode only tells you if a function has been covered. This is useful, for example, to detect dead code.
When combined with debug info correlation [0] we are able to create an instrumented Clang binary that is only 150M (the vanilla Clang binary is 143M). That is an overhead of 7M (4.9%) compared to the default instrumentation (without value profiling) which has an overhead of 31M (21.7%).
[0] https://groups.google.com/g/llvm-dev/c/r03Z6JoN7d4
Reviewed By: kyulee
Differential Revision: https://reviews.llvm.org/D116180
Nico Weber [Fri, 28 Jan 2022 01:34:38 +0000 (20:34 -0500)]
[gn build] fix mac build after
0c425b43b952f4
Sam Clegg [Thu, 27 Jan 2022 23:47:14 +0000 (15:47 -0800)]
[lld][WebAssembly] Handle TLS symbols in older object file
In older versions of llvm (e.g. llvm 13), symbols were not individually
flagged as TLS. In this case, the indent was to implicitly mark any
symbols defined in TLS segments as TLS. However, we were not performing
this implicit conversion if the segment was explicitly marked as TLS
As it happens, llvm 13 was branched between the addition of the segment
flag and the addition of the symbol flag. See:
- segment flag added: https://reviews.llvm.org/D102202
- symbol flag added: https://reviews.llvm.org/D109426
Testing this is tricky because the assembler will imply the TLS status
of the symbol based on the segment its declared in, so we are forced to
use a yaml file here.
Fixes: https://github.com/emscripten-core/emscripten/issues/15891
Differential Revision: https://reviews.llvm.org/D118414
Aart Bik [Fri, 28 Jan 2022 00:08:54 +0000 (16:08 -0800)]
[mlir][sparse][pytaco] add PyTACO SpMM example
Also contains a few TODOs on future enhancements
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D118418
Ruslan Arutyunyan [Fri, 28 Jan 2022 00:54:27 +0000 (03:54 +0300)]
[libc++][pstl] Implement tag dispatching mechanism for Parallel STL
Implement the mechanism that simplifies the execution policy/iterator
category dispatching and allows to implement customizations for
the parallel algorithms with adding custom tags
Reviewed By: rodgert, MikeDvorskiy
Differential Revision: https://reviews.llvm.org/D104492
Nico Weber [Fri, 28 Jan 2022 01:09:04 +0000 (20:09 -0500)]
[gn build] slighly reformat files to make sync script work
Vitaly Buka [Sat, 15 Jan 2022 07:45:36 +0000 (23:45 -0800)]
[msan] Copy origin of byval arguments
Depends on D117278
Reviewed By: kda, eugenis
Differential Revision: https://reviews.llvm.org/D117285
Arthur Eubanks [Wed, 19 Jan 2022 23:40:58 +0000 (15:40 -0800)]
[gn build] Add support for check-asan
With these changes, check-asan passes on Linux and Windows.
There are a couple libraries we need to add support for, asan_static, asan_preinit, and the shared library version of asan proper.
Since we need to build the asan proper sources twice, once with -DASAN_DYNAMIC and once without, those sources are no longer in a source_set.
Much of the check-asan target is taken from the existing check-hwasan target.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D118307
Joseph Huber [Thu, 27 Jan 2022 18:59:38 +0000 (13:59 -0500)]
[OpenMP] Ensure broken assumptions print once, not thousands of times.
If we have a broken assumption we want to print a message to the user.
If the assumption is broken by many threads in many teams this can
become a problem. To avoid it we use a hash that tracks if a broken
assumption has (likely) been printed and avoid printing it again. This
is not fool proof and has some caveats that might cause problems in
the future (see comment) but it should improve the situation
considerably for now.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D112156
Joseph Huber [Thu, 27 Jan 2022 20:50:18 +0000 (15:50 -0500)]
[OpenMP] Only generate runtime flags with host input
This patch changes the code generation of runtime flags to only occur if
a host bitcode file was passed in. This is a cheap way to determine if
we are compiling the OpenMP device runtime itself or user code. This is
needed because the global flags we generate for the device runtime e.g.
__omp_rtl_debug_kind were being generated with default values when we
compiled the runtime library. This would then invalidate the ones we
want to be able to add in when the user defines it.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D118399
Mogball [Thu, 27 Jan 2022 23:15:34 +0000 (23:15 +0000)]
[mlir][scf] Update IfOp to have getInvocationBounds
This allows `scf.if` to be used by Control-Flow sink.
Depends on D115088
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D115089
LLVM GN Syncbot [Thu, 27 Jan 2022 23:10:54 +0000 (23:10 +0000)]
[gn build] Port
bf20a09790cb
Arthur O'Dwyer [Wed, 8 Sep 2021 20:48:50 +0000 (16:48 -0400)]
[libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback.
The tests for these are just copy-pasted from the tests for std::{strong,weak,partial}_order,
and then I added an extra clause in each (test_2()) to test the stuff that's not just the same
as std::*_order.
This also includes the fix for https://wg21.link/LWG3465 (which falls naturally out of the
"you must write it three times" style, but I've added test cases for it also).
There is an action item here to go back and give good diagnostics for SFINAE failures
in these CPOs. I've filed this as https://github.com/llvm/llvm-project/issues/53456 .
Differential Revision: https://reviews.llvm.org/D111514
Arthur Eubanks [Thu, 27 Jan 2022 22:43:44 +0000 (14:43 -0800)]
[NFC][Clang][OpaquePtr] Move away from deprecated Address constructor in VisitArrayInitLoopExpr
With this we can bootstrap an `-O0 -g0` clang with `-mllvm -opaque-pointers`!
Arthur Eubanks [Thu, 27 Jan 2022 22:42:37 +0000 (14:42 -0800)]
[NFC][Clang][OpaquePtr] Move away from deprecated Address constructor in EmitCXXMemberDataPointerAddress()
Arthur O'Dwyer [Thu, 27 Jan 2022 22:36:08 +0000 (17:36 -0500)]
Revert "[clang] Don't typo-fix an expression in a SFINAE context."
This reverts commit
9be5f4d5afd9a1b6e88a268f6ea6eb282d77d9fe.
I'm not sure if this caused
https://lab.llvm.org/buildbot/#/builders/60/builds/6350
https://lab.llvm.org/buildbot/#/builders/119/builds/7433
but I'm acting as if it did.
Brian Cain [Thu, 27 Jan 2022 16:09:11 +0000 (08:09 -0800)]
Omit atomic_{,un}signed_lock_free if unsupported
On targets that have limited atomic support, e.g. ones that define
ATOMIC_*_LOCK_FREE to '1' ("sometimes lock free"), we would end up
referencing yet-undefined __libcpp_{,un}signed_lock_free.
This commit adds a guard to prevent these references for such
targets.
Differential Revision: https://reviews.llvm.org/D118391
Vladislav Khmelevsky [Thu, 27 Jan 2022 22:04:31 +0000 (01:04 +0300)]
[BOLT] Fix AARCH64 registers aliasing
The aarch64 platform has special registers like X0_X1_X2_X3_X4_X5_X6_X7.
Using the downwards propagation this register will become a super
register for all X0..X7 and its super registers which is not right. This
patch replaces the downwards propagation with caching all the aliases using MCRegAliasIterator.
Vladislav Khmelevsky,
Advanced Software Technology Lab, Huawei
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D117394
Sam James [Thu, 27 Jan 2022 22:17:45 +0000 (22:17 +0000)]
unwind: fix typo for __powerpc__
Fixes:
cd20e579df07517a4ddbf6eef58b96d04f6bd9a9
Signed-off-by: Sam James <sam@gentoo.org>
Arthur Eubanks [Thu, 27 Jan 2022 22:17:58 +0000 (14:17 -0800)]
[NFC][Clang][OpaquePtr] Move away from deprecated Address constructor in CreateTempAlloca()
Specify the Address element type, which is the bitcast destination type.
(the whole bitcast won't be needed after opaque pointers)
Jonas Paulsson [Fri, 21 Jan 2022 21:22:13 +0000 (22:22 +0100)]
[SystemZ] Don't shrink 64-bit FP constants.
Return false from ShouldShrinkFPConstant(), so that these constants are stored
in their full size on the constant pool, even if they could have been shrunk
and used with an extending load.
This is better since LD is faster than LDE, and it also enables reg/mem opcodes.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D117927
Shubham Sandeep Rastogi [Thu, 27 Jan 2022 22:08:42 +0000 (14:08 -0800)]
Fixed typos in TestLldbGdbServer.py
Fixed more typos
Jonas Paulsson [Fri, 21 Jan 2022 21:03:40 +0000 (22:03 +0100)]
[SystemZ] Implement orderFrameObjects().
By reordering the objects on the stack frame after looking at the users, a
better utilization of displacement operands will result. This means less
needed Load Address instructions for the accessing of these objects.
This is important for very large functions where otherwise small changes
could cause a lot more/less accesses go out of range.
Note: this is not yet enabled for SystemZXPLINKFrameLowering, but should be.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D115690
Louis Dionne [Wed, 26 Jan 2022 20:23:04 +0000 (15:23 -0500)]
[libc++] Add documentation about the libc++ review group
This explains stuff that most contributors already know, but it's always
good to write down explicitly.
Differential Revision: https://reviews.llvm.org/D118278
Sam James [Thu, 27 Jan 2022 21:48:38 +0000 (21:48 +0000)]
[unwind] fix build with GCC on PPC32
Originally reported downstream in Gentoo: https://bugs.gentoo.org/832140
```
/var/tmp/portage/sys-libs/llvm-libunwind-13.0.0/work/libunwind/src/libunwind.cpp:77:3: error: #error Architecture not supported
77 | # error Architecture not supported
| ^~~~~
[...]
/var/tmp/portage/sys-libs/llvm-libunwind-13.0.0/work/libunwind/src/libunwind.cpp: In function ‘int __unw_init_local(unw_cursor_t*, unw_context_t*)’:
/var/tmp/portage/sys-libs/llvm-libunwind-13.0.0/work/libunwind/src/libunwind.cpp:80:57: error: ‘REGISTER_KIND’ was not declared in this scope
80 | new (reinterpret_cast<UnwindCursor<LocalAddressSpace, REGISTER_KIND> *>(cursor))
| ^~~~~~~~~~~~~
[...]
```
PPC is actually a supported architecture, but GCC (tested with 11.2.0)
on powerpc32 seems to only define: `__PPC__, _ARCH_PPC, __PPC,
__powerpc` and //not// `__ppc__`.
This instead uses `__powerpc__` which should be around on PPC32
and PPC64 (but we check it after PPC64, so it's fine).
Signed-off-by: Sam James <sam@gentoo.org>
Differential Revision: https://reviews.llvm.org/D118320
Shubham Sandeep Rastogi [Thu, 27 Jan 2022 17:45:25 +0000 (09:45 -0800)]
Disable TestLldbGdbServer on Dwarf2 and clang versions below 14
We have been noticing issues with the lldb bots on builds using versions below clang 14 and dwarf 2, so to make sure we can get clean builds for a while, we are disabling the tests for those versions
Differential Revision: https://reviews.llvm.org/D118395
Arthur Eubanks [Thu, 27 Jan 2022 21:59:02 +0000 (13:59 -0800)]
[NFC][Clang][OpaquePtr] Move away from deprecated Address constructor in EmitNewArrayInitializer()
Specify the Address element type, which is the same for all pointers in the array.
Saurabh Jha [Thu, 27 Jan 2022 21:35:34 +0000 (21:35 +0000)]
[mlir] Set up boilerplate build for MLIR benchmarks
This is is the start of the MLIR benchmarks. It sets up a command
line tool along with conventions to define and run benchmarks
using mlir's python bindings.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D115174
Shubham Sandeep Rastogi [Thu, 27 Jan 2022 21:35:46 +0000 (13:35 -0800)]
Revert "Disable TestLldbGdbServer on Dwarf2 and clang versions below 14"
This reverts commit
cd317637708decd8faf34dd9773a8b2dec424010.
Thomas Raoux [Thu, 27 Jan 2022 16:19:47 +0000 (08:19 -0800)]
[VectorToGPU] Fix horizontal stride calculation for N-D memref
Fix a bug in how we calculate the stride of mma load/store ops for N-D
memrefs
Differential Revision: https://reviews.llvm.org/D118378
Stephen Neuendorffer [Tue, 25 Jan 2022 15:53:48 +0000 (07:53 -0800)]
[MLIR] Workaround for python detection problems.
Although cmake should be platform-independent, we've observed
that some aspects of Python detection don't work on all platforms,
even with recent versions of cmake. This appears to be due to bugs
in the python detection logic, especially when the NumPy component
is required and not located within the python installation.
As a workaround, this patch first searches for "Development" before
searching for "Development.Module", which seems to workaround the
issue.
Differential Revision: https://reviews.llvm.org/D118148
Shubham Sandeep Rastogi [Thu, 27 Jan 2022 17:45:25 +0000 (09:45 -0800)]
Disable TestLldbGdbServer on Dwarf2 and clang versions below 14
We have been noticing issues with the lldb bots on builds using versions below clang 14 and dwarf 2, so to make sure we can get clean builds for a while, we are disabling the tests for those versions
Differential Revision: https://reviews.llvm.org/D118395
David Tenty [Thu, 27 Jan 2022 03:14:19 +0000 (21:14 -0600)]
[compiler-rt][profile][AIX] pass extra link opts for test
This is a follow up to D118101, that added bexpfull to the test on instrprof-get-filename-merge-mode.c AIX, in order to get the
necessary symbols exported. But unfortunately the extra dependent symbols this exports actually cause segfaults, which is why
this isn't really recommended in the first place, so just use an actual export list.
Differential Revision: https://reviews.llvm.org/D118310
Haojian Wu [Thu, 27 Jan 2022 21:19:09 +0000 (22:19 +0100)]
[clangd] Fix a typo , => ; in hovertest.
I somehow missed it.
Siva Chandra Reddy [Thu, 27 Jan 2022 21:06:14 +0000 (21:06 +0000)]
[libc] Revert "Refactor sqrt implementations and add tests for generic sqrt implementations."
This reverts commit
21c4c82c2026bac1f53be54923c0663d41d0a0aa.
Siva Chandra Reddy [Thu, 27 Jan 2022 21:05:22 +0000 (21:05 +0000)]
[libc] Revert "Guard sqrt_80_bit_long_double.h header to not be included with aarch64."
This reverts commit
4a979c42564e622fdf283ae8d0b7a59ebe567533.
Snehasish Kumar [Tue, 7 Dec 2021 23:30:14 +0000 (15:30 -0800)]
[InstrProf][NFC] Refactor Profile kind into a bitset enum.
This change refactors the ProfileKind enum into a bitset enum to
represent the different attributes a profile can have. This change
simplifies the logic in the instrprof writer when multiple profiles are
merged together. In the future we plan on introducing a new memory
profile section which will extend the enum by one additional entry.
Without this change when accounting for memory profiles will have to be
maintained separately and will make the logic more complex.
Differential Revision: https://reviews.llvm.org/D115393
Johannes Doerfert [Thu, 27 Jan 2022 20:36:36 +0000 (15:36 -0500)]
[OpenMP][NFCI] Pipe the IdentTy object through more new RT functions
IdentTy objects are useful for debugging and profiling so we want to
keep them around in more places, especially those that have a large
impact on performance, e.g., everything related to state.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D112494
Siva Chandra Reddy [Tue, 25 Jan 2022 21:08:37 +0000 (21:08 +0000)]
[libc] Add POSIX close, fsync, open, read and write functions.
They are implemented as simple syscall wrappers. The file creation
macros have been put in a header file as a temporary solution until we
have a cleaner approach to listing platform relevant macros.
Reviewed By: abrachet
Differential Revision: https://reviews.llvm.org/D118396
Haojian Wu [Thu, 20 Jan 2022 08:30:16 +0000 (09:30 +0100)]
[clangd] Enable hover on character literal.
In the initial hover expression patch (https://reviews.llvm.org/D72500), we
disabled all literals.
There is some value on running hover on character literals (e.g. see the
int value of the char).
Differential Revision: https://reviews.llvm.org/D117864
Haojian Wu [Thu, 27 Jan 2022 07:43:31 +0000 (08:43 +0100)]
[clangd] Fix a selection tree crash for unmatched-bracket code.
Fixes https://github.com/clangd/clangd/issues/999
Differential Revision: https://reviews.llvm.org/D118322
Craig Topper [Thu, 27 Jan 2022 20:12:45 +0000 (12:12 -0800)]
[RISCV] Use std::map::count != 0 instead of std::map::count == 1. NFC
Maps always return 0 or 1 for count. Comparing to 0 can create
simpler compiled code.
Someday we'll get to use std::map::contains.
Sri Hari Krishna Narayanan [Thu, 27 Jan 2022 20:15:25 +0000 (15:15 -0500)]
Runtime for Interop directive
This implements the runtime portion of the interop directive.
It expects the frontend and IRBuilder portions to be in place
for proper execution. It currently works only for GPUs
and has several TODOs that should be addressed going forward.
Reviewed By: RaviNarayanaswamy
Differential Revision: https://reviews.llvm.org/D106674
Alexander Yermolovich [Thu, 27 Jan 2022 20:03:01 +0000 (12:03 -0800)]
[BOLT][DWARF] Fix gdb index section
Since we now re-write .debug_info the DWARF CU Offsets can change.
Just like for .debug_aranges the GDB Index will need to be updated.
Reviewed By: Amir, maksfb
Differential Revision: https://reviews.llvm.org/D118273
Anton Korobeynikov [Thu, 27 Jan 2022 20:06:15 +0000 (23:06 +0300)]
Remove "awaiting-review" labels from closed issues.
Fixes #53451
Sri Hari Krishna Narayanan [Thu, 27 Jan 2022 19:53:00 +0000 (14:53 -0500)]
OMPIRBuilder for Interop directive
Implements the OMPIRBuilder portion for the
Interop directive.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D105876
Craig Topper [Thu, 27 Jan 2022 19:47:53 +0000 (11:47 -0800)]
[RISCV] Prefer vmslt.vx v0, v8, zero over vmsle.vi v0, v8, -1.
At least when starting from a vmslt.vx intrinsic or ISD::SETLT. We
don't handle the case where the user used vmsle.vx intrinsic with -1.
natashaknk [Thu, 27 Jan 2022 19:25:26 +0000 (11:25 -0800)]
[tosa][mlir] Add dynamic shape support for remaining ops
Added support for concat, tile, pad, argmax and table ops
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D118397
Arthur O'Dwyer [Tue, 25 Jan 2022 17:12:47 +0000 (12:12 -0500)]
[libc++] [ranges] ref_view and empty_view are borrowed ranges. Normalize borrowed_range tests.
Differential Revision: https://reviews.llvm.org/D118164
Arthur O'Dwyer [Wed, 19 Jan 2022 12:29:05 +0000 (07:29 -0500)]
[libc++] Fix a typo in reverse_iterator::operator=.
We should be checking `is_assignable<It&, ...>`.
`is_assignable<It, ...>` checks for an rvalue left-hand side, which
is basically never assignable-to.
Found while looking into https://cplusplus.github.io/LWG/issue3435 .
Differential Revision: https://reviews.llvm.org/D117660
Arthur O'Dwyer [Tue, 18 Jan 2022 12:25:17 +0000 (07:25 -0500)]
[clang] Don't typo-fix an expression in a SFINAE context.
If this is a SFINAE context, then continuing to look up names
(in particular, to treat a non-function as a function, and then
do ADL) might too-eagerly complete a type that it's not safe to
complete right now. We should just say "okay, that's a substitution
failure" and not do any more work than absolutely required.
Fixes #52970.
Differential Revision: https://reviews.llvm.org/D117603
David Green [Thu, 27 Jan 2022 19:19:46 +0000 (19:19 +0000)]
[ARM][AArch64] Introduce qrdmlah and qrdmlsh intrinsics
Since it's introduction, the qrdmlah has been represented as a qrdmulh
and a sadd_sat. This doesn't produce the same result for all input
values though. This patch fixes that by introducing a qrdmlah (and
qrdmlsh) intrinsic specifically for the vqrdmlah and sqrdmlah
instructions. The old test cases will now produce a qrdmulh and sqadd,
as expected.
Fixes #53120 and #50905 and #51761.
Differential Revision: https://reviews.llvm.org/D117592
Malhar Jajoo [Thu, 27 Jan 2022 19:07:47 +0000 (19:07 +0000)]
Trivial update for debug location in LIT test.
This just updates debug location of a loop in a LIT test to point
to the correct source line.
David Green [Thu, 27 Jan 2022 18:43:06 +0000 (18:43 +0000)]
[ARM][AArch64] Cleanup and autogenerate v8.1a vqdrmlah tests. NFC
Florian Hahn [Thu, 27 Jan 2022 18:41:33 +0000 (18:41 +0000)]
[ConstraintElimination] Use constraints with 0 or 1 coefficients.
isConditionImplied is able to correctly handle 0 or 1 coefficients, so
let it handle those cases, rather than skipping them.
Damian Rouson [Thu, 9 Dec 2021 22:23:20 +0000 (14:23 -0800)]
[flang] Expand the semantics test for co_sum
Increase the coverage of standard-conforming and non-conforming
co_sum calls.
Reviewed By: ktras
Tue Ly [Thu, 27 Jan 2022 17:12:38 +0000 (12:12 -0500)]
[libc] Guard sqrt_80_bit_long_double.h header to not be included with aarch64.
Guard sqrt_80_bit_long_double.h header to not be included with aarch64.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D118389
Simon Pilgrim [Thu, 27 Jan 2022 17:58:29 +0000 (17:58 +0000)]
[X86] Fold MOVMSK(CONCAT(X,Y)) -> MOVMSK(AND/OR(X,Y)) for all_of/any_of patterns
Makes it easier for later folds and avoids unnecessary 256-bit ops (especially on AVX1-only targets where we miss a lot of integer instructions)
Bjorn Pettersson [Wed, 26 Jan 2022 17:15:53 +0000 (18:15 +0100)]
[test] Use -passes syntax in SROA test cases
Another step to move away from the legacy PM syntax when specifying
passes in opt.
Differential Revision: https://reviews.llvm.org/D118339
Bjorn Pettersson [Thu, 27 Jan 2022 15:09:24 +0000 (16:09 +0100)]
[NewPM] Add debugify and check-debugify to the PassRegistry
Adding -debugify and -check-debugify in the PassRegistry will make
sure the passes are listed properly by -print-pipeline-passes as
well as -print-passes.
It also allows removal of the custom pipeline parsing callback that
has been used in the NewPMDriver.
Differential Revision: https://reviews.llvm.org/D118369