Simon Pilgrim [Tue, 23 Jun 2020 15:55:59 +0000 (16:55 +0100)]
WithColor.h - reduce CommandLine.h include to forward declaration. NFC.
WithColor.h is one of the most common headers, we can severely reduce its frontend impact (in ClangBuildAnalyzer reports) by removing the bulky CommandLine.h include, forward declaring llvm::cl::OptionCategory and just including raw_ostream.h instead.
Simon Pilgrim [Tue, 23 Jun 2020 15:23:54 +0000 (16:23 +0100)]
[X86][AVX] Add PR46249 test case
Jonas Devlieghere [Tue, 23 Jun 2020 16:04:52 +0000 (09:04 -0700)]
[lldb/Lua] Use the debugger's output and error file for Lua's I/O library.
Add support for changing the stdout and stderr file in Lua's I/O library
and hook it up with the debugger's output and error file respectively
for the interactive Lua interpreter.
https://reviews.llvm.org/D82273
Xing GUO [Tue, 23 Jun 2020 16:02:09 +0000 (00:02 +0800)]
[ObjectYAML][DWARF] Remove unused context. NFC.
The context is unused. This patch helps remove it.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D82351
Sanjay Patel [Tue, 23 Jun 2020 15:43:35 +0000 (11:43 -0400)]
[PhaseOrdering] add test for missed vectorization; NFC (PR43745)
Either SLP or VectorCombine should be able to form vector compares
reliably on this example.
Xing GUO [Tue, 23 Jun 2020 12:41:21 +0000 (20:41 +0800)]
[ObjectYAML][ELF] Add support for emitting the .debug_pubtypes section.
This patch helps add support for emitting the .debug_pubtypes section.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D82347
Valentin Clement [Tue, 23 Jun 2020 15:48:04 +0000 (11:48 -0400)]
[openmp] Add missing dependencies for OMP.h.inc after d90443b
ergawy [Tue, 23 Jun 2020 15:38:30 +0000 (11:38 -0400)]
[MLIR][SPIRV] Extend automation script to generate coverage report.
This patch adds a new cli argument to the automation script to generate
a report of the current SPIRV spec instruction coverage. It dumps to the
standard output a YAML string with the coverage information.
Differential Revision: https://reviews.llvm.org/D82006
Erich Keane [Tue, 23 Jun 2020 15:33:44 +0000 (08:33 -0700)]
Fix test added by D79830
This clang test unfortunately depends on the actions of the optimizer,
which some of the buildbots hit.
This patch makes it so it cannot ignore the return value of 'f', so it
won't do away with the implementation.
George Mitenkov [Tue, 23 Jun 2020 15:26:44 +0000 (11:26 -0400)]
[MLIR][SPIRVToLLVM] Implementation of spv.func conversion, and return ops
This patch provides an implementation for `spv.func` conversion. The pattern
is populated in a separate method added to the pass. At the moment, the type
signature conversion only includes the supported types. The conversion pattern
also matches SPIR-V function control attributes to LLVM function attributes.
Those are modelled as `passthrough` attributes in LLVM dialect. The following
mapping are used:
- None: no attributes passed
- Inline: `alwaysinline` seems to be the right equivalent (`inlinehint` is
semantically weaker in my opinion)
- DontInline: `noinline`
- Pure and Const: I think those can be modelled as `readonly` and `readnone`
attributes respectively.
Also, 2 patterns added for return ops conversion (`spv.Return` for void return
and `spv.ReturnValue` for a single value return).
Differential Revision: https://reviews.llvm.org/D81931
Momchil Velikov [Tue, 23 Jun 2020 14:24:50 +0000 (15:24 +0100)]
[ARM] Describe defs/uses of VLLDM and VLSTM
The VLLDM and VLSTM instructions are incompletely specified. They
(potentially) write (or read, respectively) registers Q0-Q7, VPR, and
FPSCR, but the compiler is unaware of it.
In the new test case `cmse-vlldm-no-reorder.ll` case the compiler
missed an anti-dependency and reordered a `VLLDM` ahead of the
instruction, which stashed the return value from the non-secure call,
effectively clobbering said value.
This test case does not fail with upstream LLVM, because of scheduling
differences and I couldn't find a test case for the VLSTM either.
Differential Revision: https://reviews.llvm.org/D81586
Nico Weber [Tue, 23 Jun 2020 14:40:34 +0000 (10:40 -0400)]
[gn build] (semi-manually) Port
d90443b1d93
Valentin Clement [Tue, 23 Jun 2020 13:29:50 +0000 (09:29 -0400)]
[openmp] Base of tablegen generated OpenMP common declaration
Summary:
As discussed previously when landing patch for OpenMP in Flang, the idea is
to share common part of the OpenMP declaration between the different Frontend.
While doing this it was thought that moving to tablegen instead of Macros will also
give a cleaner and more powerful way of generating these declaration.
This first part of a future series of patches is setting up the base .td file for
DirectiveLanguage as well as the OpenMP version of it. The base file is meant to
be used by other directive language such as OpenACC.
In this first patch, the Directive and Clause enums are generated with tablegen
instead of the macros on OMPConstants.h. The next pacth will extend this
to other enum and move the Flang frontend to use it.
Reviewers: jdoerfert, DavidTruby, fghanim, ABataev, jdenny, hfinkel, jhuber6, kiranchandramohan, kiranktp
Reviewed By: jdoerfert, jdenny
Subscribers: arphaman, martong, cfe-commits, mgorny, yaxunl, hiraditya, guansong, jfb, sstefan1, aaron.ballman, llvm-commits
Tags: #llvm, #openmp, #clang
Differential Revision: https://reviews.llvm.org/D81736
Mikhail Maltsev [Tue, 23 Jun 2020 14:24:33 +0000 (14:24 +0000)]
[BFloat] Add convert/copy instrinsic support
This patch is part of a series implementing the Bfloat16 extension of the Armv8.6-a architecture, as detailed here:
https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-architecture-developments-armv8-6-a
Specifically it adds intrinsic support in clang and llvm for Arm and AArch64.
The bfloat type, and its properties are specified in the Arm Architecture Reference Manual:
https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile
The following people contributed to this patch:
- Alexandros Lamprineas
- Luke Cheeseman
- Mikhail Maltsev
- Momchil Velikov
- Luke Geeson
Differential Revision: https://reviews.llvm.org/D80928
Matt Arsenault [Fri, 12 Jun 2020 14:19:17 +0000 (10:19 -0400)]
AMDGPU/GlobalISel: Fix asserts on non-s32 sitofp/uitofp sources
The combine to form cvt_f32_ubyte0 was assuming the source type was
always 32-bit, but this needs to tolerate any legal source type.
Thomas Preud'homme [Mon, 22 Jun 2020 14:00:00 +0000 (15:00 +0100)]
[unittest, ADT] Add unit tests for itostr & utostr
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D82300
Simon Pilgrim [Tue, 23 Jun 2020 12:59:05 +0000 (13:59 +0100)]
Mangle.cpp - fix implicit Format.h dependency. NFC.
ProfileSummary was depending on other headers (notably via WithColor.h) to define format().
Louis Dionne [Tue, 23 Jun 2020 13:02:53 +0000 (09:02 -0400)]
[libc++abi] Allow code-signing executables when running the tests
Sanjay Patel [Tue, 23 Jun 2020 12:56:58 +0000 (08:56 -0400)]
[PhaseOrdering] add test for vectorizer cooperation; NFC
This would potentially change with the proposal in D81416.
Alexey Bataev [Tue, 23 Jun 2020 12:53:58 +0000 (08:53 -0400)]
[OPENMP][DOCS]Update status of supported constructs, NFC.
Alexey Bataev [Thu, 18 Jun 2020 17:34:23 +0000 (13:34 -0400)]
[OPENMP50]Codegen for scan directives in parallel for simd regions.
Summary:
Added codegen for scan directives in parallel for simd regions.
Emits the code for the directive with inscan reductions.
Original code:
```
#pragma omp parallel for simd reduction(inscan, op : ...)
for() {
<input phase>;
#pragma omp scan (in)exclusive(...)
<scan phase>
}
```
is transformed to something:
```
#pragma omp parallel
{
size num_iters = <num_iters>;
<type> buffer[num_iters];
#pragma omp for simd
for (i: 0..<num_iters>) {
<input phase>;
buffer[i] = red;
}
#pragma omp barrier
for (int k = 0; k != ceil(log2(num_iters)); ++k)
for (size cnt = last_iter; cnt >= pow(2, k); --k)
buffer[i] op= buffer[i-pow(2,k)];
#pragma omp for simd
for (0..<num_iters>) {
red = InclusiveScan ? buffer[i] : buffer[i-1];
<scan phase>;
}
}
```
Reviewers: jdoerfert
Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin
Tags: #clang
Differential Revision: https://reviews.llvm.org/D82115
Xing GUO [Tue, 23 Jun 2020 12:39:38 +0000 (20:39 +0800)]
[ObjectYAML][ELF] Add support for emitting the .debug_pubnames section.
This patch helps add support for emitting the .debug_pubnames section to yaml2elf.
Known issues:
- Current implementation doesn't support emitting multiple sets of entries.
- Doesn't support DWARF64.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D82296
Simon Pilgrim [Tue, 23 Jun 2020 12:12:18 +0000 (13:12 +0100)]
Add stddef.h to fix missing size_t type build errors.
Simon Pilgrim [Tue, 23 Jun 2020 11:49:11 +0000 (12:49 +0100)]
ProfileSummaryInfoTest.cpp - fix implicit CommandLine.h dependency. NFC.
ProfileSummaryInfoTest references cl::opt but don't include CommandLine.h.
Simon Pilgrim [Tue, 23 Jun 2020 11:41:49 +0000 (12:41 +0100)]
DwarfGenerator.cpp - fix implicit FileSystem.h dependency. NFC.
Mikhail Maltsev [Tue, 23 Jun 2020 11:28:48 +0000 (11:28 +0000)]
[ARM] BFloat MatMul Intrinsics&CodeGen
Summary:
This patch adds support for BFloat Matrix Multiplication Intrinsics
and Code Generation from __bf16 to AArch32. This includes IR intrinsics. Tests are
provided as needed.
This patch is part of a series implementing the Bfloat16 extension of
the
Armv8.6-a architecture, as detailed here:
https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-architecture-developments-armv8-6-a
The bfloat type and its properties are specified in the Arm
Architecture
Reference Manual:
https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile
The following people contributed to this patch:
- Luke Geeson
- Momchil Velikov
- Mikhail Maltsev
- Luke Cheeseman
- Simon Tatham
Reviewers: stuij, t.p.northover, SjoerdMeijer, sdesmalen, fpetrogalli, LukeGeeson, simon_tatham, dmgreen, MarkMurrayARM
Reviewed By: MarkMurrayARM
Subscribers: MarkMurrayARM, danielkiss, kristof.beyls, hiraditya, cfe-commits, llvm-commits, chill, miyuki
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D81740
hsmahesha [Tue, 23 Jun 2020 10:49:34 +0000 (16:19 +0530)]
[AMDGPU/MemOpsCluster] Compute `width` for `MIMG` instruction class.
Summary:
`width` computation is missing for newly added `MIMG`
instruction class. Add it.
Reviewers: foad, rampitec, arsenm
Reviewed By: foad
Subscribers: MatzeB, javed.absar, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81649
Georgii Rymar [Wed, 17 Jun 2020 14:42:55 +0000 (17:42 +0300)]
[DebugInfo/DWARF] - Do not hang when CFI are truncated.
Currently when the .eh_frame section is truncated so that
CFI instructions can't be read, it is possible to enter
an infinite loop.
It happens because `CFIProgram::parse` does not handle errors properly.
This patch fixes the issue.
Differential revision: https://reviews.llvm.org/D82017
James Henderson [Tue, 23 Jun 2020 11:33:19 +0000 (12:33 +0100)]
[DebugInfo][test] Attempt to fix big endian build bots
Commit
9782c922c broke them since it prints raw bytes, whose order will
be different dependent on the endianness of the host.
Simon Pilgrim [Tue, 23 Jun 2020 11:24:24 +0000 (12:24 +0100)]
llvm-isel-fuzzer.cpp - fix implicit CommandLine.h dependency. NFC.
llvm-isel-fuzzer uses cl::opt but don't include CommandLine.h.
Simon Pilgrim [Tue, 23 Jun 2020 11:23:29 +0000 (12:23 +0100)]
llvm-dwp.cpp - fix implicit CommandLine.h dependency. NFC.
llvm-dwp uses cl::opt + cl::list but don't include CommandLine.h.
Simon Pilgrim [Tue, 23 Jun 2020 11:20:44 +0000 (12:20 +0100)]
ModuleTest.cpp - fix implicit SourceMgr.h dependency. NFC.
ModuleTest.cpp was depending on other headers to define SMDiagnostic.
Simon Pilgrim [Tue, 23 Jun 2020 11:19:09 +0000 (12:19 +0100)]
[Analysis] Ensure we include CommandLine.h if we declare any cl::opt flags. NFC.
cgyurgyik [Tue, 23 Jun 2020 11:19:45 +0000 (07:19 -0400)]
[libc] Add fuzz test for strcmp.
Summary:
Adds a fuzz test for string comparison.
This takes in two strings with associated lengths.
Verifies each string contains at least one character, and that the last character is the null terminator.
Then, finds the first instance where one of the following does not hold:
1. i < min(size1, size2)
2. s1[i] == s2[i]
3. s1[i] != '\0'
The result of strcmp is then compared to the value of the difference between s1[i] and s2[i]. For thoroughness, the operands are reversed and also checked.
Reviewers: sivachandra, PaulkaToast
Reviewed By: sivachandra, PaulkaToast
Subscribers: mgorny, tschuett, ecnelises, libc-commits
Tags: #libc-project
Differential Revision: https://reviews.llvm.org/D82247
cgyurgyik [Sat, 20 Jun 2020 00:15:38 +0000 (20:15 -0400)]
Add strcmp fuzz test.
Reviewed-by: todo
Differential Revision: https://reviews.llvm.org/D82247
Aaron Ballman [Tue, 23 Jun 2020 11:14:33 +0000 (07:14 -0400)]
Handle invalid types in the nullPointerConstant AST matcher
Currently, using the nullPointerConstant AST matcher can lead to
assertions in situations where a node to be matched does not have a
valid type associated with it, such as a ParenListExpr. This patch
addresses that by saying such nodes cannot be a null pointer constant.
This addresses PR46353.
Sander de Smalen [Tue, 23 Jun 2020 08:54:04 +0000 (09:54 +0100)]
[AArch64][SVE] ACLE: Add bfloat16 to struct load/stores.
This patch contains:
- Support in LLVM CodeGen for bfloat16 types for ld2/3/4 and st2/3/4.
- New bfloat16 ACLE builtins for svld(2|3|4)[_vnum] and svst(2|3|4)[_vnum]
Reviewers: stuij, efriedma, c-rhodes, fpetrogalli
Reviewed By: fpetrogalli
Tags: #clang, #lldb, #llvm
Differential Revision: https://reviews.llvm.org/D82187
Simon Pilgrim [Tue, 23 Jun 2020 11:11:16 +0000 (12:11 +0100)]
[Transforms] Ensure we include CommandLine.h if we declare any cl::opt flags
Simon Pilgrim [Tue, 23 Jun 2020 11:07:21 +0000 (12:07 +0100)]
SanitizerCoverage.h - fix implicit VirtualFileSystem.h dependency. NFC.
Was relying on other headers to define vfs::getRealFileSystem() for use in inline functions
Simon Pilgrim [Tue, 23 Jun 2020 11:04:05 +0000 (12:04 +0100)]
DWARFLinkerDeclContext.h - fix implicit FileSystem.h dependency. NFC.
Was relying on other headers to define sys::fs::real_path for use in CachedPathResolver::resolve inlines
Kerry McLaughlin [Tue, 23 Jun 2020 10:34:52 +0000 (11:34 +0100)]
[SVE][CodeGen] Legalisation of vsetcc with scalable types
Summary: Changes SplitVecOp_VSETCC to use getVectorElementCount()
Reviewers: sdesmalen, efriedma, dancgr
Reviewed By: efriedma
Subscribers: david-arm, tschuett, hiraditya, rkruppe, psnobl, huihuiz, cfe-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D79167
Roman Lebedev [Tue, 23 Jun 2020 10:52:21 +0000 (13:52 +0300)]
[IndVarSimplify] Don't replace IV user with unsafe loop-invariant (PR45360)
Summary:
As [[ https://bugs.llvm.org/show_bug.cgi?id=45360 | PR45360 ]] reports,
with new cost-model we can sometimes end up being able to expand `udiv`/`urem` instructions.
And that exposes at least one instance of when we do that
regardless of whether or not it is safe to do.
In this particular case, it's `SimplifyIndvar::replaceIVUserWithLoopInvariant()`.
It seems to me, we simply need to check with `isSafeToExpandAt()` first.
The test isn't great. I'm not sure how to make it only run `-indvars`.
Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=45360 | PR45360 ]].
Reviewers: mkazantsev, reames, helloqirun
Reviewed By: mkazantsev
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82108
David Zarzycki [Tue, 23 Jun 2020 10:48:02 +0000 (06:48 -0400)]
[libcxx tests] Clang is more strict now about coroutines
As of
516803dc8685ebcc5bce38b05391958ffee22643, clang is now more
strictly enforcing the coroutine specification.
See: https://reviews.llvm.org/D82029
Chen Zheng [Fri, 19 Jun 2020 03:31:51 +0000 (23:31 -0400)]
[PowerPC] fold addi's imm operand to its imm form consumer's displacement
This patch adds a function to do following transformation:
%0:g8rc_and_g8rc_nox0 = ADDI8 %5:g8rc_and_g8rc_nox0, 144
STD killed %7:g8rc, 16, %0:g8rc_and_g8rc_nox0 :: (store 8 into %ir.8)
------>
STD killed %7:g8rc, 160, %5:g8rc_and_g8rc_nox0 :: (store 8 into %ir.8)
Reviewed By: steven.zhang
Differential Revision: https://reviews.llvm.org/D81723
Cullen Rhodes [Fri, 19 Jun 2020 12:13:00 +0000 (12:13 +0000)]
[AArch64][SVE] Guard svbfloat16_t with feature macro in ACLE
Summary:
svbfloat16_t should only be defined if the __ARM_FEATURE_SVE_BF16
feature macro is enabled, similar to the scalar bfloat16_t type. Also,
arm_bf16.h should be included in arm_sve.h when
__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is defined.
Patch also contains a fix for ld1ro intrinsic which should be guarded on
__ARM_FEATURE_SVE_BF16 rather than __ARM_FEATURE_BF16_SCALAR_ARITHMETIC,
and a fix for bfmmla test which was missing
__ARM_FEATURE_BF16_SCALAR_ARITHMETIC and -target-feature +bf16 in the
RUN line.
Reviewed By: fpetrogalli
Differential Revision: https://reviews.llvm.org/D82178
Dylan McKay [Tue, 23 Jun 2020 10:21:22 +0000 (22:21 +1200)]
Revert "[AVR] Explicitly set the address of the data section when invoking the linker"
This reverts commit
ede6005e7092ddae454e4d365d8adefeaec1f5e3.
Ayke suggests this value varies chip-by-chip, and thus it is not safe to
hardcode to 0x800100.
Proper logic for this linker parameter will have to be wired up in a
follow up patch.
Sebastian Neubauer [Fri, 29 May 2020 14:35:57 +0000 (16:35 +0200)]
[TableGen] Add error messages
Print an error instead of crashing in two places.
Differential Revision: https://reviews.llvm.org/D81074
Pavel Labath [Tue, 23 Jun 2020 09:35:08 +0000 (11:35 +0200)]
[lldb] Split ClangASTSource::CompleteType
Move the part of the code which is responsible for finding a complete
definition of the type into a separate function (FindCompleteType). This
is split off from D81561, as it's a generally useful cleanup.
No functional change.
Simon Pilgrim [Mon, 22 Jun 2020 19:03:23 +0000 (20:03 +0100)]
[X86] truncateVectorWithPACK - fix outdated comment. NFC.
We perform PACKSS/PACKUS on AVX512 targets if the calling function wants to.
Simon Pilgrim [Mon, 22 Jun 2020 18:45:48 +0000 (19:45 +0100)]
[DAG] visitSIGN_EXTEND_INREG - rename EVT variable. NFCI.
We had a EVT type variable called EVT, which isn't a good idea....
Paul Walker [Mon, 18 May 2020 18:12:38 +0000 (19:12 +0100)]
[SVE] Code generation for fixed length vector loads & stores.
Summary:
This patch adds base support for code generating fixed length
vector operations targeting a known SVE vector length. To achieve
this we lower fixed length vector operations to equivalent scalable
vector operations, whereby SVE predication is used to limit the
elements processed to those present within the fixed length vector.
Specifically this patch implements load and store operations, which
get lowered to their masked counterparts thusly:
V = load(Addr) =>
V = extract_fixed_vector(masked_load(make_pred(V.NumElts), Addr))
store(V, (Addr)) =>
masked_store(insert_fixed_vector(V), make_pred(V.NumElts), Addr))
Reviewers: rengolin, efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80385
Dylan McKay [Fri, 19 Jun 2020 11:26:00 +0000 (23:26 +1200)]
[AVR] Rewrite the function calling convention.
Summary:
The previous version relied on the standard calling convention using
std::reverse() to try to force the AVR ABI. But this only works for
simple cases, it fails for example with aggregate types.
This patch rewrites the calling convention with custom C++ code, that
implements the ABI defined in https://gcc.gnu.org/wiki/avr-gcc.
To do that it adds a few 16-bit pseudo registers for unaligned argument
passing, such as R24R23. For example this function:
define void @fun({ i8, i16 } %a)
will pass %a.0 in R22 and %a.1 in R24R23.
There are no instructions that can use these pseudo registers, so a new
register class, DREGSMOVW, is defined to make them apart.
Also the ArgCC_AVR_BUILTIN_DIV is no longer necessary, as it is
identical to the C++ behavior (actually the clobber list is more strict
for __div* functions, but that is currently unimplemented).
Reviewers: dylanmckay
Subscribers: Gaelan, Sh4rK, indirect, jwagen, efriedma, dsprenkels, hiraditya, Jim, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68524
Patch by Rodrigo Rivas Costa.
Mikael Holmen [Tue, 23 Jun 2020 09:28:02 +0000 (11:28 +0200)]
Silence gcc warning about extra ";" [NFC]
Kai Luo [Tue, 23 Jun 2020 09:14:25 +0000 (09:14 +0000)]
[PowerPC][NFC] Add tests for variadic functions on PPC64
James Henderson [Wed, 17 Jun 2020 10:29:29 +0000 (11:29 +0100)]
[DebugInfo] Print line table extended opcode bytes if parsing fails
Previously, if there was an error whilst parsing the operands of an
extended opcode, the operands would be treated as zero and printed. This
could potentially be slightly confusing. This patch changes the
behaviour to print the raw bytes instead.
Reviewed by: ikudrin
Differential Revision: https://reviews.llvm.org/D81570
Simon Pilgrim [Tue, 23 Jun 2020 08:43:09 +0000 (09:43 +0100)]
ProfileSummary.cpp - fix implicit Format.h dependency. NFC.
ProfileSummary was depending on other headers (notably WithColor.h) to define format().
Simon Pilgrim [Tue, 23 Jun 2020 08:41:14 +0000 (09:41 +0100)]
StatepointLowering.cpp - fix implicit CommandLine.h dependency. NFC.
StatepointLowering defines a cl::opt but don't include CommandLine.h.
Simon Pilgrim [Tue, 23 Jun 2020 08:31:38 +0000 (09:31 +0100)]
LowLevelTypeImpl.h - fix implicit Debug.h dependency. NFC.
LowLevelType was depending on other headers (notably WithColor.h) to define dbgs().
Martin Storsjö [Sat, 20 Jun 2020 20:34:53 +0000 (23:34 +0300)]
[llvm-rc] Implement the language id option
Differential Revision: https://reviews.llvm.org/D82265
Florian Hahn [Tue, 23 Jun 2020 07:58:51 +0000 (08:58 +0100)]
[DSE,MSSA] Treat passed by value args as invisible to caller.
This updates the MemorySSA backed implementation to treat arguments
passed by value similar to allocas: in they are assumed to be invisible
in the caller. This is similar to how they are treated in legacy DSE.
Reviewers: efriedma, asbirlea, george.burgess.iv
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D82222
Richard Smith [Tue, 23 Jun 2020 07:01:38 +0000 (00:01 -0700)]
AST dump: recurse into type template arguments when dumping.
Also, do not dump the desugared type for a TemplateSpecializationType
twice.
Alex Lorenz [Mon, 22 Jun 2020 23:32:35 +0000 (16:32 -0700)]
[Triple] support macOS 11 os version number
macOS goes to 11! This commit adds support for the new version number by ensuring
that existing version comparison routines, and the 'darwin' OS identifier
understands the new numbering scheme. It also adds a new utility method
'getCanonicalVersionForOS', which lets users translate some uses of
macOS 10.16 into macOS 11. This utility method will be used in upcoming
clang and swift commits.
Differential Revision: https://reviews.llvm.org/D82337
Siva Chandra Reddy [Mon, 22 Jun 2020 20:47:56 +0000 (13:47 -0700)]
[libc] Match x86 long double NaN classification with that of the compiler.
Reviewers: asteinhauser
Differential Revision: https://reviews.llvm.org/D82330
Michael Liao [Tue, 16 Jun 2020 05:17:56 +0000 (01:17 -0400)]
[SROA] Teach SROA to perform no-op pointer conversion.
Summary:
- When promoting a pointer from memory to register, SROA skips pointers
from different address spaces. However, as `ptrtoint` and `inttoptr`
are defined as no-op casts if that integer type has the same as the
pointer value, generate the pair of `ptrtoint`/`inttoptr` (no-op cast)
sequence to convert pointers from different address spaces if they
have the same size.
Reviewers: arsenm, chandlerc, lebedev.ri
Subscribers:
Differential Revision: https://reviews.llvm.org/D81943
Max Kazantsev [Tue, 23 Jun 2020 04:46:59 +0000 (11:46 +0700)]
[InstCombine] Replace selects with Phis
We can sometimes replace a select with a Phi node if all of its values
are available on respective incoming edges.
Differential Revision: https://reviews.llvm.org/D82005
Reviewed By: nikic
Michael Liao [Mon, 25 May 2020 03:20:57 +0000 (23:20 -0400)]
[SDAG] Add new AssertAlign ISD node.
Summary:
- AssertAlign node records the guaranteed alignment on its source node,
where these alignments are retrieved from alignment attributes in LLVM
IR. These tracked alignments could help DAG combining and lowering
generating efficient code.
- In this patch, the basic support of AssertAlign node is added. So far,
we only generate AssertAlign nodes on return values from intrinsic
calls.
- Addressing selection in AMDGPU is revised accordingly to capture the
new (base + offset) patterns.
Reviewers: arsenm, bogner
Subscribers: jvesely, wdng, nhaehnle, tpr, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D81711
Richard Smith [Wed, 17 Jun 2020 21:06:11 +0000 (14:06 -0700)]
Fix rejects-valid when referencing an implicit operator== from within a
templated class.
When a defaulted operator<=> results in the injection of a defaulted
operator==, that operator== can be named by unqualified name within the
same class, even if the class is templated. To make this work, perform
the transform from defaulted operator<=> to defaulted operator== in the
template definition context instead of the template instantiation
context.
This results in our substituting into a declaration from a context where
we don't have a full list of template arguments (or indeed any), for
which we are now more careful to not spuriously instantiate declarations
that are not dependent on the arguments we're substituting.
Wen-Heng (Jack) Chung [Mon, 22 Jun 2020 14:52:12 +0000 (09:52 -0500)]
Fix a corner case in vector.shape_cast when the trailing dimensions are of size 1.
Differential Revision: https://reviews.llvm.org/D82304
Wen-Heng (Jack) Chung [Mon, 22 Jun 2020 22:06:28 +0000 (17:06 -0500)]
[mlir][mlir-rocm-runner] Remove compile-time warning. NFC.
Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, Kayjukh, jurahul, msifontes
Tags: #mlir
Differential Revision: https://reviews.llvm.org/D82333
Richard Smith [Tue, 23 Jun 2020 02:30:36 +0000 (19:30 -0700)]
Distinguish between template parameter substitutions that are forming
specializations and those that are done as part of rewrites.
Do not create Subst* nodes in the latter. We previously had a hybrid of
these two behaviors where we would only create some Subst* nodes but not
others during deduction guide rewrites.
No functional change intended, but the resulting ASTs are more
principled.
Amy Kwan [Mon, 22 Jun 2020 22:00:00 +0000 (17:00 -0500)]
[PowerPC][Power10] Implement VSX PCV Generate Operations in LLVM/Clang
This patch implements builtins for the following prototypes for the VSX Permute
Control Vector Generate with Mask Instructions:
vector unsigned char vec_genpcvm (vector unsigned char, const int);
vector unsigned short vec_genpcvm (vector unsigned short, const int);
vector unsigned int vec_genpcvm (vector unsigned int, const int);
vector unsigned long long vec_genpcvm (vector unsigned long long, const int);
Differential Revision: https://reviews.llvm.org/D81774
Sanjay Patel [Tue, 23 Jun 2020 00:45:00 +0000 (20:45 -0400)]
[InstCombine] reassociate diff of sums into sum of diffs
This is the integer sibling to D81491.
(a[0] + a[1] + a[2] + a[3]) - (b[0] + b[1] + b[2] +b[3]) -->
(a[0] - b[0]) + (a[1] - b[1]) + (a[2] - b[2]) + (a[3] - b[3])
Removing the "experimental" from these intrinsics is likely
not too far away.
Sanjay Patel [Mon, 22 Jun 2020 21:43:19 +0000 (17:43 -0400)]
[InstCombine] add tests for integer reductions; NFC
Sanjay Patel [Mon, 22 Jun 2020 20:17:06 +0000 (16:17 -0400)]
[VectorCombine] do not use magic number for undef mask element; NFC
Ayke van Laethem [Thu, 18 Jun 2020 13:26:23 +0000 (15:26 +0200)]
[AVR] Disassemble double register instructions
Add disassembly support for the movw, adiw, and sbiw instructions.
I had previously committed test cases for the adiw and sbiw
instructions, but had accidentally made them not runnable so they were
skipped all this time. Oops. This patch fixes that by adding support for
disassembling those instructions.
Differential Revision: https://reviews.llvm.org/D82093
Ayke van Laethem [Thu, 18 Jun 2020 12:41:17 +0000 (14:41 +0200)]
[AVR] Disassemble instructions with fixed Z operand
Some instructions have a fixed Z register and don't have an explicit
register operand. This can be worked around by simply printing the
operand directly if the particular register class is detected.
The LPM and ELPM instructions also needed a custom decoder, which is
also included in this patch.
Differential Revision: https://reviews.llvm.org/D82088
Ayke van Laethem [Tue, 16 Jun 2020 21:42:43 +0000 (23:42 +0200)]
[AVR] Disassemble multiplication instructions
These can often only use a limited range of registers, and apparently
need special decoding support.
Differential Revision: https://reviews.llvm.org/D81971
Ayke van Laethem [Tue, 16 Jun 2020 20:50:29 +0000 (22:50 +0200)]
[AVR] Decode single register instructions
This is a set of instructions that take just a single register as an
operand, with no immediates. Because all instructions share the same
format, I haven't added exhaustive bit testing to all instructions but
just to the inc instruction.
Differential Revision: https://reviews.llvm.org/D81968
Ayke van Laethem [Sun, 19 Apr 2020 18:58:36 +0000 (20:58 +0200)]
[AVR] Don't adjust for instruction size
I'm not entirely sure why this was ever needed, but when I remove both
adjustments all tests still pass.
This fixes a bug where a long branch (using the `jmp` instead of the
`rjmp` instruction) was incorrectly adjusted by 2 because it jumps to an
absolute address instead of a PC-relative address. I could have added
AVR::fixup_call to the list of exceptions, but it seemed more sensible
to me to just remove this code.
Differential Revision: https://reviews.llvm.org/D78459
Alexander Shaposhnikov [Mon, 22 Jun 2020 23:49:14 +0000 (16:49 -0700)]
[llvm-install-name-tool] Implement delete_rpath option
This diff adds support for deleting an rpath from a Mach-O binary.
Patch by Sameer Arora!
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D81527
Richard Smith [Mon, 22 Jun 2020 23:45:12 +0000 (16:45 -0700)]
Fix multilevel deduction where an outer pack is used in the type of an
inner non-type pack at a different index.
We previously considered the index of the outer pack (which would refer
to an unrelated template parameter) to be deduced by deducing the inner
pack, because we inspected the (largely meaningless) type of an expanded
non-type template parameter pack.
Richard Smith [Mon, 22 Jun 2020 22:55:59 +0000 (15:55 -0700)]
Add -ast-dump-decl-types flag to include types of value and type
declarations in AST dumps.
Includes a testcase for deduction guide transformation that makes use of
this new dumping feature.
Rahul Joshi [Mon, 22 Jun 2020 22:11:40 +0000 (15:11 -0700)]
[MLIR][NFC] Adopt hasNItems() for SizedRegion predicate
Differential Revision: https://reviews.llvm.org/D82334
Sam Clegg [Tue, 16 Jun 2020 22:41:20 +0000 (15:41 -0700)]
[WebAssembly] Add support for externalref to MC and wasm-ld
This allows code for handling externref values to be processed by the
assembler and linker.
Differential Revision: https://reviews.llvm.org/D81977
Eric Schweitz [Mon, 22 Jun 2020 22:26:28 +0000 (15:26 -0700)]
add copy of MLIR .clang-tidy to squelch noise in phabricator reviews
Christopher Tetreault [Mon, 22 Jun 2020 22:04:48 +0000 (15:04 -0700)]
[SVE] Remove calls to VectorType::getNumElements from ARM
Reviewers: efriedma, greened, c-rhodes, david-arm, dmgreen
Reviewed By: dmgreen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, dmgreen, danielkiss, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82216
Rahul Joshi [Mon, 22 Jun 2020 19:46:02 +0000 (12:46 -0700)]
- Add hasNItemsOrLess and container variants of hasNItems, hasNItemsOrMore, and hasNItemsOrLess
- Fixed a bug in hasNItems()
- Extend the STLExtras unit test to test hasSingleElement() and hasNItems() and friends.
Differential Revision: https://reviews.llvm.org/D82232
Arthur Eubanks [Mon, 22 Jun 2020 20:22:16 +0000 (13:22 -0700)]
Fix dynamic alloca detection in CloneBasicBlock
Summary:
Simply check AI->isStaticAlloca instead of reimplementing checks for
static/dynamic allocas.
Reviewers: efriedma
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82328
Xun Li [Mon, 15 Jun 2020 23:27:41 +0000 (16:27 -0700)]
[Coroutines] Ensure co_await promise.final_suspend() does not throw
Summary:
This patch addresses https://bugs.llvm.org/show_bug.cgi?id=46256
The spec of coroutine requires that the expression co_await promise.final_suspend() shall not be potentially-throwing.
To check this, we recursively look at every call (including Call, MemberCall, OperatorCall and Constructor) in all code
generated by the final suspend, and ensure that the callees are declared with noexcept. We also look at any returned data
type that requires explicit destruction, and check their destructors for noexcept.
This patch does not check declarations with dependent types yet, which will be done in future patches.
Updated all tests to add noexcept to the required functions, and added a dedicated test for this patch.
This patch might start to cause existing codebase fail to compile because most people may not have been strict in tagging
all the related functions noexcept.
Reviewers: lewissbaker, modocache, junparser
Reviewed By: modocache
Subscribers: arphaman, junparser, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D82029
Jacques Pienaar [Mon, 22 Jun 2020 21:56:54 +0000 (14:56 -0700)]
[mlir][ods] Allow filtering of ops
Add option to filter which op the OpDefinitionsGen run on. This enables having multiple ops together in the same TD file but generating different CC files for them (useful if one wants to use multiclasses or split out 1 dialect into multiple different libraries). There is probably more general query here (e.g., split out all ops that don't have a verify method, or that are commutative) but filtering based on op name (e.g., test.a_op) seemed a reasonable start and didn't require inventing a query specification mechanism here.
Differential Revision: https://reviews.llvm.org/D82319
Craig Topper [Mon, 22 Jun 2020 20:29:43 +0000 (13:29 -0700)]
Recommit "[X86] Calculate the needed size of the feature arrays in _cpu_indicator_init and getHostCPUName using the size of the feature enum."
Hopefully this version will fix the previously buildbot failure
Greg Clayton [Wed, 13 May 2020 23:51:44 +0000 (16:51 -0700)]
Fix the verification of DIEs with DW_AT_ranges.
Summary: Previous code would try to verify DW_AT_ranges and if any ranges would overlap, it would stop attributing any ranges after this to the DIE which caused incorrect errors to be reported that a DIE's address ranges were not contained in the parent DIE's ranges. Added a fix and a test.
Reviewers: aprantl, labath, probinson, JDevlieghere, jhenderson
Subscribers: hiraditya, MaskRay, cmtice, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D79962
Peter Collingbourne [Sat, 20 Jun 2020 02:06:14 +0000 (19:06 -0700)]
llvm-nm: Implement --special-syms.
Differential Revision: https://reviews.llvm.org/D82251
Aaron En Ye Shi [Wed, 27 May 2020 18:49:25 +0000 (18:49 +0000)]
Add Statically Linked Libraries
Add GNU Static Lib Tool, which supports the --emit-static-lib
flag. For HIP, a static library archive will be created and
consist of HIP Fat Binary host object with the device images embedded.
Using llvm-ar to create the static archive. Also, delete existing
output file to ensure a new archive is created each time.
Reviewers: yaxunl, tra, rjmccall, echristo
Subscribers: echristo, JonChesterfield, scchan, msearles
Differential Revision: https://reviews.llvm.org/D78759
Aaron En Ye Shi [Thu, 11 Jun 2020 18:36:10 +0000 (18:36 +0000)]
[HIP] Move HIP Linking Logic into HIP ToolChain
This patch is a follow up on https://reviews.llvm.org/D78759.
Extract the HIP Linker script from generic GNU linker,
and move it into HIP ToolChain. Update OffloadActionBuilder
Link actions feature to apply device linking and host linking
actions separately. Using MC Directives, embed the device images
and define symbols.
Reviewers: JonChesterfield, yaxunl
Subscribers: tra, echristo, jdoerfert, msearles, scchan
Differential Revision: https://reviews.llvm.org/D81963
Lei Zhang [Mon, 22 Jun 2020 19:32:21 +0000 (15:32 -0400)]
Use std::make_tuple instead initializer list
Hopefully this pleases GCC-5 and fixes the build error:
LowerExpectIntrinsic.cpp:62:53: error: converting to
'std::tuple<unsigned int, unsigned int>' from initializer list would use
explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(_U1&&,
_U2&&) [with _U1 = llvm::cl::opt<unsigned int>&; _U2 =
llvm::cl::opt<unsigned int>&; <template-parameter-2-3> = void; _T1 =
unsigned int; _T2 = unsigned int]'
return {LikelyBranchWeight, UnlikelyBranchWeight};
Differential Revision: https://reviews.llvm.org/D82325
Hans Wennborg [Mon, 22 Jun 2020 18:58:11 +0000 (20:58 +0200)]
Revert "[X86][SSE] MatchVectorAllZeroTest - handle OR vector reductions"
This caused a Chromium test to miscompile. See discussion on the Phabricator
review.
> This patch extends MatchVectorAllZeroTest to handle OR vector reduction patterns where the result is compared against zero.
>
> Fixes PR45378
>
> Differential Revision: https://reviews.llvm.org/D81547
This reverts
057c9c7ee00b7f7696065a3fc26a3df5ce3ebe96
Christopher Tetreault [Mon, 22 Jun 2020 17:46:53 +0000 (10:46 -0700)]
[SVE] Remove calls to VectorType::getNumElements from WebASM
Summary:
The getNumElements in base VectorType is being deprecated.
See: http://lists.llvm.org/pipermail/llvm-dev/2020-March/139811.html
Reviewers: efriedma, tlively, fpetrogalli, c-rhodes, dschuff
Reviewed By: tlively, dschuff
Subscribers: dschuff, sbc100, tschuett, jgravelle-google, hiraditya, aheejin, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82217
Craig Topper [Mon, 22 Jun 2020 19:20:40 +0000 (12:20 -0700)]
Revert "[X86] Calculate the needed size of the feature arrays in _cpu_indicator_init and getHostCPUName using the size of the feature enum."
Seems to breaking build.
This reverts commit
5ac144fe64c6911b5b6011cac1d61e0f82562e7f.
Craig Topper [Mon, 22 Jun 2020 03:20:04 +0000 (20:20 -0700)]
[X86] Remove encoding value from the X86_FEATURE and X86_FEATURE_COMPAT macro. NFCI
This was orignally done so we could separate the compatibility
values and the llvm internal only features into a separate entries
in the feature array. This was needed when we explicitly had to
convert the feature into the proper 32-bit chunk at every reference
and we didn't want things moving around.
Now everything is in an array and we have helper funtions or macros
to convert encoding to index. So we renumbering is no longer an
issue.