Alex Richardson [Thu, 6 Aug 2020 07:25:10 +0000 (08:25 +0100)]
[update_cc_test_checks.py] Add test for D84511
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D85115
Aleksandr Platonov [Thu, 6 Aug 2020 07:30:43 +0000 (10:30 +0300)]
[clang-tidy] Fix bugprone-bad-signal-to-kill-thread crash when `SIGTERM` is not a literal.
If `SIGTERM` is not a literal (e.g. `#define SIGTERM ((unsigned)15)`) bugprone-bad-signal-to-kill-thread check crashes.
Stack dump:
```
#0 0x000000000217d15a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/llvm-project/build/bin/clang-tidy+0x217d15a)
#1 0x000000000217b17c llvm::sys::RunSignalHandlers() (/llvm-project/build/bin/clang-tidy+0x217b17c)
#2 0x000000000217b2e3 SignalHandler(int) (/llvm-project/build/bin/clang-tidy+0x217b2e3)
#3 0x00007f6a7efb1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#4 0x000000000212ac9b llvm::StringRef::getAsInteger(unsigned int, llvm::APInt&) const (/llvm-project/build/bin/clang-tidy+0x212ac9b)
#5 0x0000000000593501 clang::tidy::bugprone::BadSignalToKillThreadCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/llvm-project/build/bin/clang-tidy+0x593501)
```
Reviewed By: hokein
Differential Revision: https://reviews.llvm.org/D85398
Aleksandr Platonov [Thu, 6 Aug 2020 07:27:38 +0000 (10:27 +0300)]
[clang-tidy] Fix bugprone-bad-signal-to-kill-thread crash when `SIGTERM` was undefined after definition.
`PP->getMacroInfo()` returns nullptr for undefined macro, which leads to null-dereference at `MI->tockens().back()`.
Stack dump:
```
#0 0x000000000217d15a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/llvm-project/build/bin/clang-tidy+0x217d15a)
#1 0x000000000217b17c llvm::sys::RunSignalHandlers() (/llvm-project/build/bin/clang-tidy+0x217b17c)
#2 0x000000000217b2e3 SignalHandler(int) (/llvm-project/build/bin/clang-tidy+0x217b2e3)
#3 0x00007f39be5b1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#4 0x0000000000593532 clang::tidy::bugprone::BadSignalToKillThreadCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/llvm-project/build/bin/clang-tidy+0x593532)
```
Reviewed By: hokein
Differential Revision: https://reviews.llvm.org/D85401
Craig Topper [Thu, 6 Aug 2020 07:13:40 +0000 (00:13 -0700)]
[X86] Rename X86::getImpliedFeatures to X86::updateImpliedFeatures and pass clang's StringMap directly to it.
No point in building a vector of StringRefs for clang to apply to the
StringMap. Just pass the StringMap and modify it directly.
Luboš Luňák [Wed, 5 Aug 2020 08:57:02 +0000 (10:57 +0200)]
[lldb][gui] use names for color pairs, instead of magic numbers
Differential Revision: https://reviews.llvm.org/D85286
Luboš Luňák [Tue, 4 Aug 2020 09:58:51 +0000 (11:58 +0200)]
[lldb][gui] use syntax highlighting also in gui mode
Use the same functionality as the non-gui mode, the colors just
need translating to curses colors.
Differential Revision: https://reviews.llvm.org/D85145
Luboš Luňák [Mon, 3 Aug 2020 11:44:47 +0000 (13:44 +0200)]
[lldb][gui] truncate long lines/names if needed
Without this, sources with long lines or variable names may overwrite
panel frames, or even overrun to the following line. There's currently
no way to scroll left/right in the views, so that should be added
to handle these cases.
This commit includes fixing constness of some Window functions,
and also makes PutCStringTruncated() consistent with the added
printf-like variant to take the padding as the first argument (can't
add it after the format to the printf-like function).
Differential Revision: https://reviews.llvm.org/D85123
Martin Storsjö [Tue, 4 Aug 2020 11:41:48 +0000 (14:41 +0300)]
[AArch64] [Windows] Error out on unsupported symbol locations
These might occur in seemingly generic assembly. Previously when
targeting COFF, they were silently ignored, which certainly won't
give the right result. Instead clearly error out, to make it clear
that the assembly needs to be adjusted for this target.
Also change a preexisting report_fatal_error into a proper error
message, pointing out the offending source instruction. This isn't
strictly an internal error, as it can be triggered by user input.
Differential Revision: https://reviews.llvm.org/D85242
Martin Storsjö [Tue, 4 Aug 2020 11:26:16 +0000 (14:26 +0300)]
[ARM, AArch64] Fix a comment typo. NFC.
Chuanqi Xu [Thu, 6 Aug 2020 06:21:55 +0000 (14:21 +0800)]
[Coroutines] Use to collect lifetime marker of in CoroFrame Differential Revision: https://reviews.llvm.org/D85279
Craig Topper [Thu, 6 Aug 2020 05:12:41 +0000 (22:12 -0700)]
[X86] Remove incomplete custom handling of i128 sdivrem/udivrem on Windows.
We need to have special handling of i128 div/rem on Windows due
to a weird calling convention needed for the libcall. There was
also some code that made it look like we do the same for sdivrem/udiv,
but the code didn't account for multiple return values of those
functions so couldn't possibly work. I think this code never
triggers because we don't have libcall names defined for those
functions by default so DAGCombine never creates DIVREM nodes.
Douglas Yung [Thu, 6 Aug 2020 05:54:59 +0000 (22:54 -0700)]
Fix typo in test. Thanks to Andrew Ng for spotting this!
Jonas Devlieghere [Thu, 6 Aug 2020 05:53:19 +0000 (22:53 -0700)]
[lldb] Remove pointless assign to found_suffix (NFC)
Lang Hames [Thu, 6 Aug 2020 04:07:45 +0000 (21:07 -0700)]
[JITLink][MachO][AArch64] More PAGEOFF12 relocation fixes.
Correctly sign extend the addend, and fix implicit shift operand decoding
(it incorrectly returned 0 for some cases), and check that the initial
encoded immediate is 0.
Jonas Devlieghere [Thu, 6 Aug 2020 03:49:29 +0000 (20:49 -0700)]
[lldb] Fix bug in skipIfRosetta decorator
Currently, the skipIfRosetta decorator will skip tests with the message
"not on macOS" on all platforms that are not `darwin` or `macosx`.
Instead, it should only check the platform and architecture when running
on these platforms.
This triggers for example when running the test suite on device.
Differential revision: https://reviews.llvm.org/D85388
Petr Hosek [Wed, 5 Aug 2020 21:03:12 +0000 (14:03 -0700)]
[CMake] Print the autodetected host linker version
There's no easy way to find out what the autodetected version is, but
sometimes it may be useful to confirm that the right version is being
used. Print it as CMake status message.
Differential Revision: https://reviews.llvm.org/D85362
Jim Ingham [Thu, 6 Aug 2020 02:12:15 +0000 (19:12 -0700)]
GetPath() returns a std::string temporary. You can't reference just the c_str.
Found by the static analyzer.
Jim Ingham [Thu, 6 Aug 2020 02:01:17 +0000 (19:01 -0700)]
"|" used when "||" was meant in SBTarget::FindFunctions
Matt Arsenault [Wed, 5 Aug 2020 23:26:07 +0000 (19:26 -0400)]
AMDGPU: Remove ATOMIC_PK_FADD
The f32 and v2f16 cases should be handled the same way.
Arthur Eubanks [Wed, 29 Jul 2020 23:43:57 +0000 (16:43 -0700)]
[NewPM][opt] Add more codegen passes
Reduces number of failures by 92.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D85381
Ruiling Song [Tue, 4 Aug 2020 01:54:36 +0000 (09:54 +0800)]
[AMDGPU] add buffer_atomic_swap for float
The functionality is used when calling imageAtomicExhange() on float
type imageBuffer in Graphics shaders.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D85187
Jonas Devlieghere [Thu, 6 Aug 2020 01:31:20 +0000 (18:31 -0700)]
[lldb] Make UBSan tests remote ready
Add missing call to registerSanitizerLibrariesWithTarget.
Tim Keith [Thu, 6 Aug 2020 01:03:40 +0000 (18:03 -0700)]
[flang] Fix compilation warning in check-directive-structure.h
Clang 9 gets the following warning after revision `D85104`.
```
../../flang/lib/Semantics/check-directive-structure.h:36:7: error: 'Fortran::semantics::DirectiveStructureChecker<llvm::omp::Directive, llvm::omp::Clause, Fortran::parser::OmpClause, 77>' has virtual functions but non-virtual destructor [-Werror,-Wnon-virtual-dtor]
```
The fix is the make the destructor virtual. Neither it nor the
constructor need to be public, so make them protected.
Differential Revision: https://reviews.llvm.org/D85383
Juneyoung Lee [Fri, 31 Jul 2020 14:25:56 +0000 (23:25 +0900)]
[JumpThreading] Allow duplicating a basic block into preds when its branch condition is freeze(phi)
This is the last JumpThreading patch for getting the performance numbers shown at
https://reviews.llvm.org/D84940#2184653 .
This patch makes ProcessBlock call ProcessBranchOnPHI when the branch condition
is freeze(phi) as well (originally it calls the function when the condition is
phi only).
Since what ProcessBranchOnPHI does is to duplicate the basic block into
predecessors if profitable, it is still valid when the condition is freeze(phi)
too.
```
p = phi [a, pred1] [b, pred2]
p.fr = freeze p
br p.fr, ...
=>
pred1:
p.fr = freeze a
br p.fr, ...
pred2:
p.fr2 = freeze b
br p.fr2, ...
```
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D85029
Juneyoung Lee [Fri, 31 Jul 2020 14:05:44 +0000 (23:05 +0900)]
[JumpThreading] Add a test that duplicates insts of a basic block with cond br to preds; NFC
Fangrui Song [Thu, 6 Aug 2020 00:00:16 +0000 (17:00 -0700)]
[ELF][test] Add another -triple=x86_64 to linkorder-mixed.s
Fixes an error on macOS:
error: mach-o section specifier uses an unknown section type
Shoaib Meenai [Wed, 5 Aug 2020 23:59:53 +0000 (16:59 -0700)]
[lld-macho] Fix errant search and replace. NFC
Alina Sbirlea [Wed, 5 Aug 2020 23:12:09 +0000 (16:12 -0700)]
[MSSA] Update test with more detailed and resilient checks. [NFC]
aartbik [Wed, 5 Aug 2020 20:43:16 +0000 (13:43 -0700)]
[mlir] [VectorOps] Add masked load/store operations to Vector dialect
The intrinsics were already supported and vector.transfer_read/write lowered
direclty into these operations. By providing them as individual ops, however,
clients can used them directly, and it opens up progressively lowering transfer
operations at higher levels (rather than direct lowering to LLVM IR as done now).
Reviewed By: bkramer
Differential Revision: https://reviews.llvm.org/D85357
LLVM GN Syncbot [Wed, 5 Aug 2020 23:35:59 +0000 (23:35 +0000)]
[gn build] Port
820e8d8656e
Fangrui Song [Wed, 5 Aug 2020 23:33:54 +0000 (16:33 -0700)]
[ELF] Fix type of ciesWithLSDA after D84610
Fangrui Song [Wed, 5 Aug 2020 23:28:44 +0000 (16:28 -0700)]
[ELF][test] Add REQUIES: x86 and -triple=x86_64 to linkorder-mixed.s
Jan Korous [Tue, 30 Jun 2020 04:34:44 +0000 (21:34 -0700)]
[Analyzer][WebKit] UncountedLambdaCaptureChecker
Differential Revision: https://reviews.llvm.org/D82837
Fangrui Song [Wed, 5 Aug 2020 23:09:41 +0000 (16:09 -0700)]
[ELF] Allow SHF_LINK_ORDER sections to have sh_link=0
Part of https://bugs.llvm.org/show_bug.cgi?id=41734
The semantics of SHF_LINK_ORDER have been extended to represent metadata
sections associated with some other sections (usually text).
The associated text section may be discarded (e.g. LTO) and we want the
metadata section to have sh_link=0 (D72899, D76802).
Normally the metadata section is only referenced by the associated text
section. sh_link=0 means the associated text section is discarded, and
the metadata section will be garbage collected. If there is another
section (.gc_root) referencing the metadata section, the metadata
section will be retained. It's the .gc_root consumer's job to validate
the metadata sections.
# This creates a SHF_LINK_ORDER .meta with sh_link=0
.section .meta,"awo",@progbits,0
1:
.section .meta,"awo",@progbits,foo
2:
.section .gc_root,"a",@progbits
.quad 1b
.quad 2b
Reviewed By: pcc, jhenderson
Differential Revision: https://reviews.llvm.org/D72904
Petr Hosek [Thu, 30 Apr 2020 20:07:13 +0000 (13:07 -0700)]
[CMake] Simplify CMake handling for zlib
Rather than handling zlib handling manually, use find_package from CMake
to find zlib properly. Use this to normalize the LLVM_ENABLE_ZLIB,
HAVE_ZLIB, HAVE_ZLIB_H. Furthermore, require zlib if LLVM_ENABLE_ZLIB is
set to YES, which requires the distributor to explicitly select whether
zlib is enabled or not. This simplifies the CMake handling and usage in
the rest of the tooling.
This is a reland of abb0075 with all followup changes and fixes that
should address issues that were reported in PR44780.
Differential Revision: https://reviews.llvm.org/D79219
Craig Topper [Wed, 5 Aug 2020 22:53:49 +0000 (15:53 -0700)]
[X86] Rename mod128.ll to divmod128.ll and add test cases for sdiv/udiv/urem.
This improves code coverage on the switch in LowerWin64_i128OP.
Arthur Eubanks [Wed, 5 Aug 2020 18:12:29 +0000 (11:12 -0700)]
[MSSA][NewPM] Handle tests with -print-memoryssa
-print-memoryssa in legacy PM is print<memoryssa> in NPM.
Pin tests with -print-memoryssa to legacy PM.
Add corresponding tests for NPM where missing.
This fixes "unknown pass name 'print-memoryssa'".
Some tests still fail in Analysis/MemorySSA due to other passes that
haven't been ported.
pr43427.ll and pr43438.ll required adding -aa-pipeline=basic-aa,
-loop-simplify (since it doesn't run on legacy PM by default), and
decrementing some of the MemoryPhi numbers.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D85333
Craig Topper [Wed, 5 Aug 2020 22:35:16 +0000 (15:35 -0700)]
[X86] Disable copy elision in LowerMemArgument for scalarized vectors when the loc VT is a different size than the original element.
For example a v4f16 argument is scalarized to 4 i32 values. So
the values are spread out instead of being packed tightly like
in the original vector.
Fixes PR47000.
Craig Topper [Wed, 5 Aug 2020 22:17:27 +0000 (15:17 -0700)]
[X86] Add test case for PR47000. NFC
Jonas Devlieghere [Wed, 5 Aug 2020 22:37:50 +0000 (15:37 -0700)]
[lldb] Skip test_launch_simple on Windows
Because stdio manipulation unsupported on Windows.
Alex Zinenko [Wed, 5 Aug 2020 12:44:03 +0000 (14:44 +0200)]
[mlir] use the new stateful LLVM type translator by default
Previous type model in the LLVM dialect did not support identified structure
types properly and therefore could use stateless translations implemented as
free functions. The new model supports identified structs and must keep track
of the identified structure types present in the target context (LLVMContext or
MLIRContext) to avoid creating duplicate structs due to LLVM's type
auto-renaming. Expose the stateful type translation classes and use them during
translation, storing the state as part of ModuleTranslation.
Drop the test type translation mechanism that is no longer necessary and update
the tests to exercise type translation as part of the main translation flow.
Update the code in vector-to-LLVM dialect conversion that relied on stateless
translation to use the new class in a stateless manner.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D85297
Greg Clayton [Wed, 29 Jul 2020 01:26:24 +0000 (18:26 -0700)]
Add verification for DW_AT_decl_file and DW_AT_call_file.
LTO builds have been creating invalid DWARF and one of the errors was a file index that was out of bounds. "llvm-dwarfdump --verify" will check all file indexes for line tables already, but there are no checks for the validity of file indexes in attributes.
The verification will verify if there is a DW_AT_decl_file/DW_AT_call_file that:
- there is a line table for the compile unit
- the file index is valid
- the encoding is appropriate
Tests are added that test all of the above conditions.
Differential Revision: https://reviews.llvm.org/D84817
Jonas Devlieghere [Wed, 5 Aug 2020 22:21:46 +0000 (15:21 -0700)]
[lldb] Skip TestProcessConnect when running remotely
This test doesn't make much sense when already running remotely.
Jonas Devlieghere [Wed, 5 Aug 2020 22:20:53 +0000 (15:20 -0700)]
[lldb] Modify the `skipIfRemote` decorator so we can skip all PExpect tests.
This patch modifies the skipIfRemote decorator so it can apply to a
whole class, which allows us to skip all PExpect tests as a whole.
Differential revision: https://reviews.llvm.org/D85365
Richard Smith [Wed, 5 Aug 2020 21:52:24 +0000 (14:52 -0700)]
CFG: Destroy temporaries in (a,b) expression in the correct order.
Sanjay Patel [Wed, 5 Aug 2020 21:04:21 +0000 (17:04 -0400)]
[InstCombine] fold icmp with 'mul nsw/nuw' and constant operands
This also removes a more specific fold that only handled icmp with 0.
https://rise4fun.com/Alive/sdM9
Name: mul nsw with icmp eq
Pre: (C1 != 0) && (C2 % C1) == 0
%a = mul nsw i8 %x, C1
%r = icmp eq i8 %a, C2
=>
%r = icmp eq i8 %x, C2 / C1
Name: mul nuw with icmp eq
Pre: (C1 != 0) && (C2 %u C1) == 0
%a = mul nuw i8 %x, C1
%r = icmp eq i8 %a, C2
=>
%r = icmp eq i8 %x, C2 /u C1
Name: mul nsw with icmp ne
Pre: (C1 != 0) && (C2 % C1) == 0
%a = mul nsw i8 %x, C1
%r = icmp ne i8 %a, C2
=>
%r = icmp ne i8 %x, C2 / C1
Name: mul nuw with icmp ne
Pre: (C1 != 0) && (C2 %u C1) == 0
%a = mul nuw i8 %x, C1
%r = icmp ne i8 %a, C2
=>
%r = icmp ne i8 %x, C2 /u C1
Sanjay Patel [Wed, 5 Aug 2020 20:26:14 +0000 (16:26 -0400)]
[InstCombine] add tests for icmp with mul nsw/nuw; NFC
Thomas Lively [Wed, 5 Aug 2020 21:00:01 +0000 (14:00 -0700)]
[WebAssembly] Fix types in wasm_simd128.h and add tests
47f7174ffa changed the types used in the Wasm SIMD builtin functions,
but not all of their uses in wasm_simd128.h were updated. This commit
fixes wasm_simd128.h and adds tests to make sure similar problems do
not pass uncaught in the future.
Differential Revision: https://reviews.llvm.org/D85347
Joel E. Denny [Wed, 5 Aug 2020 20:48:04 +0000 (16:48 -0400)]
[OpenMP] Fix `target data` exit for array extension
For example:
```
#pragma omp target data map(tofrom:arr[0:100])
{
#pragma omp target exit data map(delete:arr[0:100])
#pragma omp target enter data map(alloc:arr[98:2])
}
```
Without this patch, the transfer at the end of the target data region
is broken and fails depending on the target device. According to my
read of the spec, the transfer shouldn't even be attempted because
`arr[0:100]` isn't (fully) present there. To fix that, this patch
makes `DeviceTy::getTgtPtrBegin` return null for this case.
Reviewed By: grokos
Differential Revision: https://reviews.llvm.org/D85342
Joel E. Denny [Wed, 5 Aug 2020 20:47:29 +0000 (16:47 -0400)]
[OpenMP] Fix `present` diagnostic for array extension
For example, without this patch, the following fails as expected with
or without the `present` modifier, but the `present` modifier doesn't
produce its usual diagnostic:
```
#pragma omp target data map(alloc: arr[0:2])
{
#pragma omp target map(present, tofrom: arr[0:100]) // not fully present
;
}
```
Reviewed By: grokos, vzakhari
Differential Revision: https://reviews.llvm.org/D85320
cgyurgyik [Wed, 5 Aug 2020 20:36:52 +0000 (16:36 -0400)]
[libc] Add strspn implementation and std::bitset
Reviewed By: sivachandra, abrachet
Differential Revision: https://reviews.llvm.org/D85103
George Rokos [Wed, 5 Aug 2020 20:06:27 +0000 (13:06 -0700)]
[libomptarget][NFC] Replace `%ld` with PRId64 for data of type int64_t.
The standard way of printing `int64_t` data is via the PRId64 macro, `ld`
is for `long int` and int64_t is not guaranteed to be typedef'ed as `long int`
on all platforms. E.g. on Windows we get mismatch warnings.
Differential Revision: https://reviews.llvm.org/D85353
Stanislav Mekhanoshin [Tue, 4 Aug 2020 21:33:52 +0000 (14:33 -0700)]
[AMDGPU] Scavenge temp reg for AGPR spill
Differential Revision: https://reviews.llvm.org/D85234
Rahman Lavaee [Wed, 5 Aug 2020 19:31:24 +0000 (12:31 -0700)]
[Propeller]: Use a descriptive temporary symbol name for the end of the basic block.
This patch changes the functionality of AsmPrinter to name the basic block end labels as LBB_END${i}_${j}, with ${i} being the identifier for the function and ${j} being the identifier for the basic block. The new naming scheme is consistent with how basic block labels are named (.LBB${i}_{j}), and how function end symbol are named (.Lfunc_end${i}) and helps to write stronger tests for the upcoming patch for BB-Info section (as proposed in https://lists.llvm.org/pipermail/llvm-dev/2020-July/143512.html). The end label is used with basicblock-labels (BB-Info section in future) and basicblock-sections to compute the size of basic blocks and basic block sections, respectively. For BB sections, the section containing the entry basic block will not have a BB end label since it already gets the function end-label.
This label is cached for every basic block (CachedEndMCSymbol) like the label for the basic block (CachedMCSymbol).
Differential Revision: https://reviews.llvm.org/D83885
Jordan Rupprecht [Wed, 5 Aug 2020 20:16:01 +0000 (13:16 -0700)]
[lldb/test] Support git commit version ids for clang.
`getCompilerVersion` assumes that `clang --version` prints out a string like `version [0-9\.]+`.
If clang is built from trunk, the version line might look like `clang version trunk (123abc)`.
Since there isn't any way of knowing by the commit id alone whether one commit is newer or older than another git commit (or clang version), assume that clang with a version id like this is very close to trunk. For example, any tests with `@skipIf(compiler="clang", compiler_version=['<', '8'])` should be run.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D85248
Artem Belevich [Tue, 4 Aug 2020 18:52:54 +0000 (11:52 -0700)]
[CUDA] Work around a bug in rint/nearbyint caused by a broken implementation provided by CUDA.
Normally math functions are forwarded to __nv_* counterparts provided by CUDA's
libdevice bitcode. However, __nv_rint*()/__nv_nearbyint*() functions there have
a bug -- they use round() which rounds *up* instead of rounding towards the
nearest integer, so we end up with rint(2.5f) producing 3.0 instead of expected
2.0. The broken bitcode is not actually used by NVCC itself, which has both a
work-around in CUDA headers and, in recent versions, uses correct
implementations in NVCC's built-ins.
This patch implements equivalent workaround and directs rint*/nearbyint* to
__builtin_* variants that produce correct results.
Differential Revision: https://reviews.llvm.org/D85236
Matt Arsenault [Tue, 28 Jul 2020 21:36:14 +0000 (17:36 -0400)]
AMDGPU: Correct prolog SP initialization logic
Having callees that will read SP is not the only reason we need to
reference the stack pointer.
Stanislav Mekhanoshin [Wed, 5 Aug 2020 19:39:03 +0000 (12:39 -0700)]
[AMDGPU] Added missing gfx1031 cases to CGOpenMPRuntimeGPU.cpp
Stanislav Mekhanoshin [Wed, 5 Aug 2020 19:00:52 +0000 (12:00 -0700)]
[AMDGPU] gfx1031 target
Differential Revision: https://reviews.llvm.org/D85337
Arthur Eubanks [Wed, 5 Aug 2020 19:22:07 +0000 (12:22 -0700)]
[NewPM][LoopRotate] Rename rotate -> loop-rotate
To match legacy pass name.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D85338
Arthur Eubanks [Tue, 4 Aug 2020 21:34:51 +0000 (14:34 -0700)]
[Driver] Accept -fno-lto in clang-cl
Some compiler-rt tests check for the presence of the compiler accepting
-fno-lto to add that flag. Otherwise some tests don't link due to
-flto mismatch between compiling and linking.
$ cmake ... -DLLVM_ENABLE_LTO=Thin ...
$ ninja projects/compiler-rt/lib/sanitizer_common/tests/Sanitizer-x86_64-Test.exe
previously failed, now links.
Reviewed By: hans
Differential Revision: https://reviews.llvm.org/D85252
Matt Arsenault [Wed, 5 Aug 2020 01:20:39 +0000 (21:20 -0400)]
AMDGPU: Eliminate BUFFER_ATOMIC_PK_ADD_F16 node
This is redundant with the other no return buffer atomic node, and we
don't really need a separate type profile for it.
Kadir Cetinkaya [Wed, 5 Aug 2020 19:14:31 +0000 (21:14 +0200)]
[clangd][NFC] Delete dead code in ExtractFunction code action
Matt Morehouse [Wed, 5 Aug 2020 19:11:24 +0000 (12:11 -0700)]
Revert "Add libFuzzer shared object build output"
This reverts commit
98d91aecb26a51225242332e73ed454c0f6cac5e since it
breaks on platforms without libstdc++.
Kadir Cetinkaya [Wed, 5 Aug 2020 14:21:55 +0000 (16:21 +0200)]
[clangd] Disable define out-of-line code action on templates
Differential Revision: https://reviews.llvm.org/D85310
Lei Zhang [Mon, 13 Jul 2020 20:20:59 +0000 (16:20 -0400)]
[mlir][StandardToSPIRV] Use spv.UMod for index re-calculation
Per Vulkan's SPIR-V environment spec: "While the OpSRem and OpSMod
instructions are supported by the Vulkan environment, they require
non-negative values and thus do not enable additional functionality
beyond what OpUMod provides."
The `getOffsetForBitwidth` function is used for lowering std.load
and std.store, whose indices are of `index` type and cannot be
negative. So we should be okay to use spv.UMod directly here to
be exact. Also made the comment explicit about the assumption.
Differential Revision: https://reviews.llvm.org/D83714
Roman Lebedev [Wed, 5 Aug 2020 18:20:47 +0000 (21:20 +0300)]
[InstCombine] Negator: -(cond ? x : -x) --> cond ? -x : x
We were errneously only doing that for old-style abs/nabs,
but we have no such legality check on the condition of the select.
https://rise4fun.com/Alive/xBHS
Roman Lebedev [Wed, 5 Aug 2020 18:16:20 +0000 (21:16 +0300)]
[NFC][InstCombine] Add tests for negation of old-style [n]abs, select-of-op-vs-negation-of-op
Matt Arsenault [Wed, 5 Aug 2020 00:41:53 +0000 (20:41 -0400)]
AMDGPU: Refactor buffer atomic intrinsic lowering
Move raw/struct buffer atomic lowering to separate functions. This
avoids a long nested switch, and simplifies a future patch.
Lei Zhang [Wed, 5 Aug 2020 14:06:00 +0000 (10:06 -0400)]
[spirv] Fix bitwidth emulation for Workgroup storage class
If Int16 is not available, 16-bit integers inside Workgroup storage
class should be emulated via 32-bit integers. This was previously
broken because the capability querying logic was incorrectly
intercepting all storage classes where it meant to only handle
interface storage classes. Adjusted where we return to fix this.
Differential Revision: https://reviews.llvm.org/D85308
Matt Arsenault [Wed, 5 Aug 2020 18:43:21 +0000 (14:43 -0400)]
AMDGPU: Remove leftover test
Matt Arsenault [Wed, 5 Aug 2020 13:42:14 +0000 (09:42 -0400)]
AMDGPU: Fix verifier error with undef source producing s_bitset*
This needs to preserve the undef flag.
Sanjay Patel [Wed, 5 Aug 2020 18:37:05 +0000 (14:37 -0400)]
[InstSimplify] fold icmp with mul nsw and constant operands
https://rise4fun.com/Alive/slvl
Name: mul nsw with icmp eq
Pre: (C2 % C1) != 0
%a = mul nsw i8 %x, C1
%r = icmp eq i8 %a, C2
=>
%r = false
Name: mul nsw with icmp ne
Pre: (C2 % C1) != 0
%a = mul nsw i8 %x, C1
%r = icmp ne i8 %a, C2
=>
%r = true
Follow-up to the 'nuw' variation added with:
rGf879c9b79621
Jordan Rupprecht [Wed, 5 Aug 2020 18:35:37 +0000 (11:35 -0700)]
[lldb/test] Use realpath consistently for test root file paths.
LLDB tests assume that tests are in the test tree (the `LLDB_TEST_SRC` env variable, configured by `dotest.py`).
If this assertion doesn't hold, tests fail in strange ways. An early place this goes wrong is in `compute_mydir` which does a simple length-based substring to get the relative path. Later, we use that path to chdir to. If the test file and test tree don't agree in realpath-ness (and therefore length), this will be a cryptic error of chdir-ing to a directory that does not exist.
The actual discrepency is that the places we look for `use_lldb_suite.py` don't use a realpath, but `dotest.py` does (see initialization of `configuration.testdirs`).
It doesn't particularly matter whether we use realpath or abspath to canonicalize things, but many places end up with implicit dependencies on the canonicalized pwd being a realpath, so make them realpath consistently. Also, in the `compute_mydir` method mentioned, raise an error if the path types don't agree.
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D85258
Sanjay Patel [Wed, 5 Aug 2020 17:41:05 +0000 (13:41 -0400)]
[InstSimplify] fold icmp with mul nuw and constant operands
https://rise4fun.com/Alive/pZEr
Name: mul nuw with icmp eq
Pre: (C2 %u C1) != 0
%a = mul nuw i8 %x, C1
%r = icmp eq i8 %a, C2
=>
%r = false
Name: mul nuw with icmp ne
Pre: (C2 %u C1) != 0
%a = mul nuw i8 %x, C1
%r = icmp ne i8 %a, C2
=>
%r = true
There are potentially several other transforms we need to add based on:
D51625
...but it doesn't look like there was follow-up to that patch.
Sanjay Patel [Wed, 5 Aug 2020 17:09:20 +0000 (13:09 -0400)]
[InstSimplify] add vector tests for icmp with mul nuw; NFC
Also, the naming was off on a couple of tests.
Mitchell Balan [Wed, 5 Aug 2020 18:29:57 +0000 (14:29 -0400)]
[clang-format] fix BreakBeforeBraces.MultiLine with for each macros
Summary:
The MultiLine option in BreakBeforeBraces was only handling standard
control statement, leading to invalid indentation with for each macros:
Previous behavior:
/* invalid: brace should be on the same line */
Q_FOREACH(int a; list)
{
foo();
}
/* valid */
Q_FOREACH(int longVariable;
list)
{
foo();
}
To fix this, simply add the TT_ForEachMacro kind in the list of
recognized control statements for the multiline option.
This is a fix for https://bugs.llvm.org/show_bug.cgi?id=44632
Reviewers: MyDeveloperDay, mitchell-stellar
Reviewed by: mitchell-stellar
Contributed by: vthib
Subscribers: cfe-commits
Tags: #clang, #clang-format, #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D85304
Valentin Clement [Wed, 5 Aug 2020 18:20:26 +0000 (14:20 -0400)]
[flang][NFC] Unify OpenMP and OpenACC structure checker
This patch remove duplicated code between the check-omp-structure and the check-acc-structure
and unify it into a check-directive-structure templated class.
Reviewed By: kiranchandramohan, sscalpone, ichoyjx
Differential Revision: https://reviews.llvm.org/D85104
Alexander Belyaev [Wed, 5 Aug 2020 16:41:29 +0000 (18:41 +0200)]
[mlir][nfc] Rename `promoteMemRefDescriptors` to `promoteOperands`.
`promoteMemRefDescriptors` also converts types of every operand, not only
memref-typed ones. I think `promoteMemRefDescriptors` name does not imply that.
Differential Revision: https://reviews.llvm.org/D85325
Matt Morehouse [Wed, 5 Aug 2020 18:11:42 +0000 (11:11 -0700)]
[libFuzzer] Do not link pthreads on Android.
Android has pthreads included in bionic and doesn't recognize -lpthread.
Vincent Zhao [Wed, 5 Aug 2020 18:06:17 +0000 (20:06 +0200)]
[MLIR][LinAlg] Use AnyTypeOf for LinalgOperand for better error msg.
Previously, `LinalgOperand` is defined with `Type<Or<..,>>`, which produces
not very readable error messages when it is not matched, e.g.,
```
'linalg.generic' op operand #0 must be anonymous_326, but got ....
```
It is simply because the `description` property is not properly set.
This diff switches to use `AnyTypeOf` for `LinalgOperand`, which automatically
generates a description based on the allowed types provided.
As a result, the error message now becomes:
```
'linalg.generic' op operand #0 must be ranked tensor of any type values or strided memref of any type values, but got ...
```
Which is clearer and more informative.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D84428
Paul C. Anagnostopoulos [Wed, 5 Aug 2020 18:09:12 +0000 (11:09 -0700)]
Remove Olesen from LLVM code owners
I contacted Jakob Olesen about TableGen and he replied that he is no longer involved with the project.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D84958
Haojian Wu [Wed, 5 Aug 2020 18:03:21 +0000 (20:03 +0200)]
[clangd] Hide "swap if branch" tweak
This tweak is more like a demo, and doesn't provide much value in
practice.
Differential Revision: https://reviews.llvm.org/D85318
Erich Keane [Wed, 5 Aug 2020 17:52:42 +0000 (10:52 -0700)]
Fix _ExtInt(1) to be a i1 in memory.
The _ExtInt(1) in getTypeForMem was hitting the bool logic for expanding
to an 8 bit value. The result was an assert, or store i1 %0, i8* %2, align 1
since the parameter IS an i1. This patch changes the 'forMem' test to
exclude ext-int from the bool test.
Alexey Bataev [Tue, 4 Aug 2020 15:42:26 +0000 (11:42 -0400)]
[LIBOMPTARGET]Fix order of mapper data for targetDataEnd function.
targetDataMapper function fills arrays with the mapping data in the
direct order. When this function is called by targetDataBegin or
tgt_target_update functions, it works as expected. But targetDataEnd
function processes mapped data in reverse order. In this case, the base
pointer might be deleted before the associated data is deleted. Need to
reverse data, mapped by mapper, too, since it always adds data that must
be deleted at the end of the buffer.
Fixes the test declare_mapper_target_update.cpp.
Also, reduces the memry fragmentation by preallocation the memory
buffers.
Differential Revision: https://reviews.llvm.org/D85216
Evgenii Stepanov [Tue, 4 Aug 2020 23:46:35 +0000 (16:46 -0700)]
[msan] Remove readnone and friends from call sites.
MSan removes readnone/readonly and similar attributes from callees,
because after MSan instrumentation those attributes no longer apply.
This change removes the attributes from call sites, as well.
Failing to do this may cause DSE of paramTLS stores before calls to
readonly/readnone functions.
Differential Revision: https://reviews.llvm.org/D85259
Simon Pilgrim [Wed, 5 Aug 2020 17:09:22 +0000 (18:09 +0100)]
[X86][SSE] Fold 128-bit PACK(EXTEND(X),EXTEND(Y)) -> CONCAT(X,Y) subvectors
This is seen in the sub-128-bit vector trunc(ext()) of comparison results
Fixes pr46585.ll regression in D66004
Jordan Rupprecht [Wed, 5 Aug 2020 17:22:27 +0000 (10:22 -0700)]
Revert "[LoopVectorizer] Inloop vector reductions"
This reverts commit
e9761688e41cb979a1fa6a79eb18145a75104933. It breaks the build:
```
~/src/llvm-project/llvm/lib/Analysis/IVDescriptors.cpp:868:10: error: no viable conversion from returned value of type 'SmallVector<[...], 8>' to function return type 'SmallVector<[...], 4>'
return ReductionOperations;
```
Mircea Trofin [Wed, 5 Aug 2020 17:22:45 +0000 (10:22 -0700)]
[TFUtils] Expose untyped accessor to evaluation result tensors
These were implementation detail, but become necessary for generic data
copying.
Also added const variations to them, and move assignment, since we had a
move ctor (and the move assignment helps in a subsequent patch).
Differential Revision: https://reviews.llvm.org/D85262
Jordan Rupprecht [Wed, 5 Aug 2020 15:50:41 +0000 (08:50 -0700)]
[lldb/test] Replace LLDB_TEST_SRC env variable with configuration
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D85322
Julian Lettner [Wed, 5 Aug 2020 17:11:50 +0000 (10:11 -0700)]
[ASan][Darwin] Adapt test for macOS 11+ version scheme
This test depends on the versioning scheme of OSX.
David Green [Wed, 5 Aug 2020 17:14:05 +0000 (18:14 +0100)]
[LoopVectorizer] Inloop vector reductions
Arm MVE has multiple instructions such as VMLAVA.s8, which (in this
case) can take two 128bit vectors, sign extend the inputs to i32,
multiplying them together and sum the result into a 32bit general
purpose register. So taking 16 i8's as inputs, they can multiply and
accumulate the result into a single i32 without any rounding/truncating
along the way. There are also reduction instructions for plain integer
add and min/max, and operations that sum into a pair of 32bit registers
together treated as a 64bit integer (even though MVE does not have a
plain 64bit addition instruction). So giving the vectorizer the ability
to use these instructions both enables us to vectorize at higher
bitwidths, and to vectorize things we previously could not.
In order to do that we need a way to represent that the reduction
operation, specified with a llvm.experimental.vector.reduce when
vectorizing for Arm, occurs inside the loop not after it like most
reductions. This patch attempts to do that, teaching the vectorizer
about in-loop reductions. It does this through a vplan recipe
representing the reductions that the original chain of reduction
operations is replaced by. Cost modelling is currently just done through
a prefersInloopReduction TTI hook (which follows in a later patch).
Differential Revision: https://reviews.llvm.org/D75069
Roman Lebedev [Wed, 5 Aug 2020 17:11:48 +0000 (20:11 +0300)]
[NFC][InstCombine] Negator: include all the needed headers, IWYU
Jonas Devlieghere [Wed, 5 Aug 2020 17:02:51 +0000 (10:02 -0700)]
[lldb] Add an option to inherit TCC permissions from parent.
Add an option that allows the user to decide to not make the inferior is
responsible for its own TCC permissions. If you don't make the inferior
responsible, it inherits the permissions of its parent. The motivation
is the scenario of running the LLDB test suite from an external hard
drive. If the inferior is responsible, every test needs to be granted
access to the external volume. When the permissions are inherited,
approval needs to be granted only once.
Differential revision: https://reviews.llvm.org/D85237
Jonas Devlieghere [Wed, 5 Aug 2020 16:34:18 +0000 (09:34 -0700)]
[lldb] Make SBTarget::LaunchSimple start form the target's LaunchInfo
Currently SBTarget::LaunchSimple creates a new LaunchInfo which means it
ignores any target properties that have been set. Instead, it should
start from the target's LaunchInfo and populated the specified fields.
Differential revision: https://reviews.llvm.org/D85235
Ted Woodward [Thu, 30 Jul 2020 18:37:43 +0000 (13:37 -0500)]
Remove special Hexagon packet traversal code
On Hexagon, breakpoints need to be on the first instruction of a packet.
When the LLVM disassembler for Hexagon returned 32 bit instructions, we
needed code to find the start of the current packet. Now that the LLVM
disassembler for Hexagon returns packets instead of instructions, we always
have the first instruction of the packet. Remove the packet traversal code
because it can cause problems when the next packet has more than one
instruction.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D84966
Roman Lebedev [Wed, 5 Aug 2020 16:17:56 +0000 (19:17 +0300)]
[InstCombine] Negator: 0 - (X + Y) --> (-X) - Y iff a single operand negated
This was the most obvious regression in
f5df5cd5586ae9cfb2d9e53704dfc76f47aff149.
f5df5cd5586ae9cfb2d9e53704dfc76f47aff149
We really don't want to do this if the original/outermost subtraction
isn't a negation, and therefore doesn't go away - just sinking negation
isn't a win. We are actually appear to be missing folds so hoist it.
https://rise4fun.com/Alive/tiVe
Roman Lebedev [Wed, 5 Aug 2020 16:06:40 +0000 (19:06 +0300)]
[NFC][InstCombine] Tests for negation of `add` w/ single negatible operand
Sanjay Patel [Wed, 5 Aug 2020 16:26:56 +0000 (12:26 -0400)]
[InstSimplify] add tests for icmp with 'mul nuw' operand; NFC
Uday Bondhugula [Wed, 5 Aug 2020 16:33:35 +0000 (22:03 +0530)]
[MLIR][NFC] Fix clang-tidy warnings in std to llvm conversion
Fix clang-tidy warnings in std to llvm conversion.