Matt Arsenault [Fri, 29 May 2020 00:38:16 +0000 (20:38 -0400)]
AMDGPU: Move MIMG MMO check to verifier
Christopher Tetreault [Sat, 30 May 2020 00:44:51 +0000 (17:44 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from AMDGPU
Reviewers: efriedma, david-arm, fpetrogalli, arsenm
Reviewed By: david-arm
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, tschuett, hiraditya, rkruppe, psnobl, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80328
Jared Wyles [Fri, 29 May 2020 23:11:42 +0000 (09:11 +1000)]
[jitlink] R_X86_64_PC32 support for the elf x86 jitlinker
Summary:
Adding in our first relocation type, and all the required plumbing to support the rest in following patches
Differential Revision: https://reviews.llvm.org/D80613
Reviewer: lhames
Christopher Tetreault [Fri, 29 May 2020 23:17:40 +0000 (16:17 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Linker
Reviewers: efriedma, tejohnson, sdesmalen, c-rhodes
Reviewed By: efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80326
LLVM GN Syncbot [Fri, 29 May 2020 23:53:23 +0000 (23:53 +0000)]
[gn build] Port
cf6cc662eee
LLVM GN Syncbot [Fri, 29 May 2020 23:53:22 +0000 (23:53 +0000)]
[gn build] Port
34cfed24ebd
Tony [Fri, 29 May 2020 23:03:50 +0000 (19:03 -0400)]
[AMDGPU] Add loaded code object path URI definition to AMDGPUUsage
Differential Revision: https://reviews.llvm.org/D80407
Nico Weber [Fri, 29 May 2020 23:49:11 +0000 (19:49 -0400)]
[gn build] (manually) port
0e265e31578
Tim Keith [Fri, 29 May 2020 23:39:13 +0000 (16:39 -0700)]
[flang][NFC] Remove link-time dependency of Evaluate on Semantics
Summary:
Some Symbol-related functions used in Evaluate were moved to
Evaluate/tools.h. This includes changing some member functions that were
replaced by non-member functions `IsDummy`, `GetUsedModule`, and
`CountLenParameters`.
Some member functions were made inline in `Scope`, `Symbol`,
`ArraySpec`, and `DeclTypeSpec`. The definitions were preceded by a
comment explaining why they are inline.
`IsConstantShape` was expanded inline in `IsDescriptor` because it isn't
used anywhere else
After this change, at least when compiling with clang on macos,
`libFortranEvaluate.a` has no undefined symbols that are satisfied by
`libFortranSemantics.a`.
Reviewers: klausler, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby
Reviewed By: PeteSteinfeld
Subscribers: llvm-commits
Tags: #flang, #llvm
Differential Revision: https://reviews.llvm.org/D80762
Thomas Raoux [Fri, 29 May 2020 23:34:56 +0000 (16:34 -0700)]
[mlir][spirv] Clean up coop matrix assembly declaration.
Address code review feedback and use declarative assembly format.
Differential Revision: https://reviews.llvm.org/D80687
Louis Dionne [Fri, 29 May 2020 23:32:55 +0000 (16:32 -0700)]
[libc++] Fix issues with the triviality of std::array
The Standard is currently unimplementable. We have to pick between:
1. Not implementing constexpr support properly in std::array<T, 0>
2. Making std::array<T, 0> non-trivial even when T is trivial
3. Returning nullptr from std::array<T, 0>::begin()
Libc++ initially picked (1). In
77b9abfc8e89, we started implementing constexpr properly, but lost the guarantee of triviality. Since it seems like both (1) and (2) are really important, it seems like (3) is the only viable option for libc++, after all. This is also what other implementations are doing.
This patch moves libc++ from (1) to (3).
It also:
- Improves the test coverage for the various ways of initializing std::array
- Adds tests for the triviality of std::array
- Adds tests for the aggregate-ness of std::array
Reviewed By: #libc, miscco, EricWF, zoecarver
Differential Revision: https://reviews.llvm.org/D80821
Volodymyr Sapsai [Fri, 29 May 2020 00:06:33 +0000 (17:06 -0700)]
[diagtool] Install diagtool when LLVM_INSTALL_TOOLCHAIN_ONLY is ON.
Not sure about other platforms but `install-xcode-toolchain` was already
including diagtool in the toolchain. This change makes it possible to
install diagtool during Apple's 2-stage build.
Instead of dropping `if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)` conditional
I've switched to `add_clang_tool` which handles install targets. Also a
few other clang tools like clang-format, clang-scan-deps are using this
macro, so it is good to be consistent.
rdar://problem/
15386909
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D80770
Christopher Tetreault [Fri, 29 May 2020 22:52:33 +0000 (15:52 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from X86
Reviewers: efriedma, sdesmalen, c-rhodes, craig.topper
Reviewed By: craig.topper
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80331
Adrian Herrera [Fri, 29 May 2020 22:59:58 +0000 (15:59 -0700)]
[libFuzzer] Fixed description of fuzzer merge control file.
Summary:
The description of the fuzzer merge control file appears to be incorrect/out of date.
No "DONE" line appears in the control file. Rather, FT and COV are the markers that appear
following the STARTED line.
Reviewers: metzman, kcc
Reviewed By: kcc
Subscribers: #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D80788
Nicolas Vasilache [Fri, 29 May 2020 21:29:35 +0000 (17:29 -0400)]
[mlir] Fix Windows build
Summary:
MSVC does not seem to like certain forward declarations.
https://reviews.llvm.org/D80728 introduces an error where
seemingly unrelated .cpp files that include the .h
(but do not otherwise use the class that depends on the forward declaration).
Instead of forward declaration, include the full vector ops definition.
Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, jurahul, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80841
Christopher Tetreault [Fri, 29 May 2020 22:41:06 +0000 (15:41 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from AggressiveInstCombine
Reviewers: efriedma, aymanmus, c-rhodes, david-arm
Reviewed By: david-arm
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80332
Christopher Tetreault [Fri, 29 May 2020 22:32:36 +0000 (15:32 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from AArch64
Reviewers: efriedma, c-rhodes, david-arm, mcrosier, t.p.northover
Reviewed By: efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, danielkiss, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80327
Valery N Dmitriev [Fri, 29 May 2020 01:24:03 +0000 (18:24 -0700)]
[SLP] Apply external to vectorizable tree users cost adjustment for
relevant aggregate build instructions only (UserCost).
Users are detected with findBuildAggregate routine and the trick is
that following SLP vectorization may end up vectorizing entire list
with smaller chunks. Cost adjustment then is applied for individual
chunks and these adjustments obviously have to be smaller than the
entire aggregate build cost.
Differential Revision: https://reviews.llvm.org/D80773
Nicolas Vasilache [Fri, 29 May 2020 22:07:39 +0000 (18:07 -0400)]
[mlir] NFC - Add debug information for Linalg transformations.
Address post-commit review of https://reviews.llvm.org/D79518
Christopher Tetreault [Fri, 29 May 2020 22:24:15 +0000 (15:24 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from InstCombine
Reviewers: efriedma, david-arm, fpetrogalli, spatel
Reviewed By: david-arm
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80334
Eric Schweitz [Fri, 22 May 2020 17:18:26 +0000 (10:18 -0700)]
[flang] Batch together the changes to the PFT intermediate data
structure for upstreaming to llvm-project.
These files have had many changes since they were originally upstreamed.
Some of the changes are cosmetic. Most of the functional changes were
done to support the lowering of control-flow syntax from the front-end
parse trees to the FIR dialect.
This patch is meant to be a reviewable size. The functionality it
provides will be used by code yet to be upstreamed in lowering.
review comments:
[review D80449][NFC] make PFT ParentVariant a ReferenceVariant
ReferenceVariant had to be slightly updated to also support
non constant references (which is required for ParentType).
[review D80449] extend Variable implementation beyond a comment
Christopher Tetreault [Fri, 29 May 2020 22:14:48 +0000 (15:14 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Instrumentation
Reviewers: efriedma, fpetrogalli, kmclaughlin
Reviewed By: fpetrogalli
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80335
Christopher Tetreault [Fri, 29 May 2020 21:34:56 +0000 (14:34 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Utils
Reviewers: efriedma, c-rhodes, sdesmalen, xbolva00
Reviewed By: c-rhodes
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80337
Diego Caballero [Fri, 29 May 2020 21:31:03 +0000 (14:31 -0700)]
[mlir][Affine] Minor clean-up of D79829
Addressing D79829 post-commit comments. Minor changes.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D80814
Fangrui Song [Fri, 29 May 2020 21:22:03 +0000 (14:22 -0700)]
[ELF] Add -z rel and -z rela
LLD supports both REL and RELA for static relocations, but emits either
of REL and RELA for dynamic relocations. The relocation entry format is
specified by each psABI.
musl ld.so supports both REL and RELA. For such ld.so implementations,
REL (.rel.dyn .rel.plt) has size benefits even if the psABI chooses RELA:
sizeof(Elf64_Rel)=16 < sizeof(Elf64_Rela)=24.
* COPY, GLOB_DAT and J[U]MP_SLOT always have 0 addend. A ld.so
implementation does not need to read the implicit addend.
REL is strictly better.
* A RELATIVE has a non-zero addend. Such relocations can be packed
compactly with the RELR relocation entry format, which is out of scope
of this patch.
* For other dynamic relocation types (e.g. symbolic relocation R_X86_64_64),
a ld.so implementation needs to read the implicit addend. REL may have
minor performance impact, because reading implicit addends forces
random access reads instead of being able to blast out a bunch of
writes while chasing the relocation array.
This patch adds -z rel and -z rela to change the relocation entry format
for dynamic relocations. I have tested that a -z rel produced x86-64
executable works with musl ld.so
-z rela may be useful for debugging purposes on processors whose psABIs
specify REL as the canonical format: addends can be easily read by a tool.
Reviewed By: grimar, mcgrathr
Differential Revision: https://reviews.llvm.org/D80496
Fangrui Song [Fri, 29 May 2020 18:16:23 +0000 (11:16 -0700)]
[CMake] Change target 'check' from 'check-llvm' to 'check-all'
Reviewed By: echristo, mehdi_amini
Differential Revision: https://reviews.llvm.org/D80823
Jonas Devlieghere [Fri, 29 May 2020 20:56:44 +0000 (13:56 -0700)]
[lldb/Test] Don't leak forked processes on Darwin
We are leaking forked processes on macOS because the cleanup function
was checking the existence of /proc/pid which does not exist on macOS.
I've changed the code to be platform agnostic.
Stanislav Mekhanoshin [Fri, 29 May 2020 20:49:38 +0000 (13:49 -0700)]
Revert "Process gep (phi ptr1, ptr2) in SROA"
This reverts commit
f66a43c11a7899d5c578b80d7f154abcea3b8d8e.
Matt Arsenault [Fri, 29 May 2020 20:28:22 +0000 (16:28 -0400)]
AMDGPU/GlobalISel: Add boilerplate for inline asm lowering
Test mostly from minor adjustments to the AArch64 one.
Tobias Bosch [Thu, 28 May 2020 22:40:43 +0000 (15:40 -0700)]
[DebugInfo][DAG] Don't reuse debug location on COPY if width changes.
Summary:
This caused incorrect debug information for parameters:
Previously, after a COPY of a parameter that changes the width,
we would emit a DBG_VALUE that continues to be associated to that
parameter, even though it now used a different width.
This made the LiveDebugValues pass assume the parameter value
got clobbered and it stopped tracking the parameter entry
value, leading to incorrect debug information.
Fixes https://bugs.llvm.org/show_bug.cgi?id=39715
Subscribers: aprantl, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80819
Stanislav Mekhanoshin [Thu, 30 Apr 2020 23:53:13 +0000 (16:53 -0700)]
Process gep (phi ptr1, ptr2) in SROA
Differential Revision: https://reviews.llvm.org/D79218
Florian Hahn [Fri, 29 May 2020 19:42:22 +0000 (20:42 +0100)]
[Matrix] Implement + and - operators for MatrixType.
This patch implements the + and - binary operators for values of
MatrixType. It adds support for matrix +/- matrix, scalar +/- matrix and
matrix +/- scalar.
For the matrix, matrix case, the types must initially be structurally
equivalent. For the scalar,matrix variants, the element type of the
matrix must match the scalar type.
Reviewers: rjmccall, anemet, Bigcheese, rsmith, martong
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D76793
Jan Korous [Wed, 29 Apr 2020 03:00:49 +0000 (20:00 -0700)]
[ASTMatchers] Matchers related to C++ inheritance
Differential Revision: https://reviews.llvm.org/D79063
Zequan Wu [Fri, 29 May 2020 19:15:07 +0000 (12:15 -0700)]
Add NoMerge MIFlag to avoid MIR branch folding
Let the codegen recognized the nomerge attribute and disable branch folding when the attribute is given
Differential Revision: https://reviews.llvm.org/D79537
paul_hoad [Fri, 29 May 2020 19:25:12 +0000 (20:25 +0100)]
[clang-format] Create a python documentation tool to generate a summary of the clang-format status for the whole of the LLVM project
Summary:
Any change to clang-format is tested with the unit tests, However sometimes the better approach is to run it over a very large fully formatted source tree and then inspect the differences. This seems to be a source of many of the regressions found by @krasimir and by @sylvestre.ledru and @Abpostelnicu who run it over the Mozilla sources, but often these regressions are only found after changes have been committed.
LLVM itself would be a good dog-fooding candidate for similar tests except such a large proportion of the tree is not 100% clang formatted, as such you are never aware if the change comes from a change to clang-format or just because the tree has not been formatted first.
The following review is for a small python tool which scans the whole of the LLVM source tree and counts the number of files which have one or more clang-format violations.
This revision contains the tool and the output from the initial run of the tool and the generated documentation which looks like the following
Reviewers: krasimir, JakeMerdichAMD, sammccall, curdeius, bollu, alexshap, jdoerfert, DavidTruby, sscalpone
Reviewed By: curdeius
Subscribers: dschuff, aheejin, fedor.sergeev, ilya-biryukov, simoncook, cryptoad, arphaman, jfb, kadircet, mstorsjo, s.egerton, usaxena95, aartbik, phosek, sstefan1, cfe-commits, sylvestre.ledru, Abpostelnicu, krasimir
Tags: #clang, #clang-format
Differential Revision: https://reviews.llvm.org/D80627
Jonas Devlieghere [Fri, 29 May 2020 17:26:38 +0000 (10:26 -0700)]
[lldb/CMake] Set both the BUILD and INSTALL RPATH on macOS (2/2)
This is also needed for lldb-test.
Matt Arsenault [Fri, 29 May 2020 18:58:20 +0000 (14:58 -0400)]
AMDGPU: Remove fp-exceptions feature
This was never used, and the only thing it changed was removed in
284472be6da3353d81dfd25b1ac4218e852d1e5f. The floating point mode is
also not a property of the subtarget.
Ehud Katz [Fri, 29 May 2020 19:15:26 +0000 (22:15 +0300)]
[tests] Fix AMDGPU test
Fix naming issue in test due to change D80399.
Stanislav Mekhanoshin [Fri, 29 May 2020 19:08:47 +0000 (12:08 -0700)]
[AMDGPU] Regenrated urem/udiv global isel tests. NFC.
Nicolas Vasilache [Fri, 29 May 2020 17:09:55 +0000 (13:09 -0400)]
[mlir][Linalg] Make contraction vectorization use vector transfers
This revision replaces the load + vector.type_cast by appropriate vector transfer
operations. These play more nicely with other vector abstractions and canonicalization
patterns and lower to load/store with or without masks when appropriate.
Differential Revision: https://reviews.llvm.org/D80809
Sourabh Singh Tomar [Fri, 29 May 2020 18:52:40 +0000 (00:22 +0530)]
[DWARF5] Replace emission of strp with stx forms in debug_macro section
DW_MACRO_define_strx forms are supported now in llvm-dwarfdump and these
forms can be used in both debug_macro[.dwo] sections. An added advantage
for using strx forms over strp forms is that it uses indices
approach instead of a relocation to debug_str section.
This patch unify the emission for debug_macro section.
Reviewed by: dblaikie, ikudrin
Differential Revision: https://reviews.llvm.org/D78865
Sourabh Singh Tomar [Fri, 29 May 2020 18:27:35 +0000 (23:57 +0530)]
[DWARF5] Added support for .debug_macro.dwo section in llvm-dwarfdump
This patch extends the parsing and dumping support of llvm-dwarfdump
for debug_macro.dwo section.
Following forms are supported:
- DW_MACRO_define
- DW_MACRO_undef
- DW_MACRO_start_file
- DW_MACRO_end_file
- DW_MACRO_define_strx
- DW_MACRO_undef_strx
- DW_MACRO_define_strp
- DW_MACRO_undef_strp
Reviewed by: ikudrin, dblaikie
Differential Revision: https://reviews.llvm.org/D78500
Christopher Tetreault [Fri, 29 May 2020 17:06:26 +0000 (10:06 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from Vectorize
Reviewers: efriedma, c-rhodes, david-arm, fhahn
Reviewed By: david-arm
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80339
Ehud Katz [Fri, 29 May 2020 18:07:48 +0000 (21:07 +0300)]
[Local] Prevent `invertCondition` from creating a redundant instruction
Prevent `invertCondition` from creating the inversion instruction, in
case the given value is an argument which has already been inverted.
Note that this approach has already been taken in case the given value
is an instruction (and not an argument).
Differential Revision: https://reviews.llvm.org/D80399
Eduardo Caldas [Fri, 29 May 2020 18:03:58 +0000 (20:03 +0200)]
Add support for Overloaded Binary Operators in SyntaxTree
Reviewers: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80812
Sam Clegg [Fri, 29 May 2020 01:39:27 +0000 (18:39 -0700)]
[WebAssembly] Add placeholders for R_WASM_TABLE_INDEX_REL_SLEB relocations
Previously in the object format we punted on this and simply wrote
zeros (and didn't include the function in the elem segment). With
this change we write a meaningful value which is the segment
relative table index of the associated function.
This matches the that wasm-ld produces in `-r` mode. This inconsistency
between the output the MC object writer and the wasm-ld object
writer could cause warnings to be emitted when reading back in the
output of `wasm-ld -r`. See:
https://github.com/emscripten-core/emscripten/issues/11217
This only applies to this one relocation type which is only generated
when compiling in PIC mode.
Differential Revision: https://reviews.llvm.org/D80774
Sanjay Patel [Fri, 29 May 2020 17:44:52 +0000 (13:44 -0400)]
[SLP] auto-generate complete test checks; NFC
Craig Topper [Fri, 29 May 2020 17:38:21 +0000 (10:38 -0700)]
[X86] Ignore large code model in X86FastISel::X86MaterializeFP in 32-bit mode
Large code model doesn't mean anything to 32-bit mode. But nothing
prevents it from being set. Ignore to avoid generating 64-bit mode
only instructions.
Differential Revision: https://reviews.llvm.org/D80768
Anna Bulanova [Fri, 29 May 2020 17:09:52 +0000 (13:09 -0400)]
[SVE] Replace deprecated call in changeVectorElementTypeToInteger
Summary:
Replace getVectorNumElements with getVectorElementCount;
gets rid of the warnings in several tests
Reviewers: sdesmalen, kmclaughlin, dancgr, efriedma, each, andwar, rengolin
Reviewed By: efriedma
Subscribers: tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80746
Craig Topper [Fri, 29 May 2020 07:15:09 +0000 (00:15 -0700)]
[X86] Remove isel pattern for MMX_X86movdq2q+simple_load. Replace with DAG combine to to loadmmx.
Only 64-bit bits will be loaded, not the whole 128 bits. We can
just combine it to plain mmx load. This has the side effect of
enabling isel load folding for it.
This part of my desire to get rid of isel patterns that shrink loads.
Anchu Rajendran [Thu, 28 May 2020 05:46:04 +0000 (11:16 +0530)]
[MLIR][OpenMP] Defined master operation in OpenMP Dialect
Summary:
Implemented the basic changes for defining master operation in OpenMP.
It uses the generic parser and printer.
Reviewed By: kiranchandramohan, ftynse
Differential Revision: https://reviews.llvm.org/D80689
Ehud Katz [Fri, 29 May 2020 17:12:44 +0000 (20:12 +0300)]
[PrintSCC] Fix printing a basic-block without a name
Print a basic-block as an operand to handle the case where it has no
name.
Differential Revision: https://reviews.llvm.org/D80552
Sanjay Patel [Fri, 29 May 2020 17:13:27 +0000 (13:13 -0400)]
[LoopVectorize] auto-generate complete test checks; NFC
Xiangling Liao [Fri, 29 May 2020 15:41:10 +0000 (11:41 -0400)]
[AIX] Emit AvailableExternally Linkage on AIX
Since on AIX, our strategy is to not use -u to suppress any undefined
symbols, we need to emit .extern for the symbols with AvailableExternally
linkage.
Differential Revision: https://reviews.llvm.org/D80642
Christopher Tetreault [Fri, 29 May 2020 16:47:43 +0000 (09:47 -0700)]
[SVE] Eliminate calls to default-false VectorType::get() from polly
Reviewers: bollu, efriedma, david-arm, fpetrogalli, gchatelet
Reviewed By: fpetrogalli
Subscribers: tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D80341
Sanjay Patel [Fri, 29 May 2020 17:02:45 +0000 (13:02 -0400)]
[LoopVectorize] regenerate test checks; NFC
Align attributes are now visible.
Sanjay Patel [Fri, 29 May 2020 16:29:09 +0000 (12:29 -0400)]
[LoopVectorize] auto-generate complete checks; NFC
Sanjay Patel [Fri, 29 May 2020 16:19:46 +0000 (12:19 -0400)]
[LoopVectorize] regenerate test checks; NFC
Align attributes are now visible.
Sanjay Patel [Fri, 29 May 2020 16:18:34 +0000 (12:18 -0400)]
[LoopVectorize] auto-generate complete test checks; NFC
Paul Robinson [Thu, 28 May 2020 20:19:52 +0000 (13:19 -0700)]
Preserve DbgLoc when DeadArgumentElimination rewrites a 'ret'.
Fixes PR46002.
David Green [Fri, 29 May 2020 15:26:44 +0000 (16:26 +0100)]
[ConstantFolding] Constant folding for integer vector reduce intrinsics
This add constant folding for all the integer vector reduce intrinsics,
providing that the argument is a constant vector. zeroinitializer always
produces 0 for all intrinsics, and other values can be handled with
APInt operators.
Differential Revision: https://reviews.llvm.org/D80516
Adrian Prantl [Fri, 29 May 2020 16:45:43 +0000 (09:45 -0700)]
Let @skipUnlessUndefinedBehaviorSanitizer imply @skipIfAsan
Don't run tests that use undefined behavior sanitizer inside an
address-sanitized LLDB. The tests don't support that
configuration. Incidentally they were skipped on green dragon for a
different reason, so this hasn't come up there before.
Adrian Prantl [Fri, 29 May 2020 16:43:02 +0000 (09:43 -0700)]
Let @skipUnlessThreadSanitizer imply @skipIfAsan
Don't run tests that use thread sanitizer inside an address-sanitized
LLDB. The tests don't support that configuration. Incidentally they
were skipped on green dragon for a different reason, so this hasn't
come up there before.
Guozhi Wei [Fri, 29 May 2020 16:31:26 +0000 (09:31 -0700)]
[DAGCombiner] Add command line options to guard store width reduction
optimizations
As discussed in the thread http://lists.llvm.org/pipermail/llvm-dev/2020-May/141838.html,
some bit field access width can be reduced by ReduceLoadOpStoreWidth, some
can't. If two accesses are very close, and the first access width is reduced,
the second is not. Then the wide load of second access will be stalled for long
time.
This patch add command line options to guard ReduceLoadOpStoreWidth and
ShrinkLoadReplaceStoreWithStore, so users can use them to disable these
store width reduction optimizations.
Differential Revision: https://reviews.llvm.org/D80745
Kevin P. Neal [Fri, 29 May 2020 16:19:33 +0000 (12:19 -0400)]
[X86] Fix errors in use of strictfp attribute.
Errors spotted with use of: https://reviews.llvm.org/D68233
Stanislav Mekhanoshin [Thu, 28 May 2020 22:30:23 +0000 (15:30 -0700)]
GlobalISel: fix CombinerHelper::matchEqualDefs()
This matcher was always returning true for the different
results of a same instruction.
Differential Revision:
Kevin P. Neal [Fri, 29 May 2020 16:17:23 +0000 (12:17 -0400)]
Fix errors in use of strictfp attribute.
Errors spotted with use of: https://reviews.llvm.org/D68233
Kevin P. Neal [Fri, 29 May 2020 16:15:54 +0000 (12:15 -0400)]
Fix errors in use of strictfp attribute.
Errors spotted with use of: https://reviews.llvm.org/D68233
Kevin P. Neal [Fri, 29 May 2020 16:11:57 +0000 (12:11 -0400)]
Fix errors in use of strictfp attribute.
Errors spotted with use of: https://reviews.llvm.org/D68233
David Sherwood [Wed, 27 May 2020 14:00:00 +0000 (15:00 +0100)]
[CodeGen] Fix warning in visitShuffleVector
Make sure we only ask for the number of elements after we've
bailed out for scalable vectors.
Differential revision: https://reviews.llvm.org/D80632
Gabor Marton [Fri, 15 May 2020 09:25:40 +0000 (11:25 +0200)]
[analyzer] StdLibraryFunctionsChecker: Add support to lookup types
Summary:
In this patch I am trying to get rid of the `Irrelevant` types from the
signatures of the functions from the standard C library. For that I've
introduced `lookupType()` to be able to lookup arbitrary types in the global
scope. This makes it possible to define the signatures precisely.
Note 1) `fread`'s signature is now fixed to have the proper `FILE *restrict`
type when C99 is the language.
Note 2) There are still existing `Irrelevant` types, but they are all from
POSIX. I am planning to address those together with the missing POSIX functions
(in D79433).
Reviewers: xazax.hun, NoQ, Szelethus, balazske
Subscribers: whisperity, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, Charusso, steakhal, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80016
Jay Foad [Fri, 29 May 2020 15:35:21 +0000 (16:35 +0100)]
[AMDGPU] Remove duplicate test cases
The two "2sin" test cases were identical to the "sin_2x" test cases just
above.
Fred Riss [Fri, 29 May 2020 15:29:11 +0000 (08:29 -0700)]
[lldb/test] Fix TestAppleSimulatorOSType when multiple runtimes are installed
One can have multiple simulator runtimes installed, supporting
various generations of OSs. The logic in TestAppleSimulatorOSType
might select a rnutime older than the one targeted by the current
tools, preventing the executable from running. This commit changes
the test to look for the most recent runtime available instead.
Saleem Abdulrasool [Fri, 29 May 2020 15:25:35 +0000 (08:25 -0700)]
unwind: use a more portable endianness check in EHABI
The ARM specific code was trying to determine endianness using the
`__LITTLE_ENDIAN__` macro which is not guaranteed to be defined.
When not defined, it makes libunwind to build the big-endian code even
when the compiler builds for a little-endian target.
This change allows building libunwind with the `musl-gcc` toolchain
which does not define `__LITTLE_ENDIAN__`. Use `__BYTE_ORDER__`
instead.
Patch by Idan Freiberg!
David Green [Fri, 29 May 2020 13:45:08 +0000 (14:45 +0100)]
[ARM] Extra MVE VMLAV reduction patterns
These patterns for i8 and i16 VMLA's were missing. They end up from
legalized vector.reduce.add.v8i16 and vector.reduce.add.v16i8, and
although the instruction works differently (the mul and add are
performed in a higher precision), I believe it is OK because only an
i8/i16 are demanded from them, and so the results will be the same. At
least, they pass any testing I can think to run on them.
There are some tests that end up looking worse, but are quite artificial
due to passing half vector types through a call boundary. I would not
expect the vmull to realistically come up like that, and a vmlava is
likely better a lot of the time.
Differential Revision: https://reviews.llvm.org/D80524
diggerlin [Fri, 29 May 2020 15:08:51 +0000 (11:08 -0400)]
[AIX][XCOFF] add symbol priority for the llvm-objdump -D -symbol-description
SUMMARY:
when there are two symbol has the same address. llvm-objdump -D -symbol-description will select symbol based on the following rule:
1. using Label first if there is a Label symbol.
2. If there is not Label, using a symbol which has Storage Mapping class.
3. if more than one symbol has storage mapping class, put the TC0 has the low priority, for other storage mapping class , compare based on the value.
Reviewers: James Henderson ,hubert.reinterpretcast,
Differential Revision: https://reviews.llvm.org/D78387
Pushpinder Singh [Fri, 29 May 2020 09:39:43 +0000 (05:39 -0400)]
Remove SVN logic from find_first_existing_vc_file
As LLVM has moved from SVN to git, there is no need to
keep SVN related code. Also, this code piece was never used.
Differential Revision: https://reviews.llvm.org/D79400
Mariya Podchishchaeva [Fri, 29 May 2020 12:41:37 +0000 (15:41 +0300)]
[OpenMP][SYCL] Improve diagnosing of unsupported types usage
Summary:
Diagnostic is emitted if some declaration of unsupported type
declaration is used inside device code.
Memcpy operations for structs containing member with unsupported type
are allowed. Fixed crash on attempt to emit diagnostic outside of the
functions.
The approach is generalized between SYCL and OpenMP.
CUDA/OMP deferred diagnostic interface is going to be used for SYCL device.
Reviewers: rsmith, rjmccall, ABataev, erichkeane, bader, jdoerfert, aaron.ballman
Reviewed By: jdoerfert
Subscribers: guansong, sstefan1, yaxunl, mgorny, bader, ebevhan, Anastasia, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D74387
Dmitri Gribenko [Fri, 29 May 2020 14:47:23 +0000 (16:47 +0200)]
Move unittest helpers to a shared location
Summary:
unittests/AST/Language.h defines some helpers that we would like to
reuse in other tests, for example, in tests for syntax trees.
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: mgorny, martong, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80792
Gabor Marton [Tue, 7 Apr 2020 15:57:50 +0000 (17:57 +0200)]
[analyzer] StdLibraryFunctionsChecker: Add sanity checks for constraints
Summary:
Once we found a matching FunctionDecl for the given summary then we
validate the given constraints against that FunctionDecl. E.g. we
validate that a NotNull constraint is applied only on arguments that
have pointer types.
This is needed because when we matched the signature of the summary we
were working with incomplete function types, i.e. some intricate type
could have been marked as `Irrelevant` in the signature.
Reviewers: NoQ, Szelethus, balazske
Subscribers: whisperity, xazax.hun, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, Charusso, steakhal, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77658
Pushpinder Singh [Fri, 29 May 2020 05:22:48 +0000 (01:22 -0400)]
Fix build failure when source is read only
cmake configure fails when it tries to setup target for llvm_vcsrevision_h
This happens only when source is checked out using repo in a read
only filesystem, because cmake tries to create `.git/logs/HEAD` file.
This patch:
1. Recovers from failure gracefully.
2. Ensures that VCSRevision.h is successfully created and updated
in above scenarios.
Differential Revision: https://reviews.llvm.org/D79400
David Sherwood [Thu, 28 May 2020 15:33:44 +0000 (16:33 +0100)]
[SVE] Remove getNumElements() calls in visitGetElementPtrInst
Replace calls to getNumElements() with getElementCount() in order
to avoid warnings for scalable vectors. The warnings were discovered
by this existing test:
test/CodeGen/AArch64/sve-gep.ll
Differential revision: https://reviews.llvm.org/D80782
Gabor Marton [Tue, 31 Mar 2020 15:41:10 +0000 (17:41 +0200)]
[analyzer] ApiModeling: Add buffer size arg constraint with multiplier involved
Summary:
Further develop the buffer size argumentum constraint so it can handle sizes
that we can get by multiplying two variables.
Reviewers: Szelethus, NoQ, steakhal
Subscribers: whisperity, xazax.hun, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, Charusso, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77148
David Sherwood [Wed, 27 May 2020 10:41:25 +0000 (11:41 +0100)]
[CodeGen] Fix warnings in LowerToPredicatedOp
When creating a new vector type based on another vector type we
should pass in the element count instead of the number of elements
and scalable flag separately.
I encountered this warning whilst compiling this test:
CodeGen/AArch64/sve-intrinsics-int-compares.ll
Differential revision: https://reviews.llvm.org/D80621
Gabor Marton [Mon, 30 Mar 2020 15:47:48 +0000 (17:47 +0200)]
[analyzer] ApiModeling: Add buffer size arg constraint
Summary:
Introducing a new argument constraint to confine buffer sizes. It is typical in
C APIs that a parameter represents a buffer and another param holds the size of
the buffer (or the size of the data we want to handle from the buffer).
Reviewers: NoQ, Szelethus, Charusso, steakhal
Subscribers: whisperity, xazax.hun, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, gamesh411, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77066
Hendrik Greving [Thu, 28 May 2020 00:12:58 +0000 (17:12 -0700)]
[ModuloSchedule] Allow illegal phis to be moved across stages.
Fixes a trivial but impactful bug where we did not move illegal phis across stages. This
led to incorrect mappings in certain cases.
Georgii Rymar [Thu, 28 May 2020 14:42:42 +0000 (17:42 +0300)]
[llvm-readobj] - Cleanup the DwarfCFIEH::PrinterContext class. NFCI.
It would be nice to switch to `reportUniqueWarnings` from
`reportError` in this class, but first of all it needs a cleanup.
This patch:
1) Eliminates autos.
2) Removes code duplication.
3) Changes how the code works with `Expected<>`.
4) Introduces 2 new `using`s to make the code a bit shorter.
Differential revision: https://reviews.llvm.org/D80726
Sanjay Patel [Fri, 29 May 2020 13:31:11 +0000 (09:31 -0400)]
[DAGCombiner] avoid unnecessary indirection from SDNode/SDValue; NFCI
Igor Kudrin [Fri, 29 May 2020 12:28:37 +0000 (19:28 +0700)]
[llvm-objcopy][ELF] Fix removing a group member.
When a group member is removed, the corresponding record in the
SHT_GROUP section has to be deleted.
This fixes PR46064.
Differential Revision: https://reviews.llvm.org/D80568
Igor Kudrin [Fri, 29 May 2020 12:27:28 +0000 (19:27 +0700)]
[llvm-objcopy][ELF] Fix removing SHT_GROUP sections.
When a SHT_GROUP section is removed, but other sections of the group are
kept, the SHF_GROUP flag of these sections should be dropped, otherwise
the resulting ELF file will be malformed.
Differential Revision: https://reviews.llvm.org/D80511
Simon Pilgrim [Fri, 29 May 2020 12:56:45 +0000 (13:56 +0100)]
TextStubCommon.h - move StringSwitch.h include to TextStubCommon.cpp. NFC.
Only TextStubCommon.cpp actually uses StringSwitch
Simon Pilgrim [Fri, 29 May 2020 12:44:06 +0000 (13:44 +0100)]
TextAPIContext.h - remove unused MemoryBuffer.h include. NFC.
Sanjay Patel [Fri, 29 May 2020 12:57:08 +0000 (08:57 -0400)]
[AArch64][x86] add tests for FMA combines; NFC
Dmitri Gribenko [Fri, 29 May 2020 12:12:51 +0000 (14:12 +0200)]
Rename APIs in unittests/AST/Language.h in preparation to share them
Summary:
Declaring these helpers in the ast_matcher namespace in the clangAST
unit test seems inappropriate -- neither these helpers, nor clangAST have
anything to do with AST matchers. Therefore, I moved these helpers to
the clang namespace.
Declaring another typedef called "ArgVector" is not a good idea -- we
already have both "ArgVector", "ArgsVector", and "ArgList". I expanded
it into the underlying type.
Declaring another enum called "Language" is not a good idea because we
arleady have the "clang::Language" enum. I renamed it to
"TestLanguage".
Similarly, I renamed "getBasicRunOptionsForLanguage" to
"getCommandLineArgsForTesting" to explain the semantics better (what are
"run options"?) and not repeat types in the function name
("ForLanguage").
Reviewers: shafik, rengolin, sammccall
Reviewed By: sammccall
Subscribers: gribozavr2, sammccall, martong, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80786
Mateusz Mikuła [Fri, 29 May 2020 12:09:44 +0000 (15:09 +0300)]
[clang] [MinGW] Fix libunwind extension
Differential Revision: https://reviews.llvm.org/D79995
Martin Storsjö [Wed, 29 Apr 2020 19:19:48 +0000 (22:19 +0300)]
[clang] [Darwin] Add reverse mappings for aarch64/aarch64_32 to darwin arch names
These are mapped in MachO::getMachOArchName already, but were missing
in ToolChain::getDefaultUniversalArchName.
Having these reverse mapped here fixes weird inconsistencies like
-dumpmachine showing a target triple like "aarch64-apple-darwin",
while "clang -target aarch64-apple-darwin" didn't use to work (ended
up mapped as unknown-apple-ios).
Differential Revision: https://reviews.llvm.org/D79117
Florian Hahn [Fri, 29 May 2020 11:53:30 +0000 (12:53 +0100)]
[DAGComb] Do not turn insert_elt into shuffle for single elt vectors.
Currently combineInsertEltToShuffle turns insert_vector_elt into a
vector_shuffle, even if the inserted element is a vector with a single
element. In this case, it should be unlikely that the additional shuffle
would be more efficient than a insert_vector_elt.
Additionally, this fixes a infinite cycle in DAGCombine, where
combineInsertEltToShuffle turns a insert_vector_elt into a shuffle,
which gets turned back into a insert_vector_elt/extract_vector_elt by
a custom AArch64 lowering (in visitVECTOR_SHUFFLE).
Such insert_vector_elt and extract_vector_elt combinations can be
lowered efficiently using mov on AArch64.
There are 2 test changes in arm64-neon-copy.ll: we now use one or two
mov instructions instead of a single zip1. The reason that we need a
second mov in ins1f2 is that we have to move the result to the result
register and is not really related to the DAGCombine fold I think.
But in any case, on most uarchs, mov should be cheaper than zip1. On a
Cortex-A75 for example, zip1 is twice as expensive as mov
(https://developer.arm.com/docs/101398/latest/arm-cortex-a75-software-optimization-guide-v20)
Reviewers: spatel, efriedma, dmgreen, RKSimon
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D80710
Nicolas Vasilache [Fri, 29 May 2020 12:01:15 +0000 (08:01 -0400)]
[mlir][Linalg][Vector] Add forwarding patterns between linalg.copy and vector.transfer
This revision adds custom rewrites for patterns that arise during linalg structured
ops vectorization. These patterns allow the composition of linalg promotion,
vectorization and removal of redundant copies.
The patterns are voluntarily limited and restrictive atm.
More robust behavior will be implemented once more powerful side effect modeling and analyses are available on view/subview.
On the transfer_read side, the following pattern is rewritten:
```
%alloc = ...
[optional] %view = std.view %alloc ...
%subView = subview %allocOrView ...
[optional] linalg.fill(%allocOrView, %cst) ...
...
linalg.copy(%in, %subView) ...
vector.transfer_read %allocOrView[...], %cst ...
```
into
```
[unchanged] %alloc = ...
[unchanged] [optional] %view = std.view %alloc ...
[unchanged] [unchanged] %subView = subview %allocOrView ...
...
vector.transfer_read %in[...], %cst ...
```
On the transfer_write side, the following pattern is rewriten:
```
%alloc = ...
[optional] %view = std.view %alloc ...
%subView = subview %allocOrView...
...
vector.transfer_write %..., %allocOrView[...]
linalg.copy(%subView, %out)
```
Differential Revision: https://reviews.llvm.org/D80728
Xing GUO [Fri, 29 May 2020 11:56:32 +0000 (19:56 +0800)]
[ObjectYAML][DWARF] Make the `PubSection` optional.
This patch helps make the `PubSection` optional in the DWARF structure.
Reviewed By: jhenderson, aprantl
Differential Revision: https://reviews.llvm.org/D80722
Kadir Cetinkaya [Fri, 29 May 2020 10:31:35 +0000 (12:31 +0200)]
[clangd][NFC] Add traces for PreamblePatch::create