Raphael Isemann [Thu, 12 Mar 2020 14:30:10 +0000 (15:30 +0100)]
[lldb][NFC] Fix unsigned/signed comparison warning in SymbolFileDWARFTest.cpp
offset_t is unsigned, so if the RHS is signed we get a warning from clang:
warning: comparison of integers of different signs: 'const unsigned long long' and 'const int'
Nicolas Vasilache [Thu, 12 Mar 2020 14:07:16 +0000 (10:07 -0400)]
[mlir][CRunnerUtils] Enable compilation with C++11 toolchain on microcontroller platforms.
Summary:
The C runner utils API was still not vanilla enough for certain use
cases on embedded ARM SDKs, this enables such cases.
Adding people more widely for historical Windows related build issues.
Differential Revision: https://reviews.llvm.org/D76031
Andrzej Warzynski [Wed, 4 Mar 2020 11:21:20 +0000 (11:21 +0000)]
[AArch64][SVE] Add intrinsics for non-temporal scatters/gathers
Summary:
This patch adds the following intrinsics for non-temporal gather loads
and scatter stores:
* aarch64_sve_ldnt1_gather_index
* aarch64_sve_stnt1_scatter_index
These intrinsics implement the "scalar + vector of indices" addressing
mode.
As opposed to regular and first-faulting gathers/scatters, there's no
instruction that would take indices and then scale them. Instead, the
indices for non-temporal gathers/scatters are scaled before the
intrinsics are lowered to `ldnt1` instructions.
The new ISD nodes, GLDNT1_INDEX and SSTNT1_INDEX, are only used as
placeholders so that we can easily identify the cases implemented in
this patch in performGatherLoadCombine and performScatterStoreCombined.
Once encountered, they are replaced with:
* GLDNT1_INDEX -> SPLAT_VECTOR + SHL + GLDNT1
* SSTNT1_INDEX -> SPLAT_VECTOR + SHL + SSTNT1
The patterns for lowering ISD::SHL for scalable vectors (required by
this patch) were missing, so these are added too.
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D75601
Sanjay Patel [Thu, 12 Mar 2020 13:52:06 +0000 (09:52 -0400)]
[InstSimplify] simplify FP ops harder with FMF (part 2)
This is part of the IR sibling for:
D75576
Related transform committed with:
rG8ec71585719d
Sergej Jaskiewicz [Thu, 30 Jan 2020 10:05:14 +0000 (13:05 +0300)]
[libcxxabi] Set LIBCXXABI_LINK_TESTS_WITH_SHARED_LIBCXX to ON if LIBCXX_ENABLE_SHARED is not defined
Differential Revision: https://reviews.llvm.org/D71894
Sven van Haastregt [Thu, 12 Mar 2020 13:43:51 +0000 (13:43 +0000)]
[OpenCL] Add missing get_image_array_size builtins
Tatyana Krasnukha [Wed, 11 Mar 2020 16:51:40 +0000 (19:51 +0300)]
[lldb] Clear all settings during a test's setUp
Global properties are shared between debugger instances and
if a test doesn't clear changes in settings it made,
this leads to side effects in other tests.
Differential Revision: https://reviews.llvm.org/D75537
Sanjay Patel [Thu, 12 Mar 2020 13:10:26 +0000 (09:10 -0400)]
[InstSimplify] simplify FP ops harder with FMF
This is part of the IR sibling for:
D75576
(I'm splitting part of the transform as a separate commit
to reduce risk. I don't know of any bugs that might be
exposed by this improved folding, but it's hard to see
those in advance...)
Simon Pilgrim [Thu, 12 Mar 2020 13:06:12 +0000 (13:06 +0000)]
[X86] Add FeatureFast7ByteNOP flag
Lets us remove another SLM proc family flag usage.
This is NFC, but we should probably check whether atom/glm/knl? should be using this flag as well...
Sam McCall [Thu, 12 Mar 2020 12:59:40 +0000 (13:59 +0100)]
[clangd] Add README pointing to docs, bugtracker etc. NFC
Simon Pilgrim [Thu, 12 Mar 2020 12:53:31 +0000 (12:53 +0000)]
[AMDGPU] Add some funnel shift intrinsic test coverage
Sanjay Patel [Thu, 12 Mar 2020 12:45:38 +0000 (08:45 -0400)]
[InstSimplify] reduce code for FP undef/nan folding; NFC
Nico Weber [Thu, 12 Mar 2020 12:33:54 +0000 (08:33 -0400)]
Use `grep -F` instead of deprecated fgrep.
(In addition to the deprecation bit, this is useful on Windows
where people might have grep but not fgrep.)
Sanjay Patel [Thu, 12 Mar 2020 12:08:36 +0000 (08:08 -0400)]
[InstSimplify] add tests for FP poison; NFC
Adapted from codegen tests seen in D75576.
Luke Drummond [Tue, 10 Mar 2020 15:05:53 +0000 (15:05 +0000)]
[lldb] reject `.debug_arange` sections with nonzero segment size
If a producer emits a nonzero segment size, `lldb` will silently read
incorrect values and crash, or do something worse later as the tuple
size is expected to be 2, rather than 3.
Neither LLVM, nor GCC produce segmented aranges, but this dangerous case
should still be checked and handled.
Reviewed by: clayborg, labath
Differential Revision: https://reviews.llvm.org/D75925
Subscribers: lldb-commits
Tags: #lldb
Florian Hahn [Thu, 12 Mar 2020 11:26:07 +0000 (11:26 +0000)]
[SCCP] Use ValueLatticeElement instead of LatticeVal (NFCI)
This patch switches SCCP to use ValueLatticeElement for lattice values,
instead of the local LatticeVal, as first step to enable integer range support.
This patch does not make use of constant ranges for additional operations
and the only difference for now is that integer constants are represented by
single element ranges. To preserve the existing behavior, the following helpers
are used
* isConstant(LV): returns true when LV is either a constant or a constant range with a single element. This should return true in the same cases where LV.isConstant() returned true previously.
* getConstant(LV): returns a constant if LV is either a constant or a constant range with a single element. This should return a constant in the same cases as LV.getConstant() previously.
* getConstantInt(LV): same as getConstant, but additionally casted to ConstantInt.
Reviewers: davide, efriedma, mssimpso
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D60582
LLVM GN Syncbot [Thu, 12 Mar 2020 11:58:14 +0000 (11:58 +0000)]
[gn build] Port
d5edcb90643
Dylan McKay [Thu, 12 Mar 2020 11:51:30 +0000 (00:51 +1300)]
[AVR] Fix reads of uninitialized variables from constructor of AVRSubtarget
The initialization order was not correct. These bugs were discovered by
valgrind. They appear to work fine in practice but this patch should
unblock switching the AVR backend on by default as now a standard AVR
llc invocation runs without memory errors.
The AVRISelLowering constructor would run before the subtarget boolean
fields were initialized to false. Now, the initialization order is
correct.
Roman Lebedev [Thu, 12 Mar 2020 09:18:01 +0000 (12:18 +0300)]
[clang] Prune 'IsOMPStructuredBlock' Stmt bit
As discussed in https://reviews.llvm.org/D59214#1916596
and in some other reviews dealing with FPenv,
bits in Stmt are scarce, and i got so burnout with D59214
and https://bugs.llvm.org/show_bug.cgi?id=40563 specifically
that i never actually followed up with the usages for this bit.
So let's unhoard it, at least for now?
Simon Pilgrim [Thu, 12 Mar 2020 11:46:28 +0000 (11:46 +0000)]
[X86] combineOrShiftToFunnelShift - remove shift by immediate handling.
Now that D75114 has landed, DAGCombiner handles this case so the code is redundant.
Simon Tatham [Thu, 12 Mar 2020 09:57:48 +0000 (09:57 +0000)]
[ARM,MVE] Add intrinsics and isel for MVE fused multiply-add.
Summary:
This adds the ACLE intrinsic family for the VFMA and VFMS
instructions, which perform fused multiply-add on vectors of floats.
I've represented the unpredicated versions in IR using the cross-
platform `@llvm.fma` IR intrinsic. We already had isel rules to
convert one of those into a vector VFMA in the simplest possible way;
but we didn't have rules to detect a negated argument and turn it into
VFMS, or rules to detect a splat argument and turn it into one of the
two vector/scalar forms of the instruction. Now we have all of those.
The predicated form uses a target-specific intrinsic as usual, but
I've stuck to just one, for a predicated FMA. The subtraction and
splat versions are code-generated by passing an fneg or a splat as one
of its operands, the same way as the unpredicated version.
In arm_mve_defs.h, I've had to introduce a tiny extra piece of
infrastructure: a record `id` for use in codegen dags which implements
the identity function. (Just because you can't declare a Tablegen
value of type dag which is //only// a `$varname`: you have to wrap it
in something. Now I can write `(id $varname)` to get the same effect.)
Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard
Reviewed By: dmgreen
Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D75998
Simon Tatham [Thu, 12 Mar 2020 09:57:40 +0000 (09:57 +0000)]
[ARM,MVE] Fix user-namespace violation in arm_mve.h.
Summary:
We were generating the declarations of polymorphic intrinsics using
`__attribute__((overloadable))`. But `overloadable` is a valid
identifier for an end user to define as a macro in a C program, and if
they do that before including `<arm_mve.h>`, then we shouldn't cause a
compile error.
Fixed to spell the attribute name `__overloadable__` instead.
Reviewers: miyuki, MarkMurrayARM, ostannard
Reviewed By: miyuki
Subscribers: kristof.beyls, dmgreen, danielkiss, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75997
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