Dylan McKay [Thu, 12 Mar 2020 11:03:30 +0000 (00:03 +1300)]
[AVR] Fix read of uninitialized variable AVRSubtarget:::ELFArch
Found by the LLVM MemorySanitizer tests when switching AVR to a default
backend.
ELFArch must be initialized before the call to
initializeSubtargetDependencies().
The uninitialized read would occur deep within TableGen'd code.
Sam McCall [Thu, 12 Mar 2020 09:55:31 +0000 (10:55 +0100)]
[clangd] Redirect documentation to clangd.llvm.org.
Reviewers: hokein
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76053
Max Kazantsev [Thu, 12 Mar 2020 10:13:07 +0000 (17:13 +0700)]
[LoopPeel] Turn incorrect assert into a check
Summary:
This patch replaces incorrectt assert with a check. Previously it asserts that
if SCEV cannot prove `isKnownPredicate(A != B)`, then it should be able to prove
`isKnownPredicate(A == B)`.
Both these fact may be not provable. It is shown in the provided test:
Could not prove: `{-294,+,-2}<%bb1> != 0`
Asserting: `{-294,+,-2}<%bb1> == 0`
Obviously, this SCEV is not equal to zero, but 0 is in its range so we cannot
also prove that it is not zero.
Instead of assert, we should be checking the required conditions explicitly.
Reviewers: lebedev.ri, fhahn, sanjoy, fedor.sergeev
Reviewed By: lebedev.ri
Subscribers: hiraditya, zzheng, javed.absar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76050
Marcel Hlopko [Thu, 12 Mar 2020 09:53:54 +0000 (10:53 +0100)]
[AST] Respect shouldTraversePostOrder when traversing type locs
Summary: Copy of https://reviews.llvm.org/D72072, submitting with ilya-biryukov's permission.
Reviewers: gribozavr2
Reviewed By: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76001
Marek Kurdej [Thu, 14 Nov 2019 22:20:24 +0000 (23:20 +0100)]
[libc++] [P0646] Add feature-test macro for __cpp_lib_list_remove_return_type.
Summary: The return type modification has already been implemented in rL364840 and rL365290.
Reviewers: ldionne, mclow.lists, EricWF, #libc!
Reviewed By: ldionne
Subscribers: christof, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D70275
Tyker [Wed, 11 Mar 2020 23:39:05 +0000 (00:39 +0100)]
Basis of dropping uses in llvm.assume.
Summary: This patch adds the basic utilities to deal with dropable uses. dropable uses are uses that we rather drop than prevent transformations, for now they are limited to uses in llvm.assume.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: uenoku, lebedev.ri, mgorny, hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D73404
Tyker [Wed, 11 Mar 2020 23:35:27 +0000 (00:35 +0100)]
[NFC] Add filters to hasNItems and hasNItemsOrMore
Reviewers: lebedev.ri, jdoerfert
Reviewed By: jdoerfert
Subscribers: jdoerfert, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74967
Qiu Chaofan [Thu, 12 Mar 2020 09:02:54 +0000 (17:02 +0800)]
[PowerPC] Add strict-fp intrinsic to FP arithmetic
This patch adds basic strict-fp intrinsics support to PowerPC backend,
including basic arithmetic operations (add/sub/mul/div).
Reviewed By: steven.zhang, andrew.w.kaylor
Differential Revision: https://reviews.llvm.org/D63916
Roman Lebedev [Thu, 12 Mar 2020 08:33:38 +0000 (11:33 +0300)]
[SCEV] isHighCostExpansionHelper(): use correct TTI hooks
Summary:
Cost modelling strikes again.
In PR44668 <https://bugs.llvm.org/show_bug.cgi?id=44668> patch series,
i've made the same mistake of always using generic `getOperationCost()`
that i missed in reviewing D73480/D74495 which was later fixed
in
62dd44d76da9aa596fb199bda8b1e8768bb41033.
We should be using more specific hooks instead - `getCastInstrCost()`,
`getArithmeticInstrCost()`, `getCmpSelInstrCost()`.
Evidently, this does not have an effect on the existing testcases,
with unchanged default cost budget. But if it *does* have an effect
on some target, we'll have to segregate tests that use this function
per-target, much like we already do with other TTI-aware transform tests.
There's also an issue that @samparker has brought up in post-commit-review:
>>! In D73501#1905171, @samparker wrote:
> Hi,
> Did you get performance numbers for these patches? We track the performance
> of our (Arm) open source DSP library and the cost model fixes were generally
> a notable improvement, so many thanks for that! But the final patch
> for rewriting exit values has generally been bad, especially considering
> the gains from the modelling improvements. I need to look into it further,
> but on my current test case I'm seeing +30% increase in stack accesses
> with a similar decrease in performance.
> I'm just wondering if you observed any negative effects yourself?
I don't know if this addresses that, or we need D66450 for that.
Reviewers: samparker, spatel, mkazantsev, reames, wmi
Reviewed By: reames
Subscribers: kristof.beyls, hiraditya, danielkiss, llvm-commits, samparker
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75908
Dominik Montada [Thu, 12 Mar 2020 08:03:08 +0000 (09:03 +0100)]
[GlobalISel] fix crash in narrowScalarExtract if DstRegs only has one register
Summary: When narrowing a scalar G_EXTRACT where the destination lines up perfectly with a single result of the emitted G_UNMERGE_VALUES a COPY should be emitted instead of unconditionally trying to emit a G_MERGE_VALUES.
Reviewers: arsenm, dsanders
Reviewed By: arsenm
Subscribers: wdng, rovka, hiraditya, volkan, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75743
Sebastian Neubauer [Tue, 10 Mar 2020 12:14:20 +0000 (13:14 +0100)]
[AMDGPU] Use progbits type for .AMDGPU.disasm section
The note section type implies a specific format that this section does
not have thus tools like readelf fail here. Progbits has no format and
another pipeline compiler already sets the type to progbits.
Differential Revision: https://reviews.llvm.org/D75913
Clement Courbet [Thu, 12 Mar 2020 07:49:51 +0000 (08:49 +0100)]
[ExpandMemCmp][NFC] Add more tests.
Tres Popp [Thu, 12 Mar 2020 07:22:35 +0000 (08:22 +0100)]
Remove unused variable.
Delete dead code from
8fffa40400e8719222e7f67152c12738521fa9fb.
Shengchen Kan [Tue, 3 Mar 2020 08:54:23 +0000 (16:54 +0800)]
[X86] Reduce the number of emitted fragments due to branch align
Summary:
Currently, a BoundaryAlign fragment may be inserted after the branch
that needs to be aligned to truncate the current fragment, this fragment is
unused at most of time. To avoid that, we can insert a new empty Data
fragment instead. Non-relaxable instruction is usually emitted into Data
fragment, so the inserted empty Data fragment will be reused at a high
possibility.
Reviewers: annita.zhang, reames, MaskRay, craig.topper, LuoYuanke, jyknight
Reviewed By: reames, LuoYuanke
Subscribers: llvm-commits, dexonsmith, hiraditya
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75438
Juneyoung Lee [Thu, 12 Mar 2020 07:37:01 +0000 (16:37 +0900)]
Apply update_test_check.py to CodeGenPrepare/X86/freeze-icmp.ll test
Djordje Todorovic [Wed, 11 Mar 2020 07:25:01 +0000 (08:25 +0100)]
[DebugInfo] Fix build failure on the mingw
Add the workaround for the X86::MOV16ri when describing call site
parameters.
Dylan McKay [Thu, 12 Mar 2020 06:53:21 +0000 (19:53 +1300)]
Revert "[AVR] Include AVR by default in LLVM builds"
This reverts commit
dfecec65e6796c075aebe50e88260a33aa2efd06.
Merging the change revealed that there is a failure on the memory
sanitizer bots.
Command Output (stderr):
--
==3569==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x1d71bff in
llvm::AVRSubtarget::ParseSubtargetFeatures(llvm::StringRef,
llvm::StringRef)
/b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/lib/Target/AVR/AVRGenSubtargetInfo.inc:471:7
#1 0x1d721f8 in initializeSubtargetDependencies
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AVR/AVRSubtarget.cpp:50:3
#2 0x1d721f8 in llvm::AVRSubtarget::AVRSubtarget(llvm::Triple
const&, std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&, std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
llvm::AVRTargetMachine const&)
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AVR/AVRSubtarget.cpp:33:18
#3 0x1d3077f in
llvm::AVRTargetMachine::AVRTargetMachine(llvm::Target const&,
llvm::Triple const&, llvm::StringRef, llvm::StringRef,
llvm::TargetOptions const&, llvm::Optional<llvm::Reloc::Model>,
llvm::Optional<llvm::CodeModel::Model>, llvm::CodeGenOpt::Level, bool)
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Target/AVR/AVRTargetMachine.cpp:52:7
#4 0x1d3169d in
llvm::RegisterTargetMachine<llvm::AVRTargetMachine>::Allocator(llvm::Target
const&, llvm::Triple const&, llvm::StringRef, llvm::StringRef,
llvm::TargetOptions const&, llvm::Optional<llvm::Reloc::Model>,
llvm::Optional<llvm::CodeModel::Model>, llvm::CodeGenOpt::Level, bool)
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/Support/TargetRegistry.h:1121:16
#5 0x86662f in createTargetMachine
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/Support/TargetRegistry.h:402:12
#6 0x86662f in compileModule(char**, llvm::LLVMContext&)
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/tools/llc/llc.cpp:473:52
#7 0x861f42 in main
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/tools/llc/llc.cpp:356:22
#8 0x7f76f7b072e0 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
#9 0x7ebbc9 in _start
(/b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llc+0x7ebbc9)
SUMMARY: MemorySanitizer: use-of-uninitialized-value
/b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/lib/Target/AVR/AVRGenSubtargetInfo.inc:471:7
in llvm::AVRSubtarget::ParseSubtargetFeatures(llvm::StringRef,
llvm::StringRef)
Exiting
FileCheck error: '<stdin>' is empty.
--
The patch wiill be re-committed once fixed.
Dylan McKay [Thu, 12 Mar 2020 06:07:01 +0000 (19:07 +1300)]
[AVR] Include AVR by default in LLVM builds
Summary:
This patch makes the AVR backend an official target of LLVM, serving
as a request for comments for moving the AVR backend out of
experimental.
A future patch will move the LLVM AVR buildbot (llvm-avr-linux) from the
staging buildmaster to the production buildmaster, so error emails will
start to go out.
Summary of the backend
----------------------
- 16-bit little endian
- AsmParser based assembly parser
- uses the MC library for generating AVR ELFs
- most logic driven from standard TableGen-erated tables like other
backends
- passes all of the test suite under `check-all`, including generic
CodeGen and DebugInfo tests
- Used in two frontends
- Limited, but functional support for DebugInfo and LLVM DWARF dumping
- Binary compatible with AVR-GCC and avr-{libc,libgcc} for the most part
- Cannot lower 32-bit shifts due to a bug, can lower shifts larger or
smaller
- Supports assembly/MC for all the entire AVR ISA, generally generates poorly
optimized machine instructions, with most focus thus far on correctness
I've added reviewers and subscribers from previous patches where backends were made official,
and those who participated in the recent thread on llvm-dev, please add anybody I've missed.
The most recent discussion on this topic can be found in the llvm-dev thread [Moving the AVR backend out of experimental](https://lists.llvm.org/pipermail/llvm-dev/2020-February/139158.html)
Reviewers: chandlerc, lattner, rengolin, tstellar, arsenm, thakis, simoll, asb
Reviewed By: rengolin, thakis
Subscribers: CryZe, wdng, mgorny, aprantl, Jim, hans, aykevl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75099
LLVM GN Syncbot [Thu, 12 Mar 2020 05:17:52 +0000 (05:17 +0000)]
[gn build] Port
518292dbdfc
QingShan Zhang [Thu, 12 Mar 2020 05:15:41 +0000 (05:15 +0000)]
[PowerPC] Add the MacroFusion support for Power8
This patch is intend to implement the missing P8 MacroFusion for LLVM
according to Power8 User's Manual Section 10.1.12 Instruction Fusion
Differential Revision: https://reviews.llvm.org/D70651
Shoaib Meenai [Thu, 12 Mar 2020 02:58:15 +0000 (19:58 -0700)]
[builtins] Build for arm64e for Darwin
https://github.com/apple/swift/pull/30112/ makes the Swift standard
library for iOS build for arm64e. If you're building Swift against your
own LLVM, this in turn requires having the builtins built for arm64e,
otherwise you won't be able to use the builtins (which will in turn lead
to an undefined symbol for `__isOSVersionAtLeast`). Make the builtins
build for arm64e to fix this.
Differential Revision: https://reviews.llvm.org/D76041
Adrian Prantl [Thu, 12 Mar 2020 04:32:12 +0000 (21:32 -0700)]
Revert "Update debugserver test for new ostype names"
I accidentally commited this while cherry-picking commits out of my
reflog.
This reverts commit
ae73ab64b66d1889b447303d432f4d217d222def.
Philip Reames [Thu, 12 Mar 2020 04:23:56 +0000 (21:23 -0700)]
[GC] Remove redundant entiries in stackmap section (and test it this time)
This is a reimplementation of the optimization removed in D75964. The actual spill/fill optimization is handled by D76013, this one just worries about reducing the stackmap section size itself by eliminating redundant entries. As noted in the comments, we could go a lot further here, but avoiding the degenerate invoke case as we did before is probably "enough" in practice.
Differential Revision: https://reviews.llvm.org/D76021
Reid Kleckner [Thu, 12 Mar 2020 04:05:13 +0000 (21:05 -0700)]
Add a missing include to clang unit tests
Alex Brachet [Thu, 12 Mar 2020 03:57:20 +0000 (23:57 -0400)]
[libc] [UnitTest] Add timeout to death tests
Summary:
This patch adds a timeout of 500ms to death tests. As we add multithreaded code and locks, deadlocks become more likely so timeout will be useful.
Additionally:
- Better error handling in `invokeSubprocess`
- Makes `ProcessStatus`'s methods const
Reviewers: sivachandra, MaskRay, gchatelet, PaulkaToast
Reviewed By: sivachandra, PaulkaToast
Subscribers: tschuett, libc-commits
Differential Revision: https://reviews.llvm.org/D75651
Reid Kleckner [Thu, 12 Mar 2020 03:43:59 +0000 (20:43 -0700)]
Prune TargetInfo.h include from ParsedAttr.h, NFC
Saves ~400 includes of related headers:
$ diff -u <(sort thedeps-before.txt) <(sort thedeps-after.txt) \
| grep '^[-+] ' | sort | uniq -c | sort -nr
468 - llvm-project/clang/include/clang/Basic/TargetInfo.h
468 - llvm-project/clang/include/clang/Basic/TargetCXXABI.h
368 - llvm-project/llvm/include/llvm/Support/CodeGen.h
368 - llvm-project/clang/include/clang/Basic/XRayInstr.h
368 - llvm-project/clang/include/clang/Basic/CodeGenOptions.h
368 - llvm-project/clang/include/clang/Basic/CodeGenOptions.def
367 - llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h
367 - llvm-project/clang/include/clang/Basic/DebugInfoOptions.h
Alex Brachet [Thu, 12 Mar 2020 03:45:58 +0000 (23:45 -0400)]
[libc] Add initial assert definition
Summary: This patch adds a temporary `__assert_fail` and `assert` definition to make it available to internal llvm libc code. `__assert_fail` writes to fd 2 directly instead of `stderr`, using SYS_write. I have not put it in its own linux directory because this is temporary and it should be using stdio's api in the future. It does not currently print out the line number (although we could do that by stringifying `__LINE__` if reviewers wish).
Reviewers: sivachandra, gchatelet, PaulkaToast
Reviewed By: sivachandra
Subscribers: mgorny, MaskRay, tschuett, libc-commits
Differential Revision: https://reviews.llvm.org/D75420
Bill Wendling [Thu, 12 Mar 2020 00:07:02 +0000 (17:07 -0700)]
Specify branch probabilities for callbr dests
Summary:
callbr's indirect branches aren't expected to be taken, so reduce their
probabilities to 0 while increasing the default destination to 1. This
allows some code improvements through block placement.
Reviewers: nickdesaulniers
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72656
Kang Zhang [Thu, 12 Mar 2020 03:18:56 +0000 (03:18 +0000)]
[NFC][PowerPC] Add a new MIR file te test ppc-early-ret pass
Lang Hames [Thu, 12 Mar 2020 01:44:58 +0000 (18:44 -0700)]
[JITLink] Read symbol linkage from the correct field.
MachO symbol linkage is described by the desc field of the nlist entry, not the
type field.
Lang Hames [Thu, 12 Mar 2020 02:49:12 +0000 (19:49 -0700)]
[ORC] Fix an overly aggressive assert.
It is ok to add dependencies on symbols that are ready, they should just be
skipped.
Lang Hames [Thu, 12 Mar 2020 01:03:41 +0000 (18:03 -0700)]
[llvm-jitlink] Fix DEBUG_TYPE string.
This updates the DEBUG_TYPE string in llvm-jitlink-macho.cpp to reflect the
change made to llvm-jitlink.cpp in
66128c48400f03f2b423561a63b3e78a355fd349.
Lang Hames [Wed, 11 Mar 2020 23:15:27 +0000 (16:15 -0700)]
[ORC] Add some extra debugging output.
Shengchen Kan [Thu, 12 Mar 2020 02:50:23 +0000 (10:50 +0800)]
[X86] Support intrinsic _mm_broadcastsi128_si256
Reviewers: LuoYuanke, craig.topper, RKSimon, pengfei
Reviewed By: craig.topper
Subscribers: cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75897
Adrian Prantl [Thu, 12 Mar 2020 02:30:11 +0000 (19:30 -0700)]
Add newly-missing include
Shengchen Kan [Tue, 10 Mar 2020 07:57:45 +0000 (15:57 +0800)]
[X86] Support intrinsic _mm_cldemote
Reviewers: LuoYuanke, craig.topper, RKSimon, pengfei
Reviewed By: craig.topper
Subscribers: cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75896
Adrian Prantl [Wed, 4 Mar 2020 00:05:23 +0000 (16:05 -0800)]
Add debug info support for Swift/Clang APINotes.
In order for dsymutil to collect .apinotes files (which capture
attributes such as nullability, Swift import names, and availability),
I want to propose adding an apinotes: field to DIModule that gets
translated into a DW_AT_LLVM_apinotes (path) nested inside
DW_TAG_module. This will be primarily used by LLDB to indirectly
extract the Swift names of Clang declarations that were deserialized
from DWARF.
<rdar://problem/
59514626>
Differential Revision: https://reviews.llvm.org/D75585
Mehdi Amini [Thu, 12 Mar 2020 01:26:54 +0000 (01:26 +0000)]
Remove CMake configuration for Sphinx targets in MLIR
MLIR does not have a Sphinx configuration, this is just leading to build
failures at the moment.
The website https://mlir.llvm.org/ is using the Hugo generator to
process the markdown files.
Shengchen Kan [Fri, 6 Mar 2020 07:53:47 +0000 (15:53 +0800)]
[X86] Support intrinsics _bextr2*
Reviewers: LuoYuanke, craig.topper, RKSimon, pengfei
Reviewed By: craig.topper
Subscribers: cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75894
Paula Toth [Thu, 12 Mar 2020 00:34:32 +0000 (17:34 -0700)]
[libc] Add docker container for llvm-libc buildbot worker.
Summary: Created a docker container to provide transparency and easy changes to the llvm-libc buildbot intfra.
Reviewers: sivachandra
Reviewed By: sivachandra
Subscribers: MaskRay, tschuett, libc-commits
Tags: #libc-project
Differential Revision: https://reviews.llvm.org/D75596
Mehdi Amini [Thu, 12 Mar 2020 00:12:03 +0000 (00:12 +0000)]
Add missing "llvm/Support/Host.h" header to LLVM example after recent header trimming (NFC)
River Riddle [Wed, 11 Mar 2020 23:56:13 +0000 (16:56 -0700)]
[mlir][NFC] Use fold expressions instead of variadic class templates for adding operations/etc. to dialects.
Summary: This is much simpler, and also greatly reduces the generated template recursion stack.
Differential Revision: https://reviews.llvm.org/D76025
Reid Kleckner [Wed, 11 Mar 2020 23:47:42 +0000 (16:47 -0700)]
Add missing StringMap.h inclusion, apparently clangd is not covered by check-clang-tools zzz
Mehdi Amini [Wed, 11 Mar 2020 23:37:46 +0000 (23:37 +0000)]
Fix MLIR build after header change in LLVM (NFC)
Tim Shen [Tue, 10 Mar 2020 22:32:53 +0000 (15:32 -0700)]
[mlir] Add a simplifying wrapper for generateCopy and expose it.
Summary:
affineDataCopyGenerate is a monolithinc function that
combines several steps for good reasons, but it makes customizing
the behaivor even harder. The major two steps by affineDataCopyGenerate are:
a) Identify interesting memrefs and collect their uses.
b) Create new buffers to forward these uses.
Step (a) actually has requires tremendous customization options. One could see
that from the recently added filterMemRef parameter.
This patch adds a function that only does (b), in the hope that (a)
can be directly implemented by the callers. In fact, (a) is quite
simple if the caller has only one buffer to consider, or even one use.
Differential Revision: https://reviews.llvm.org/D75965
Stanislav Mekhanoshin [Wed, 11 Mar 2020 23:12:42 +0000 (16:12 -0700)]
[AMDGPU] pre-commit collapse-endcf.mir. NFC.
Pre commit test before D76033.
Teresa Johnson [Sat, 7 Mar 2020 01:48:22 +0000 (17:48 -0800)]
[PowerPC] Fix compile time issue in recursive CTR analysis code
Summary:
Avoid re-examining operands on recursive walk looking for CTR.
This was causing huge compile time after some earlier optimization
created a large expression.
The start of the expression (created by IndVarSimplify) looked like:
%469 = lshr i64 trunc (i128 xor (i128 udiv (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 ptrtoint (i8 @_ZN4absl13hash_internal13CityHashState5kSeedE to i64), i64 120) to i128), i128
8192506886679785011), i128 64), i128 mul (i128 zext (i64 add (i64 ptrtoint (i8 @_ZN4absl13hash_internal13CityHashState5kSeedE to i64), i64 120) to i128), i128
8192506886679785011)) to i64), i64 45) to i128), i128
8192506886679785011), i128 64), i128 mul (i128 zext (i64 add (i64 trunc (i128 xor (i128 lshr (i128 mul (i128 zext (i64 add (i64 ptrtoint (i8 @_ZN4absl13hash_internal13CityHashState5kSeedE to i64), i64 120) to i128), i128
8192506886679785011), i128 64), i128 mul (i128 zext (i64 add (i64 ptrtoint (i8 @_ZN4absl13hash_internal13CityHashState5kSeedE to i64), i64 120) to i128), i128
8192506886679785011)) to i64), i64 45) to i128), ...
with the _ZN4absl13hash_internal13CityHashState5kSeedE referenced many times.
Reviewers: hfinkel
Subscribers: nemanjai, hiraditya, kbarton, jsji, shchenz, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75790
Artem Belevich [Wed, 11 Mar 2020 23:02:29 +0000 (16:02 -0700)]
Added constraints on cl-options.cu test
aartbik [Wed, 11 Mar 2020 21:26:00 +0000 (14:26 -0700)]
[mlir] [VectorOps] Correctly account for rank-0 affine-map result in vector.contract
Summary:
Now that, thanks to ntv, we have the ability to parse and represent an affine
map with rank-0 results, viz. (i,j) -> (), we can pay off some engineering debt
in special casing the verification of such affine maps in dot-product flavored
vector.contract operations.
Reviewers: nicolasvasilache, andydavis1, rriddle
Reviewed By: nicolasvasilache
Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76028
Tyker [Wed, 11 Mar 2020 22:21:44 +0000 (23:21 +0100)]
[AssumeBundles] Enforce constraints on the operand bundle of llvm.assume
Summary: Add verification that operand bundles on an llvm.assume are well formed to the verify pass.
Reviewers: jdoerfert
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75269
Adrian Prantl [Tue, 3 Mar 2020 20:54:04 +0000 (12:54 -0800)]
Make Decl::setOwningModuleID() public. (NFC)
This API is going to be used by LLDB to recreate owning module
information for Decls deserialized from DWARF.
Differential Revision: https://reviews.llvm.org/D75560
Adrian Prantl [Fri, 6 Mar 2020 19:13:04 +0000 (11:13 -0800)]
Update debugserver test for new ostype names
Reid Kleckner [Wed, 11 Mar 2020 22:39:28 +0000 (15:39 -0700)]
Remove unused Endian.h includes, NFC
Mainly avoids including Host.h everywhere:
$ diff -u <(sort thedeps-before.txt) <(sort thedeps-after.txt) \
| grep '^[-+] ' | sort | uniq -c | sort -nr
3141 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Host.h
Reid Kleckner [Wed, 11 Mar 2020 22:30:04 +0000 (15:30 -0700)]
Drop a StringMap.h include, NFC
$ diff -u <(sort thedeps-before.txt) <(sort thedeps-after.txt) \
| grep '^[-+] ' | sort | uniq -c | sort -nr
231 - llvm/include/llvm/ADT/StringMap.h
171 - llvm/include/llvm/Support/AllocatorBase.h
142 - llvm/include/llvm/Support/PointerLikeTypeTraits.h
Louis Dionne [Wed, 11 Mar 2020 22:12:34 +0000 (18:12 -0400)]
[libc+++] Mark two future tests as being FLAKY
They are timing sensitive.
Huihui Zhang [Wed, 11 Mar 2020 22:09:01 +0000 (15:09 -0700)]
[InstSimplify][SVE] Fix SimplifyInsert/ExtractElementInst for scalable vector.
Summary:
For scalable vector, index out-of-bound can not be determined at compile-time.
The same apply for VectorUtil findScalarElement().
Add test cases to check the functionality of SimplifyInsert/ExtractElementInst for scalable vector.
Reviewers: sdesmalen, efriedma, spatel, apazos
Reviewed By: efriedma
Subscribers: cameron.mcinally, tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75782
Vladimir Vereschaka [Wed, 11 Mar 2020 22:00:56 +0000 (15:00 -0700)]
Revert "Temporarily re-apply https://reviews.llvm.org/D74347"
This reverts commit
0197eac3330c04a49519f3e4dac38c4de605c654.
The changes break Armv7/Aarch64 toolchain builders:
* http://lab.llvm.org:8011/builders/llvm-clang-win-x-armv7l/builds/5570
* http://lab.llvm.org:8011/builders/llvm-clang-win-x-aarch64/builds/5600
Louis Dionne [Wed, 11 Mar 2020 21:21:40 +0000 (17:21 -0400)]
[libc++abi] NFC: Simplify extern C declaration
It seems to me that abort_message.h is always included in a C++ file, so
it's fine to assume that it's C++ code.
Differential Revision: https://reviews.llvm.org/D76027
Petr Hosek [Fri, 6 Mar 2020 22:38:07 +0000 (14:38 -0800)]
[runtimes] When COMPILER_RT is enabled, consider SANITIZER prefixes
Currently we passthrough CMake variables based on project prefix,
i.e. LIBCXX_, LIBCXXABI_, LIBUNWIND_ and COMPILER_RT_. However, many
compiler-rt flags start with SANITIZER_ rather than COMPILER_RT, so
passthrough those as well.
Differential Revision: https://reviews.llvm.org/D75773
Adrian Prantl [Wed, 4 Mar 2020 22:12:54 +0000 (14:12 -0800)]
Add an SDK attribute to DICompileUnit
This is part of PR44213 https://bugs.llvm.org/show_bug.cgi?id=44213
When importing (system) Clang modules, LLDB needs to know which SDK
(e.g., MacOSX, iPhoneSimulator, ...) they came from. While the sysroot
attribute contains the absolute path to the SDK, this doesn't work
well when the debugger is run on a different machine than the
compiler, and the SDKs are installed in different directories. It thus
makes sense to just store the name of the SDK instead of the absolute
path, so it can be found relative to LLDB.
rdar://problem/
51645582
Differential Revision: https://reviews.llvm.org/D75646
Reid Kleckner [Sat, 29 Feb 2020 17:10:42 +0000 (09:10 -0800)]
Avoid including FileManager.h from SourceManager.h
Most clients of SourceManager.h need to do things like turning source
locations into file & line number pairs, but this doesn't require
bringing in FileManager.h and LLVM's FS headers.
The main code change here is to sink SM::createFileID into the cpp file.
I reason that this is not performance critical because it doesn't happen
on the diagnostic path, it happens along the paths of macro expansion
(could be hot) and new includes (less hot).
Saves some includes:
309 - /usr/local/google/home/rnk/llvm-project/clang/include/clang/Basic/FileManager.h
272 - /usr/local/google/home/rnk/llvm-project/clang/include/clang/Basic/FileSystemOptions.h
271 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/VirtualFileSystem.h
267 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/FileSystem.h
266 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Chrono.h
Differential Revision: https://reviews.llvm.org/D75406
Reid Kleckner [Wed, 11 Mar 2020 20:52:28 +0000 (13:52 -0700)]
Fix formatting after Module.h include adjustment, NFC
Forgot to implement code review comments.
Sanjay Patel [Wed, 11 Mar 2020 20:51:30 +0000 (16:51 -0400)]
[PatternMatch] add matcher for FP infinity; NFC
Artem Belevich [Thu, 27 Feb 2020 23:35:19 +0000 (15:35 -0800)]
[CUDA,clang-cl] Filter out unsupported arguments for device-side compilation.
Device-side compilation does not support some features and we need to
filter them out when command line options enable them for the host.
We're already doing this in various places in the regular clang driver,
but clang-cl mode constructs cc1 options independently and needs to
implement the filtering, too.
Differential Revision: https://reviews.llvm.org/D75310
Reid Kleckner [Fri, 28 Feb 2020 02:13:54 +0000 (18:13 -0800)]
Avoid including Module.h from ExternalASTSource.h
Module.h takes 86ms to parse, mostly parsing the class itself. Avoid it
if possible. ASTContext.h depends on ExternalASTSource.h.
A few NFC changes were needed to make this possible:
- Move ASTSourceDescriptor to Module.h. This needs Module to be
complete, and seems more related to modules and AST files than
external AST sources.
- Move "import complete" bit from Module* pointer int pair to
NextLocalImport pointer. Required because PointerIntPair<Module*,...>
requires Module to be complete, and now it may not be.
Reviewed By: aaron.ballman, hans
Differential Revision: https://reviews.llvm.org/D75784
Jin Lin [Tue, 10 Mar 2020 19:46:40 +0000 (12:46 -0700)]
Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode
Summary:
The change is to fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode.
The purpose is to provide the support of LTO for swift and Objective-C mixed project.
Reviewers: rjmccall, ahatanak, steven_wu
Reviewed By: rjmccall, steven_wu
Subscribers: manmanren, mehdi_amini, hiraditya, dexonsmith, llvm-commits, jinlin
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71219
River Riddle [Wed, 11 Mar 2020 20:22:19 +0000 (13:22 -0700)]
[mlir] Add support for non-identifier attribute names.
Summary: In some situations the name of the attribute is not representable as a bare-identifier, this revision adds support for those cases by formatting the name as a string instead. This has the added benefit of removing the identifier regex from the verifier.
Differential Revision: https://reviews.llvm.org/D75973
Mitchell Balan [Wed, 11 Mar 2020 20:12:24 +0000 (16:12 -0400)]
Revert "[clang-format] Add option to specify explicit config file"
There were a number of unexpected test failures.
This reverts commit
10b1a87ba35d386b718f0e83c1d750631705b220.
Louis Dionne [Wed, 11 Mar 2020 20:00:50 +0000 (16:00 -0400)]
[libc++] Add SHA for C++20 Synchronization Library in ABI changelog
This is mostly a means to test a new Herald rule for libc++ reviews.
Differential Revision: https://reviews.llvm.org/D76022
Mitchell Balan [Wed, 11 Mar 2020 19:53:12 +0000 (15:53 -0400)]
[clang-format] Add option to specify explicit config file
Summary:
This diff extends the -style=file option to allow a config file to be specified explicitly. This is useful (for instance) when adding IDE commands to reformat code to a personal style.
Reviewers: djasper, ioeric, krasimir, MyDeveloperDay
Reviewed by: MyDeveloperDay
Contributed by: tnorth
Subscribers: cfe-commits, lebedev.ri, MyDeveloperDay, klimek, sammccall, mitchell-stellar
Tags: #clang, #clang-format
Differential Revision: https://reviews.llvm.org/D72326
Sanjay Patel [Wed, 11 Mar 2020 18:35:31 +0000 (14:35 -0400)]
[InstCombine] reduce demand-limited bool math to logic
The cmp math test is inspired by memcmp() patterns seen in D75840.
I know there's at least 1 related fold we can do here if both
values are sext'd, but I'm not seeing a way to generalize further.
We have some other bool math patterns that we want to reduce, but
that might require fixing the bogus transforms noted in D72396.
Alive proof translations of the regression tests:
https://rise4fun.com/Alive/zGWi
Name: demand add 1
%xz = zext i1 %x to i32
%ys = sext i1 %y to i32
%sub = add i32 %xz, %ys
%r = lshr i32 %sub, 31
=>
%notx = xor i1 %x, 1
%and = and i1 %y, %notx
%r = zext i1 %and to i32
Name: demand add 2
%xz = zext i1 %x to i5
%ys = sext i1 %y to i5
%sub = add i5 %xz, %ys
%r = and i5 %sub, 16
=>
%notx = xor i1 %x, 1
%and = and i1 %y, %notx
%r = select i1 %and, i5 -16, i5 0
Name: demand add 3
%xz = zext i1 %x to i8
%ys = sext i1 %y to i8
%a = add i8 %ys, %xz
%r = ashr i8 %a, 7
=>
%notx = xor i1 %x, 1
%and = and i1 %y, %notx
%r = sext i1 %and to i8
Name: cmp math
%gt = icmp ugt i32 %x, %y
%lt = icmp ult i32 %x, %y
%xz = zext i1 %gt to i32
%yz = zext i1 %lt to i32
%s = sub i32 %xz, %yz
%r = lshr i32 %s, 31
=>
%r = zext i1 %lt to i32
Differential Revision: https://reviews.llvm.org/D75961
Sanjay Patel [Tue, 10 Mar 2020 21:14:41 +0000 (17:14 -0400)]
[InstCombine] add tests for bool math; NFC
Adrian Prantl [Wed, 11 Mar 2020 17:44:15 +0000 (10:44 -0700)]
Add a verification mechanism to CompilerType.
Badly-written code can combine an unrelated TypeSystem and opaque type
pointer into a CompilerType. This is particularly an issue in
swift-lldb. This patch adds an assertion mechanism that catches these
kinds of mistakes early. Because this is an assertion-only code path
there is not cost for release builds.
Differential Revision: https://reviews.llvm.org/D76011
Matt Arsenault [Wed, 11 Mar 2020 15:49:03 +0000 (11:49 -0400)]
AMDGPU: Don't hard error on LDS globals in functions
Instead, emit a trap and a warning. We force inlining of this
situation, so any function where this happens should be dead as
indirect or external calls are not yet supported. This should avoid
erroring on dead code.
Philip Reames [Wed, 11 Mar 2020 18:12:28 +0000 (11:12 -0700)]
[GC] Loosen ordering on statepoint reloads to allow CSE
We just removed a broken duplicate elimination algorithm in D75964, and after landed that it occurred to me that duplicate elimination is simply CSE. SelectionDAG has a build in CSE, so why wasn't that triggering? Well, it turns out we were overly conservative in the memory states for our reloads and CSE (rightly) considers the incoming memory state for a load part of the identity of the load.
By loosening the chain and allowing reordering, we also allow CSE. As shown in the test case, doing iterative CSE as we go is enough to eliminate duplicate stores in later statepoints as well. We key our (block local) slot map by SDValue, so commoning a previous pair of loads at construction time means we also common following stores.
Differential Revision: https://reviews.llvm.org/D76013
Paula Toth [Wed, 11 Mar 2020 19:12:35 +0000 (12:12 -0700)]
[clang-tidy] Mock system headers for portability-restrict-system-includes tests.
Summary: Didn't realize that headers such as stddef.h may not exist on all systems. This patch mocks the headers so that the check's tests work on all systems. (:
Reviewers: RKSimon, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: xazax.hun, cfe-commits
Tags: #clang-tools-extra, #clang
Differential Revision: https://reviews.llvm.org/D76015
Stephen Neuendorffer [Fri, 6 Mar 2020 23:46:51 +0000 (15:46 -0800)]
[MLIR] Link MLIRMlirOptMain with the same libraries as mlir-opt
MLIRMlirOptMain seems to need the same libraries as mlir-opt.
Differential Revision: https://reviews.llvm.org/D75783
Simon Pilgrim [Wed, 11 Mar 2020 18:55:18 +0000 (18:55 +0000)]
[DAG] MatchRotate - Add funnel shift by immediate support
This patch reuses the existing MatchRotate ROTL/ROTR rotation pattern code to also recognize the more general FSHL/FSHR funnel shift patterns when we have constant shift amounts.
Differential Revision: https://reviews.llvm.org/D75114
Stephen Neuendorffer [Wed, 11 Mar 2020 16:50:19 +0000 (09:50 -0700)]
[MLIR] Do not link mlir-cpu-runner with X86 libs
The three libs where recently added to the `mlir-cpu-runner`'s
`CMakeLists.txt` file. This prevent the runner to compile on other
platform (e.g. Power in my case). Native codegen is pulled in
by the ExecutionEngine library, so this is redundant in any case.
Differential Revision: https://reviews.llvm.org/D75916
Sergej Jaskiewicz [Mon, 17 Feb 2020 12:22:18 +0000 (15:22 +0300)]
Temporarily re-apply https://reviews.llvm.org/D74347
It was reverted in
35367e06b84618e21945674aa22e7cfda1957ea4
because it broke the buildbot due to missing libc++abi headers.
https://reviews.llvm.org/D75991 improves the diagnostics, so I hope
the build log will be more informative.
Francesco Petrogalli [Wed, 11 Mar 2020 18:25:29 +0000 (18:25 +0000)]
[llvm][CodeGen] IR intrinsics for SVE2 contiguous conflict detection instructions.
Summary:
The IR intrinsics are mapped to the following SVE2 instructions:
* WHILERW <Pd>.<T>, <Xn>, <Xm>
* WHILEWR <Pd>.<T>, <Xn>, <Xm>
The intrinsics introduced in this patch are the IR counterpart of the
SVE ACLE functions `svwhilerw` and `svwhilewr` (all data type
variants).
Patch by Maciej Gąbka <maciej.gabka@arm.com>.
Reviewers: kmclaughlin, rengolin
Reviewed By: kmclaughlin
Subscribers: tschuett, kristof.beyls, hiraditya, danielkiss, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75862
Stanislav Mekhanoshin [Tue, 10 Mar 2020 20:29:11 +0000 (13:29 -0700)]
[AMDGPU] Disable nested endcf collapse
The assumption is that conditional regions are perfectly nested
and a mask restored at the exit from the inner block will be
completely covered by a mask restored in the outer.
It turns out with our current structurizer this is not always
the case.
Disable the optimization for now, but I want to keep it around
for a while to either try after further structurizer changes or
to move it into control flow lowering where we have more info
and reuse the test.
Differential Revision: https://reviews.llvm.org/D75958
Tim Shen [Wed, 26 Feb 2020 04:16:08 +0000 (20:16 -0800)]
[MLIR] Guard DMA-specific logic with DMA option
Differential Revision: https://reviews.llvm.org/D75963
Juneyoung Lee [Mon, 9 Mar 2020 16:37:36 +0000 (01:37 +0900)]
[CodeGenPrepare] Fold br(freeze(icmp x, const)) to br(icmp(freeze x, const))
Summary:
This patch helps CodeGenPrepare move freeze into the icmp when it is used by branch.
It reenables generation of efficient conditional jumps.
This is only done when at least one of icmp's operands is constant to prevent the transformation from increasing # of freeze instructions.
Performance degradation of MultiSource/Benchmarks/Ptrdist/yacr2/yacr2.test is resolved with this patch.
Checked with Alive2
Reviewers: reames, fhahn, nlopes
Reviewed By: reames
Subscribers: jdoerfert, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75859
Sergej Jaskiewicz [Wed, 11 Mar 2020 18:00:46 +0000 (21:00 +0300)]
[libc++] [cmake] Better diagnostics for missing abi library headers
Summary:
This is NFC. We only add additional information to the log.
Reviewers: EricWF, ldionne, mclow.lists
Reviewed By: ldionne
Subscribers: kristof.beyls, dexonsmith, danielkiss, mgorny, ldionne, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D75991
Jay Foad [Wed, 11 Mar 2020 17:01:24 +0000 (17:01 +0000)]
[AMDGPU] Extend macro fusion for ADDC and SUBB to SUBBREV
Summary:
There's a lot of test case churn but the overall effect is to increase
the number of back-to-back v_sub,v_subbrev pairs, which can execute with
no delay even on gfx10.
Reviewers: arsenm, rampitec, nhaehnle
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75999
Florian Hahn [Wed, 11 Mar 2020 17:01:47 +0000 (17:01 +0000)]
[Matrix] Add remark propagation along the inlined-at chain.
This patch adds support for propagating matrix expressions along the
inlined-at chain and emitting remarks at the traversed function scopes.
To motivate this new behavior, consider the example below. Without the
remark 'up-leveling', we would only get remarks in load.h and store.h,
but we cannot generate a remark describing the full expression in
toplevel.cpp, which is the place where the user has the best chance of
spotting/fixing potential problems.
With this patch, we generate a remark for the load in load.h, one for
the store in store.h and one for the complete expression in
toplevel.cpp. For a bigger example, please see remarks-inlining.ll.
load.h:
template <typename Ty, unsigned R, unsigned C> Matrix<Ty, R, C> load(Ty *Ptr) {
Matrix<Ty, R, C> Result;
Result.value = *reinterpret_cast <typename Matrix<Ty, R, C>::matrix_t *>(Ptr);
return Result;
}
store.h:
template <typename Ty, unsigned R, unsigned C> void store(Matrix<Ty, R, C> M1, Ty *Ptr) {
*reinterpret_cast<typename decltype(M1)::matrix_t *>(Ptr) = M1.value;
}
toplevel.cpp
void test(double *A, double *B, double *C) {
store(add(load<double, 3, 5>(A), load<double, 3, 5>(B)), C);
}
For a given function, we traverse the inlined-at chain for each
matrix instruction (= instructions with shape information). We collect
the matrix instructions in each DISubprogram we visit. This produces a
mapping of DISubprogram -> (List of matrix instructions visible in the
subpogram). We then generate remarks using the list of instructions for
each subprogram in the inlined-at chain. Note that the list of instructions
for a subprogram includes the instructions from its own subprograms
recursively. For example using the example above, for the subprogram
'test' this includes inline functions 'load' and 'store'. This allows
surfacing the remarks at a level useful to users.
Please note that the current approach may create a lot of extra remarks.
Additional heuristics to cut-off the traversal can be implemented in the
future. For example, it might make sense to stop 'up-leveling' once all
matrix instructions are at the same debug location.
Reviewers: anemet, Gerolf, thegameg, hfinkel, andrew.w.kaylor, LuoYuanke
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D73600
Alexey Bataev [Wed, 11 Mar 2020 17:26:01 +0000 (13:26 -0400)]
[OPENMP][DOCS]Mark depobj as implemented, NFC.
Sterling Augustine [Thu, 5 Mar 2020 00:29:58 +0000 (16:29 -0800)]
Lazily save initialState of registers during unwind.
Summary:
Copying all of the saved register state on every entry to
parseInstruction is a severe performance contraint, especially
because most of this saved state is never used. On x86 linux
this is about 560 bytes, and will be more on other platforms.
When performance testing libunwind, this memcpy appears at the
top of nearly all our tests.
By only saving this state as needed, we see increasing in performance
of around 2.5% for the ctak test here.
https://github.com/clasp-developers/ctak
Certain internal extremely exception-heavy tasks run in about 2/3
the time.
Note that by stashing the new boolean inside what had been padding in
the original structure, this uses no additional memory.
Subscribers: fedor.sergeev, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D75692
Andrzej Warzynski [Tue, 10 Mar 2020 15:40:40 +0000 (15:40 +0000)]
[AArch64][SVE] Add the @llvm.aarch64.sve.sel intrinsic
Reviewers: sdesmalen, efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D75928
Philip Reames [Wed, 11 Mar 2020 17:01:11 +0000 (10:01 -0700)]
[GC] Remove buggy untested optimization from statepoint lowering
A downstream test case (see included reduced test) revealed that we have a bug in how we handle duplicate relocations. If we have the same SDValue relocated twice, and that value happens to be a constant (such as null), we only export one of the two llvm::Values. Exporting on a per llvm::Value basis is required to allow lowering of gc.relocates in following basic blocks (e.g. invokes). Without it, we end up with a use of an undefined vreg and bad things happen.
Rather than fixing the optimization - which appears to be hard - I propose we simply remove it. There are no tests in tree that change with this code removed. If we find out later that this did matter for something, we can reimplement a variation of this in CodeGenPrepare to catch the easy cases without complicating the lowering code.
Thanks to Denis and Serguei who did all the hard work of figuring out what went wrong here. The patch is by far the easy part. :)
Differential Revision: https://reviews.llvm.org/D75964
Adrian Prantl [Mon, 9 Mar 2020 17:40:33 +0000 (10:40 -0700)]
Add a decorator option to skip tests based on a default setting.
This patch allows skipping a test based on a default setting, which is
useful when running the testsuite in different "modes" based on a
default setting. This is a feature I need for the Swift testsuite, but
I think it's generally useful.
Differential Revision: https://reviews.llvm.org/D75864
Fangrui Song [Tue, 3 Mar 2020 23:37:12 +0000 (15:37 -0800)]
[ELF] Simplify sh_addr computation and warn if sh_addr is not a multiple of sh_addralign
See `docs/ELF/linker_script.rst` for the new computation for sh_addr and sh_addralign.
`ALIGN(section_align)` now means: "increase alignment to section_align"
(like yet another input section requirement).
The "start of section .foo changes from 0x11 to 0x20" warning no longer
makes sense. Change it to warn if sh_addr%sh_addralign!=0.
To decrease the alignment from the default max_input_align,
use `.output ALIGN(8) : {}` instead of `.output : ALIGN(8) {}`
See linkerscript/section-address-align.test as an example.
When both an output section address and ALIGN are set (can be seen as an
"undefined behavior" https://sourceware.org/ml/binutils/2020-03/msg00115.html),
lld may align more than GNU ld, but it makes a linker script working
with GNU ld hard to break with lld.
This patch can be considered as restoring part of the behavior before D74736.
Differential Revision: https://reviews.llvm.org/D75724
James Henderson [Wed, 11 Mar 2020 15:30:04 +0000 (15:30 +0000)]
[Object][unittest] Skip tests on machines with non-64 bit size_t
Speculative fix for build bot failures such as
http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/14317/
David Green [Wed, 11 Mar 2020 14:24:48 +0000 (14:24 +0000)]
[ARM] Extra VFMA tests. NFC
Haojian Wu [Wed, 11 Mar 2020 15:07:44 +0000 (16:07 +0100)]
[clangd] Improve the "max limit" error message in rename, NFC.
previously, we emited "exceeds the max limit 49" which was weird, now we
emit "exceeds the max limit 50".
Matt Arsenault [Thu, 20 Feb 2020 19:00:56 +0000 (14:00 -0500)]
AMDGPU/GlobalISel: Manually RegBankSelect copies
This was failng on any pre-assigned copy to the VCC bank.
This is something of a workaround for the default implementation in
getInstrMappingImpl, and how it treats copy-like operations in
general.
Copy-like operations are considered to only have one result register
bank, rather than separate banks for each source like a normal
instruction. To avoid potentially mishandling reg_sequence with
impossible operand combinations, the generic implementation errors on
impossible costs. If the bank was already assigned, is treated it
as-if it were an unsatisfiable REG_SEQUENCE mapping. We really don't
get any value from any of what getInstrMappingImpl tries to do for
copies, so just directly emit the simple mapping we really want.
Christian Sigg [Mon, 9 Mar 2020 13:42:04 +0000 (14:42 +0100)]
[MLIR] Remove all-reduce lowering from GPU to NVVM. Use in-dialect lowering instead.
Reviewers: herhut, mravishankar
Reviewed By: herhut
Subscribers: merge_guards_bot, jholewinski, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, Joonsoo, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D73794
Christian Sigg [Wed, 29 Jan 2020 08:57:54 +0000 (09:57 +0100)]
Change to individual pretty printer classes, remove generic `make_printer`.
Summary: Follow-up from D72589.
Reviewers: dblaikie
Reviewed By: dblaikie
Subscribers: merge_guards_bot, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D73609
Hubert Tong [Wed, 11 Mar 2020 13:58:10 +0000 (09:58 -0400)]
[unittests][Object] Use matching signedness for expected value
Speculative fix for buildbot breakage:
http://lab.llvm.org:8011/builders/clang-ppc64le-rhel/builds/1899/steps/ninja%20check%201/logs/stdio
D75742 introduces checks that cause bots to complain about comparing
values where the integer types mismatch on signedness.
This patch makes the expected value unsigned in various cases (since the
value being tested is unsigned).