platform/upstream/llvm.git
4 years ago[VE][nfc] Use RRIm for RRINDm, remove the latter
Simon Moll [Thu, 12 Mar 2020 14:37:39 +0000 (15:37 +0100)]
[VE][nfc] Use RRIm for RRINDm, remove the latter

Summary:
De-duplicate isel instruction classes by using RRIm for RRINDm. The latter
becomes obsolete.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D76063

4 years ago[PowerPC][AIX] Fix printing of program counter for AIX assembly.
Sean Fertile [Thu, 12 Mar 2020 14:21:42 +0000 (10:21 -0400)]
[PowerPC][AIX] Fix printing of program counter for AIX assembly.

Program counter on AIX is the dollar-sign.

Differential Revision:https://reviews.llvm.org/D75627

4 years ago[lldb][NFC] Fix unsigned/signed comparison warning in SymbolFileDWARFTest.cpp
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'

4 years ago[mlir][CRunnerUtils] Enable compilation with C++11 toolchain on microcontroller platf...
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

4 years ago[AArch64][SVE] Add intrinsics for non-temporal scatters/gathers
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

4 years ago[InstSimplify] simplify FP ops harder with FMF (part 2)
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

4 years ago[libcxxabi] Set LIBCXXABI_LINK_TESTS_WITH_SHARED_LIBCXX to ON if LIBCXX_ENABLE_SHARED...
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

4 years ago[OpenCL] Add missing get_image_array_size builtins
Sven van Haastregt [Thu, 12 Mar 2020 13:43:51 +0000 (13:43 +0000)]
[OpenCL] Add missing get_image_array_size builtins

4 years ago[lldb] Clear all settings during a test's setUp
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

4 years ago[InstSimplify] simplify FP ops harder with FMF
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...)

4 years ago[X86] Add FeatureFast7ByteNOP flag
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...

4 years ago[clangd] Add README pointing to docs, bugtracker etc. NFC
Sam McCall [Thu, 12 Mar 2020 12:59:40 +0000 (13:59 +0100)]
[clangd] Add README pointing to docs, bugtracker etc. NFC

4 years ago[AMDGPU] Add some funnel shift intrinsic test coverage
Simon Pilgrim [Thu, 12 Mar 2020 12:53:31 +0000 (12:53 +0000)]
[AMDGPU] Add some funnel shift intrinsic test coverage

4 years ago[InstSimplify] reduce code for FP undef/nan folding; NFC
Sanjay Patel [Thu, 12 Mar 2020 12:45:38 +0000 (08:45 -0400)]
[InstSimplify] reduce code for FP undef/nan folding; NFC

4 years agoUse `grep -F` instead of deprecated fgrep.
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.)

4 years ago[InstSimplify] add tests for FP poison; NFC
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.

4 years ago[lldb] reject `.debug_arange` sections with nonzero segment size
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

4 years ago[SCCP] Use ValueLatticeElement instead of LatticeVal (NFCI)
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

4 years ago[gn build] Port d5edcb90643
LLVM GN Syncbot [Thu, 12 Mar 2020 11:58:14 +0000 (11:58 +0000)]
[gn build] Port d5edcb90643

4 years ago[AVR] Fix reads of uninitialized variables from constructor of AVRSubtarget
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.

4 years ago[clang] Prune 'IsOMPStructuredBlock' Stmt bit
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?

4 years ago[X86] combineOrShiftToFunnelShift - remove shift by immediate handling.
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.

4 years ago[ARM,MVE] Add intrinsics and isel for MVE fused multiply-add.
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

4 years ago[ARM,MVE] Fix user-namespace violation in arm_mve.h.
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

4 years ago[AVR] Fix read of uninitialized variable AVRSubtarget:::ELFArch
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.

4 years ago[clangd] Redirect documentation to clangd.llvm.org.
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

4 years ago[LoopPeel] Turn incorrect assert into a check
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

4 years ago[AST] Respect shouldTraversePostOrder when traversing type locs
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

4 years ago[libc++] [P0646] Add feature-test macro for __cpp_lib_list_remove_return_type.
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

4 years agoBasis of dropping uses in llvm.assume.
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

4 years ago[NFC] Add filters to hasNItems and hasNItemsOrMore
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

4 years ago[PowerPC] Add strict-fp intrinsic to FP arithmetic
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

4 years ago[SCEV] isHighCostExpansionHelper(): use correct TTI hooks
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

4 years ago[GlobalISel] fix crash in narrowScalarExtract if DstRegs only has one register
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

4 years ago[AMDGPU] Use progbits type for .AMDGPU.disasm section
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

4 years ago[ExpandMemCmp][NFC] Add more tests.
Clement Courbet [Thu, 12 Mar 2020 07:49:51 +0000 (08:49 +0100)]
[ExpandMemCmp][NFC] Add more tests.

4 years agoRemove unused variable.
Tres Popp [Thu, 12 Mar 2020 07:22:35 +0000 (08:22 +0100)]
Remove unused variable.

Delete dead code from 8fffa40400e8719222e7f67152c12738521fa9fb.

4 years ago[X86] Reduce the number of emitted fragments due to branch align
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

4 years agoApply update_test_check.py to CodeGenPrepare/X86/freeze-icmp.ll test
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

4 years ago[DebugInfo] Fix build failure on the mingw
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.

4 years agoRevert "[AVR] Include AVR by default in LLVM builds"
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.

4 years ago[AVR] Include AVR by default in LLVM builds
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

4 years ago[gn build] Port 518292dbdfc
LLVM GN Syncbot [Thu, 12 Mar 2020 05:17:52 +0000 (05:17 +0000)]
[gn build] Port 518292dbdfc

4 years ago[PowerPC] Add the MacroFusion support for Power8
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

4 years ago[builtins] Build for arm64e for Darwin
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

4 years agoRevert "Update debugserver test for new ostype names"
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.

4 years ago[GC] Remove redundant entiries in stackmap section (and test it this time)
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

4 years agoAdd a missing include to clang unit tests
Reid Kleckner [Thu, 12 Mar 2020 04:05:13 +0000 (21:05 -0700)]
Add a missing include to clang unit tests

4 years ago[libc] [UnitTest] Add timeout to death 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

4 years agoPrune TargetInfo.h include from ParsedAttr.h, NFC
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

4 years ago[libc] Add initial assert definition
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

4 years agoSpecify branch probabilities for callbr dests
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

4 years ago[NFC][PowerPC] Add a new MIR file te test ppc-early-ret pass
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

4 years ago[JITLink] Read symbol linkage from the correct field.
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.

4 years ago[ORC] Fix an overly aggressive assert.
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.

4 years ago[llvm-jitlink] Fix DEBUG_TYPE string.
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.

4 years ago[ORC] Add some extra debugging output.
Lang Hames [Wed, 11 Mar 2020 23:15:27 +0000 (16:15 -0700)]
[ORC] Add some extra debugging output.

4 years ago[X86] Support intrinsic _mm_broadcastsi128_si256
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

4 years agoAdd newly-missing include
Adrian Prantl [Thu, 12 Mar 2020 02:30:11 +0000 (19:30 -0700)]
Add newly-missing include

4 years ago[X86] Support intrinsic _mm_cldemote
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

4 years agoAdd debug info support for Swift/Clang APINotes.
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

4 years agoRemove CMake configuration for Sphinx targets in MLIR
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.

4 years ago[X86] Support intrinsics _bextr2*
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

4 years ago[libc] Add docker container for llvm-libc buildbot worker.
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

4 years agoAdd missing "llvm/Support/Host.h" header to LLVM example after recent header trimming...
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)

4 years ago[mlir][NFC] Use fold expressions instead of variadic class templates for adding opera...
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

4 years agoAdd missing StringMap.h inclusion, apparently clangd is not covered by check-clang...
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

4 years agoFix MLIR build after header change in LLVM (NFC)
Mehdi Amini [Wed, 11 Mar 2020 23:37:46 +0000 (23:37 +0000)]
Fix MLIR build after header change in LLVM (NFC)

4 years ago[mlir] Add a simplifying wrapper for generateCopy and expose it.
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

4 years ago[AMDGPU] pre-commit collapse-endcf.mir. NFC.
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.

4 years ago[PowerPC] Fix compile time issue in recursive CTR analysis code
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

4 years agoAdded constraints on cl-options.cu test
Artem Belevich [Wed, 11 Mar 2020 23:02:29 +0000 (16:02 -0700)]
Added constraints on cl-options.cu test

4 years ago[mlir] [VectorOps] Correctly account for rank-0 affine-map result in vector.contract
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

4 years ago[AssumeBundles] Enforce constraints on the operand bundle of llvm.assume
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

4 years agoMake Decl::setOwningModuleID() public. (NFC)
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

4 years agoUpdate debugserver test for new ostype names
Adrian Prantl [Fri, 6 Mar 2020 19:13:04 +0000 (11:13 -0800)]
Update debugserver test for new ostype names

4 years agoRemove unused Endian.h includes, NFC
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

4 years agoDrop a StringMap.h include, NFC
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

4 years ago[libc+++] Mark two future tests as being FLAKY
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.

4 years ago[InstSimplify][SVE] Fix SimplifyInsert/ExtractElementInst for scalable vector.
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

4 years agoRevert "Temporarily re-apply https://reviews.llvm.org/D74347"
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

4 years ago[libc++abi] NFC: Simplify extern C declaration
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

4 years ago[runtimes] When COMPILER_RT is enabled, consider SANITIZER prefixes
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

4 years agoAdd an SDK attribute to DICompileUnit
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

4 years agoAvoid including FileManager.h from SourceManager.h
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

4 years agoFix formatting after Module.h include adjustment, NFC
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.

4 years ago[PatternMatch] add matcher for FP infinity; NFC
Sanjay Patel [Wed, 11 Mar 2020 20:51:30 +0000 (16:51 -0400)]
[PatternMatch] add matcher for FP infinity; NFC

4 years ago[CUDA,clang-cl] Filter out unsupported arguments for device-side compilation.
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

4 years agoAvoid including Module.h from ExternalASTSource.h
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

4 years agoFix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift...
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

4 years ago[mlir] Add support for non-identifier attribute names.
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

4 years agoRevert "[clang-format] Add option to specify explicit config file"
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.

4 years ago[libc++] Add SHA for C++20 Synchronization Library in ABI changelog
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

4 years ago[clang-format] Add option to specify explicit config file
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

4 years ago[InstCombine] reduce demand-limited bool math to logic
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

4 years ago[InstCombine] add tests for bool math; NFC
Sanjay Patel [Tue, 10 Mar 2020 21:14:41 +0000 (17:14 -0400)]
[InstCombine] add tests for bool math; NFC

4 years agoAdd a verification mechanism to CompilerType.
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

4 years agoAMDGPU: Don't hard error on LDS globals in functions
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.

4 years ago[GC] Loosen ordering on statepoint reloads to allow CSE
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

4 years ago[clang-tidy] Mock system headers for portability-restrict-system-includes tests.
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