platform/upstream/llvm.git
3 years agoGlobalISel: Lift store value widening restriction
Matt Arsenault [Sat, 22 Aug 2020 16:34:38 +0000 (12:34 -0400)]
GlobalISel: Lift store value widening restriction

This doesn't change the memory size and doesn't need to worry about
non-power-of-2 sizes.

3 years ago[gn build] make "all" target build
Nico Weber [Wed, 16 Sep 2020 18:21:14 +0000 (14:21 -0400)]
[gn build] make "all" target build

If you want to build everything, building the default target
via just `ninja` is better, but `ninja all` shouldn't give you
compile errors -- this fixes that.

3 years ago[AArch64][GlobalISel] Make G_BUILD_VECTOR os <16 x s8> legal.
Amara Emerson [Wed, 16 Sep 2020 18:19:08 +0000 (11:19 -0700)]
[AArch64][GlobalISel] Make G_BUILD_VECTOR os <16 x s8> legal.

3 years ago[clang][codegen] Skip adding default function attributes on intrinsics.
Michael Liao [Wed, 16 Sep 2020 12:52:02 +0000 (08:52 -0400)]
[clang][codegen] Skip adding default function attributes on intrinsics.

- After loading builtin bitcode for linking, skip adding default
  function attributes on LLVM intrinsics as their attributes are
  well-defined and retrieved directly from internal definitions. Adding
  extra attributes on intrinsics results in inconsistent result when
  `-save-temps` is present. Also, that makes few optimizations
  conservative.

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

3 years agofix test no-rtti.cpp
Zequan Wu [Wed, 16 Sep 2020 18:03:04 +0000 (11:03 -0700)]
fix test no-rtti.cpp

3 years agoSema: add support for `__attribute__((__swift_bridge__))`
Saleem Abdulrasool [Wed, 9 Sep 2020 22:43:37 +0000 (22:43 +0000)]
Sema: add support for `__attribute__((__swift_bridge__))`

This extends semantic analysis of attributes for Swift interoperability
by introducing the `swift_bridge` attribute.  This attribute enables
bridging Objective-C types to Swift specific types.

This is based on the work of the original changes in
https://github.com/llvm/llvm-project-staging/commit/8afaf3aad2af43cfedca7a24cd817848c4e95c0c

Differential Revision: https://reviews.llvm.org/D87532
Reviewed By: Aaron Ballman

3 years ago[libFuzzer] Enable entropic by default.
Matt Morehouse [Tue, 15 Sep 2020 17:33:23 +0000 (10:33 -0700)]
[libFuzzer] Enable entropic by default.

Entropic has performed at least on par with vanilla scheduling on
Clusterfuzz, and has shown a slight coverage improvement on FuzzBench:
https://www.fuzzbench.com/reports/2020-08-31/index.html

Reviewed By: Dor1s

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

3 years ago[Sema][MSVC] warn at dynamic_cast/typeid when /GR- is given
Zequan Wu [Tue, 15 Sep 2020 20:44:22 +0000 (13:44 -0700)]
[Sema][MSVC] warn at dynamic_cast/typeid when /GR- is given

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

3 years ago[GISel] Add new combines for unary FP instrs with constant operand
Michael Kitzan [Sat, 22 Aug 2020 06:11:22 +0000 (23:11 -0700)]
[GISel] Add new combines for unary FP instrs with constant operand

https://reviews.llvm.org/D86393

Patch adds five new `GICombinerRules`, one for each of the following unary
FP instrs: `G_FNEG`, `G_FABS`, `G_FPTRUNC`, `G_FSQRT`, and `G_FLOG2`. The
combine rules perform the FP operation on the constant operand and replace
the original instr with the result. Patch additionally adds new combiner
tests for the AArch64 target to test these new combiner rules.

3 years agoDwarfUnit.h - remove unnecessary includes. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 17:32:03 +0000 (18:32 +0100)]
DwarfUnit.h - remove unnecessary includes. NFCI.

3 years agoraw_ostream.cpp - remove duplicate includes. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 17:11:39 +0000 (18:11 +0100)]
raw_ostream.cpp - remove duplicate includes. NFCI.

Remove headers already included in raw_ostream.h

3 years agoInterferenceCache.cpp - remove duplicate includes. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 17:09:30 +0000 (18:09 +0100)]
InterferenceCache.cpp - remove duplicate includes. NFCI.

Remove headers already included in InterferenceCache.h

3 years agoValueEnumerator.cpp - remove duplicate includes. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 17:08:32 +0000 (18:08 +0100)]
ValueEnumerator.cpp - remove duplicate includes. NFCI.

Remove headers already included in ValueEnumerator.h

3 years ago[SLP] add tests for reduction ordering; NFC
Sanjay Patel [Wed, 16 Sep 2020 14:59:30 +0000 (10:59 -0400)]
[SLP] add tests for reduction ordering; NFC

3 years ago[llvm-nm] Use aggregate initialization instead of memset zero
Fangrui Song [Wed, 16 Sep 2020 17:24:58 +0000 (10:24 -0700)]
[llvm-nm] Use aggregate initialization instead of memset zero

3 years agoRe-land: Add new hidden option -print-changed which only reports changes to IR
Jamie Schmeiser [Wed, 16 Sep 2020 17:25:13 +0000 (17:25 +0000)]
Re-land: Add new hidden option -print-changed which only reports changes to IR

A new hidden option -print-changed is added along with code to support
printing the IR as it passes through the opt pipeline in the new pass
manager. Only those passes that change the IR are reported, with others
only having the banner reported, indicating that they did not change the
IR, were filtered out or ignored. Filtering of output via the
-filter-print-funcs is supported and a new supporting hidden option
-filter-passes is added. The latter takes a comma separated list of pass
names and filters the output to only show those passes in the list that
change the IR. The output can also be modified via the -print-module-scope
function.

The code introduces a template base class that generalizes the comparison
of IRs that takes an IR representation as template parameter. The
constructor takes a series of lambdas that provide an event based API
for generalized reporting of IRs as they are changed in the opt pipeline
through the new pass manager.

The first of several instantiations is provided that prints the IR
in a form similar to that produced by -print-after-all with the above
mentioned filtering capabilities. This version, and the others to
follow will be introduced at the upcoming developer's conference.

Reviewed By: aeubanks (Arthur Eubanks), yrouban (Yevgeny Rouban), ychen (Yuanfang Chen)

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

3 years ago[libc++] Ensure streams are initialized early
Louis Dionne [Thu, 14 May 2020 13:56:35 +0000 (09:56 -0400)]
[libc++] Ensure streams are initialized early

When statically linking libc++ on some systems, the streams are not
initialized early enough, which causes all kinds of issues. This was
reported e.g. in http://llvm.org/PR28954, but also in various open
source projects that use libc++.

Fixes http://llvm.org/PR28954.

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

3 years agoRegAllocFast: Make self loop live-out heuristic more aggressive
Matt Arsenault [Mon, 31 Aug 2020 19:09:50 +0000 (15:09 -0400)]
RegAllocFast: Make self loop live-out heuristic more aggressive

This currently has no impact on code, but prevents sizeable code size
regressions after D52010. This prevents spilling and reloading all
values inside blocks that loop back. Add a baseline test which would
regress without this patch.

3 years agoInclude (Type|Symbol)Record.h less
Reid Kleckner [Wed, 16 Sep 2020 16:55:22 +0000 (09:55 -0700)]
Include (Type|Symbol)Record.h less

Most clients only need CVType and CVSymbol, not structs for every type
and symbol. Move CVSymbol and CVType to CVRecord.h to accomplish this.
Update some of the common headers that need CVSymbol and CVType to use
the new location.

3 years agoAMDGPU: Clear offset register when using local stack area
Matt Arsenault [Thu, 10 Sep 2020 16:11:53 +0000 (12:11 -0400)]
AMDGPU: Clear offset register when using local stack area

eliminateFrameIndex won't fix up the offset register when the direct
frame index reference is moved to a separate move instruction. Switch
the offset to a base 0 (which it probably should be to begin with).

3 years agoAMDGPU: Add baseline test for incorrect SP access
Matt Arsenault [Thu, 10 Sep 2020 17:06:12 +0000 (13:06 -0400)]
AMDGPU: Add baseline test for incorrect SP access

3 years agoLocalStackSlotAllocation: Swap order of check
Matt Arsenault [Thu, 10 Sep 2020 16:08:41 +0000 (12:08 -0400)]
LocalStackSlotAllocation: Swap order of check

3 years agoDo not apply calling conventions to MSVC entry points
Elizabeth Andrews [Mon, 14 Sep 2020 21:33:01 +0000 (14:33 -0700)]
Do not apply calling conventions to MSVC entry points

Fix link error for MSVC entry points when calling conventions
are specified. MSVC entry points should have default calling
convention.

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

3 years ago[libfuzzer] Reduce default verbosity when printing large mutation sequences
mhl [Wed, 16 Sep 2020 15:02:34 +0000 (08:02 -0700)]
[libfuzzer] Reduce default verbosity when printing large mutation sequences

When using a custom mutator (e.g. thrift mutator, similar to LPM)
that calls back into libfuzzer's mutations via `LLVMFuzzerMutate`, the mutation
sequences needed to achieve new coverage can get prohibitively large.

Printing these large sequences has two downsides:

1) It makes the logs hard to understand for a human.
2) The performance cost slows down fuzzing.

In this patch I change the `PrintMutationSequence` function to take a max
number of entries, to achieve this goal. I also update `PrintStatusForNewUnit`
to default to printing only 10 entries, in the default verbosity level (1),
requiring the user to set verbosity to 2 if they want the full mutation
sequence.

For our use case, turning off verbosity is not an option, as that would also
disable `PrintStats()` which is very useful for infrastructure that analyzes
the logs in realtime. I imagine most users of libfuzzer always want those logs
in the default.

I built a fuzzer locally with this patch applied to libfuzzer.

When running with the default verbosity, I see logs like this:

    #65 NEW    cov: 4799 ft: 10443 corp: 41/1447Kb lim: 64000 exec/s: 1 rss: 575Mb L: 28658/62542 MS: 196 Custom-CrossOver-ChangeBit-EraseBytes-ChangeBit-ChangeBit-ChangeBit-CrossOver-ChangeBit-CrossOver- DE: "\xff\xff\xff\x0e"-"\xfe\xff\xff\x7f"-"\xfe\xff\xff\x7f"-"\x17\x00\x00\x00\x00\x00\x00\x00"-"\x00\x00\x00\xf9"-"\xff\xff\xff\xff"-"\xfa\xff\xff\xff"-"\xf7\xff\xff\xff"-"@\xff\xff\xff\xff\xff\xff\xff"-"E\x00"-
    #67 NEW    cov: 4810 ft: 10462 corp: 42/1486Kb lim: 64000 exec/s: 1 rss: 577Mb L: 39823/62542 MS: 135 Custom-CopyPart-ShuffleBytes-ShuffleBytes-ChangeBit-ChangeBinInt-EraseBytes-ChangeBit-ChangeBinInt-ChangeBit- DE: "\x01\x00\x00\x00\x00\x00\x01\xf1"-"\x00\x00\x00\x07"-"\x00\x0d"-"\xfd\xff\xff\xff"-"\xfe\xff\xff\xf4"-"\xe3\xff\xff\xff"-"\xff\xff\xff\xf1"-"\xea\xff\xff\xff"-"\x00\x00\x00\xfd"-"\x01\x00\x00\x05"-

Staring hard at the logs it's clear that the cap of 10 is applied.

When running with verbosity level 2, the logs look like the below:

    #66    NEW    cov: 4700 ft: 10188 corp: 37/1186Kb lim: 64000 exec/s: 2 rss: 509Mb L: 47616/61231 MS: 520 Custom-CopyPart-ChangeBinInt-ChangeBit-ChangeByte-EraseBytes-PersAutoDict-CopyPart-ShuffleBytes-ChangeBit-ShuffleBytes-CopyPart-EraseBytes-CopyPart-ChangeBinInt-CopyPart-ChangeByte-ShuffleBytes-ChangeBinInt-ShuffleBytes-ChangeBit-CMP-ShuffleBytes-ChangeBit-CrossOver-ChangeBinInt-ChangeByte-ShuffleBytes-CrossOver-EraseBytes-ChangeBinInt-InsertRepeatedBytes-PersAutoDict-InsertRepeatedBytes-InsertRepeatedBytes-CrossOver-ChangeByte-ShuffleBytes-CopyPart-ShuffleBytes-CopyPart-CrossOver-ChangeBit-ShuffleBytes-CrossOver-PersAutoDict-ChangeByte-ChangeBit-ShuffleBytes-CrossOver-ChangeByte-EraseBytes-CopyPart-ChangeBinInt-PersAutoDict-CrossOver-ShuffleBytes-CrossOver-CrossOver-EraseBytes-CrossOver-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-ChangeByte-EraseBytes-ShuffleBytes-ShuffleBytes-ChangeBit-EraseBytes-ChangeBinInt-ChangeBit-ChangeBinInt-CopyPart-EraseBytes-PersAutoDict-EraseBytes-CopyPart-ChangeBinInt-ChangeByte-CrossOver-ChangeBinInt-ShuffleBytes-PersAutoDict-PersAutoDict-ChangeBinInt-CopyPart-ChangeBinInt-CrossOver-ChangeBit-ChangeBinInt-CopyPart-ChangeByte-ChangeBit-CopyPart-CrossOver-ChangeByte-ChangeBit-ChangeByte-ShuffleBytes-CMP-ChangeBit-CopyPart-ChangeBit-ChangeByte-ChangeBinInt-PersAutoDict-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBit-ChangeBinInt-ChangeBinInt-PersAutoDict-ChangeBinInt-ChangeBinInt-ChangeByte-CopyPart-ShuffleBytes-ChangeByte-ChangeBit-ChangeByte-ChangeByte-EraseBytes-CrossOver-ChangeByte-ChangeByte-EraseBytes-EraseBytes-InsertRepeatedBytes-ShuffleBytes-CopyPart-CopyPart-ChangeBit-ShuffleBytes-PersAutoDict-ShuffleBytes-ChangeBit-ChangeByte-ChangeBit-ShuffleBytes-ChangeByte-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBit-EraseBytes-CopyPart-ChangeByte-CrossOver-EraseBytes-CrossOver-ChangeByte-ShuffleBytes-ChangeByte-ChangeBinInt-CrossOver-ChangeByte-InsertRepeatedBytes-InsertByte-ShuffleBytes-PersAutoDict-ChangeBit-ChangeByte-ChangeBit-ShuffleBytes-ShuffleBytes-CopyPart-ShuffleBytes-EraseBytes-ShuffleBytes-ShuffleBytes-CrossOver-ChangeBinInt-CopyPart-CopyPart-CopyPart-EraseBytes-EraseBytes-ChangeByte-ChangeBinInt-ShuffleBytes-CMP-InsertByte-EraseBytes-ShuffleBytes-CopyPart-ChangeBit-CrossOver-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-EraseBytes-ChangeByte-ChangeBinInt-ChangeBit-ChangeBit-ChangeByte-ShuffleBytes-PersAutoDict-PersAutoDict-CMP-ChangeBit-ShuffleBytes-PersAutoDict-ChangeBinInt-EraseBytes-EraseBytes-ShuffleBytes-ChangeByte-ShuffleBytes-ChangeBit-EraseBytes-CMP-ShuffleBytes-ChangeByte-ChangeBinInt-EraseBytes-ChangeBinInt-ChangeByte-EraseBytes-ChangeByte-CrossOver-ShuffleBytes-EraseBytes-EraseBytes-ShuffleBytes-ChangeBit-EraseBytes-CopyPart-ShuffleBytes-ShuffleBytes-CrossOver-CopyPart-ChangeBinInt-ShuffleBytes-CrossOver-InsertByte-InsertByte-ChangeBinInt-ChangeBinInt-CopyPart-EraseBytes-ShuffleBytes-ChangeBit-ChangeBit-EraseBytes-ChangeByte-ChangeByte-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBinInt-ShuffleBytes-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-ShuffleBytes-CrossOver-EraseBytes-CopyPart-CopyPart-CopyPart-ChangeBit-ShuffleBytes-ChangeByte-EraseBytes-ChangeByte-InsertRepeatedBytes-InsertByte-InsertRepeatedBytes-PersAutoDict-EraseBytes-ShuffleBytes-ChangeByte-ShuffleBytes-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeBit-CrossOver-CrossOver-ShuffleBytes-CrossOver-CopyPart-CrossOver-CrossOver-CopyPart-ChangeByte-ChangeByte-CrossOver-ChangeBit-ChangeBinInt-EraseBytes-ShuffleBytes-EraseBytes-CMP-PersAutoDict-PersAutoDict-InsertByte-ChangeBit-ChangeByte-CopyPart-CrossOver-ChangeByte-ChangeBit-ChangeByte-CopyPart-ChangeBinInt-EraseBytes-CrossOver-ChangeBit-CrossOver-PersAutoDict-CrossOver-ChangeByte-CrossOver-ChangeByte-ChangeByte-CrossOver-ShuffleBytes-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-ChangeBinInt-ChangeBinInt-ChangeBinInt-ShuffleBytes-CrossOver-ChangeBinInt-ShuffleBytes-ChangeBit-PersAutoDict-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeByte-CrossOver-ChangeBit-CopyPart-ChangeBit-ChangeBit-CopyPart-ChangeByte-PersAutoDict-ChangeBit-ShuffleBytes-ChangeByte-ChangeBit-CrossOver-ChangeByte-CrossOver-ChangeByte-CrossOver-ChangeBit-ChangeByte-ChangeBinInt-PersAutoDict-CopyPart-ChangeBinInt-ChangeBit-CrossOver-ChangeBit-PersAutoDict-ShuffleBytes-EraseBytes-CrossOver-ChangeByte-ChangeBinInt-ShuffleBytes-ChangeBinInt-InsertRepeatedBytes-PersAutoDict-CrossOver-ChangeByte-Custom-PersAutoDict-CopyPart-CopyPart-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeBit-ShuffleBytes-CrossOver-CMP-ChangeByte-CopyPart-ShuffleBytes-CopyPart-CopyPart-CrossOver-CrossOver-CrossOver-ShuffleBytes-ChangeByte-ChangeBinInt-ChangeBit-ChangeBit-ChangeBit-ChangeByte-EraseBytes-ChangeByte-ChangeBit-ChangeByte-ChangeByte-CopyPart-PersAutoDict-ChangeBinInt-PersAutoDict-PersAutoDict-PersAutoDict-CopyPart-CopyPart-CrossOver-ChangeByte-ChangeBinInt-ShuffleBytes-ChangeBit-CopyPart-EraseBytes-CopyPart-CopyPart-CrossOver-ChangeByte-EraseBytes-ShuffleBytes-ChangeByte-CopyPart-EraseBytes-CopyPart-CrossOver-ChangeBinInt-ChangeBinInt-InsertByte-ChangeBinInt-ChangeBit-ChangeByte-CopyPart-ChangeByte-EraseBytes-ChangeByte-ChangeBit-ChangeByte-ShuffleBytes-CopyPart-ChangeBinInt-EraseBytes-CrossOver-ChangeBit-ChangeBit-CrossOver-EraseBytes-ChangeBinInt-CopyPart-CopyPart-ChangeBinInt-ChangeBit-EraseBytes-InsertRepeatedBytes-EraseBytes-ChangeBit-CrossOver-CrossOver-EraseBytes-EraseBytes-ChangeByte-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeBit-ChangeByte-EraseBytes-ChangeBit-ChangeByte-ChangeByte-CrossOver-CopyPart-EraseBytes-ChangeByte-EraseBytes-ChangeByte-ShuffleBytes-ShuffleBytes-ChangeByte-CopyPart-ChangeByte-ChangeByte-ChangeBit-CopyPart-ChangeBit-ChangeBinInt-CopyPart-ShuffleBytes-ChangeBit-ChangeBinInt-ChangeBit-EraseBytes-CMP-CrossOver-CopyPart-ChangeBinInt-CrossOver-CrossOver-CopyPart-CrossOver-CrossOver-InsertByte-InsertByte-CopyPart-Custom- DE: "warn"-"\x00\x00\x00\x80"-"\xfe\xff\xff\xfb"-"\xff\xff"-"\x10\x00\x00\x00"-"\xfe\xff\xff\xff"-"\xff\xff\xff\xf6"-"U\x01\x00\x00\x00\x00\x00\x00"-"\xd9\xff\xff\xff"-"\xfe\xff\xff\xea"-"\xf0\xff\xff\xff"-"\xfc\xff\xff\xff"-"warn"-"\xff\xff\xff\xff"-"\xfe\xff\xff\xfb"-"\x00\x00\x00\x80"-"\xfe\xff\xff\xf1"-"\xfe\xff\xff\xea"-"\x00\x00\x00\x00\x00\x00\x012"-"\xe2\x00"-"\xfb\xff\xff\xff"-"\x00\x00\x00\x00"-"\xe9\xff\xff\xff"-"\xff\xff"-"\x00\x00\x00\x80"-"\x01\x00\x04\xc9"-"\xf0\xff\xff\xff"-"\xf9\xff\xff\xff"-"\xff\xff\xff\xff\xff\xff\xff\x12"-"\xe2\x00"-"\xfe\xff\xff\xff"-"\xfe\xff\xff\xea"-"\xff\xff\xff\xff"-"\xf4\xff\xff\xff"-"\xe9\xff\xff\xff"-"\xf1\xff\xff\xff"-
    #48    NEW    cov: 4502 ft: 9151 corp: 27/750Kb lim: 64000 exec/s: 2 rss: 458Mb L: 50772/50772 MS: 259 ChangeByte-ShuffleBytes-ChangeBinInt-ChangeByte-ChangeByte-ChangeByte-ChangeByte-ChangeBit-CopyPart-CrossOver-CopyPart-ChangeByte-CrossOver-CopyPart-ChangeBit-ChangeByte-EraseBytes-ChangeByte-CopyPart-CopyPart-CopyPart-ChangeBit-EraseBytes-ChangeBinInt-CrossOver-CopyPart-CrossOver-CopyPart-ChangeBit-ChangeByte-ChangeBit-InsertByte-CrossOver-InsertRepeatedBytes-InsertRepeatedBytes-InsertRepeatedBytes-ChangeBinInt-EraseBytes-InsertRepeatedBytes-InsertByte-ChangeBit-ShuffleBytes-ChangeBit-ChangeBit-CopyPart-ChangeBit-ChangeByte-CrossOver-ChangeBinInt-ChangeByte-CrossOver-CMP-ChangeByte-CrossOver-ChangeByte-ShuffleBytes-ShuffleBytes-ChangeByte-ChangeBinInt-CopyPart-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-InsertByte-ChangeBit-CopyPart-ChangeBinInt-ChangeByte-CrossOver-ChangeBit-EraseBytes-CopyPart-ChangeBinInt-ChangeBit-ChangeBit-ChangeByte-CopyPart-ChangeBinInt-CrossOver-PersAutoDict-ChangeByte-ChangeBit-ChangeByte-ChangeBinInt-ChangeBinInt-EraseBytes-CopyPart-CopyPart-ChangeByte-ChangeByte-EraseBytes-PersAutoDict-CopyPart-ChangeByte-ChangeByte-EraseBytes-CrossOver-CopyPart-CopyPart-CopyPart-ChangeByte-ChangeBit-CMP-CopyPart-ChangeBinInt-ChangeBinInt-CrossOver-ChangeBit-ChangeBit-EraseBytes-ChangeByte-ShuffleBytes-ChangeBit-ChangeBinInt-CMP-InsertRepeatedBytes-CopyPart-Custom-ChangeByte-CrossOver-EraseBytes-ChangeBit-CopyPart-CrossOver-CMP-ShuffleBytes-EraseBytes-CrossOver-PersAutoDict-ChangeByte-CrossOver-CopyPart-CrossOver-CrossOver-ShuffleBytes-ChangeBinInt-CrossOver-ChangeBinInt-ShuffleBytes-PersAutoDict-ChangeByte-EraseBytes-ChangeBit-CrossOver-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-EraseBytes-InsertByte-InsertRepeatedBytes-InsertByte-InsertByte-ChangeByte-ChangeBinInt-ChangeBit-CrossOver-ChangeByte-CrossOver-EraseBytes-ChangeByte-ShuffleBytes-ChangeBit-ChangeBit-ShuffleBytes-CopyPart-ChangeByte-PersAutoDict-ChangeBit-ChangeByte-InsertRepeatedBytes-CMP-CrossOver-ChangeByte-EraseBytes-ShuffleBytes-CrossOver-ShuffleBytes-ChangeBinInt-ChangeBinInt-CopyPart-PersAutoDict-ShuffleBytes-ChangeBit-CopyPart-ShuffleBytes-CopyPart-EraseBytes-ChangeByte-ChangeBit-ChangeBit-ChangeBinInt-ChangeByte-CopyPart-EraseBytes-ChangeBinInt-EraseBytes-EraseBytes-PersAutoDict-CMP-PersAutoDict-CrossOver-CrossOver-ChangeBit-CrossOver-PersAutoDict-CrossOver-CopyPart-ChangeByte-EraseBytes-ChangeByte-ShuffleBytes-ChangeByte-ChangeByte-CrossOver-ChangeBit-EraseBytes-ChangeByte-EraseBytes-ChangeBinInt-CrossOver-CrossOver-EraseBytes-ChangeBinInt-CrossOver-ChangeBit-ShuffleBytes-ChangeBit-ChangeByte-EraseBytes-ChangeBit-CrossOver-CrossOver-CrossOver-ChangeByte-ChangeBit-ShuffleBytes-ChangeBit-ChangeBit-EraseBytes-CrossOver-CrossOver-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-CopyPart-CrossOver-CopyPart-CrossOver-CrossOver-EraseBytes-EraseBytes-ShuffleBytes-InsertRepeatedBytes-ChangeBit-CopyPart-Custom- DE: "\xfe\xff\xff\xfc"-"\x00\x00\x00\x00"-"F\x00"-"\xf3\xff\xff\xff"-"St9exception"-"_\x00\x00\x00"-"\xf6\xff\xff\xff"-"\xfe\xff\xff\xff"-"\x00\x00\x00\x00"-"p\x02\x00\x00\x00\x00\x00\x00"-"\xfe\xff\xff\xfb"-"\xff\xff"-"\xff\xff\xff\xff"-"\x01\x00\x00\x07"-"\xfe\xff\xff\xfe"-

These are prohibitively large and of limited value in the default case (when
someone is running the fuzzer, not debugging it), in my opinion.

Reviewed By: morehouse

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

3 years ago[Coro][NewPM] Handle llvm.coro.prepare.retcon in NPM coro-split pass
Arthur Eubanks [Sat, 12 Sep 2020 02:57:17 +0000 (19:57 -0700)]
[Coro][NewPM] Handle llvm.coro.prepare.retcon in NPM coro-split pass

Reviewed By: rjmccall

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

3 years ago[ARM][MVE] Tail-predication: predicate new elementcount checks on force-enabled
Sjoerd Meijer [Wed, 16 Sep 2020 15:35:53 +0000 (16:35 +0100)]
[ARM][MVE] Tail-predication: predicate new elementcount checks on force-enabled

Additional sanity checks were added to get.active.lane.mask's second argument,
the loop tripcount/elementcount, in rG635b87511ec3. Like the other (overflow)
checks, skip this if tail-predication is forced.

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

3 years ago[AMDGPU] Remove obsolete comment
Jay Foad [Wed, 16 Sep 2020 16:02:42 +0000 (17:02 +0100)]
[AMDGPU] Remove obsolete comment

Obsoleted by e4464bf3d45848461630e3771d66546d389f1ed5 "AMDGPU/GlobalISel: Select scalar v2s16 G_BUILD_VECTOR"

3 years ago[llvm][CodeGen] Do not scalarize `llvm.masked.[gather|scatter]` operating on scalable...
Francesco Petrogalli [Tue, 8 Sep 2020 08:08:59 +0000 (08:08 +0000)]
[llvm][CodeGen] Do not scalarize `llvm.masked.[gather|scatter]` operating on scalable vectors.

This patch prevents the `llvm.masked.gather` and `llvm.masked.scatter` intrinsics to be scalarized when invoked on scalable vectors.

The change in `Function.cpp` is needed to prevent the warning that is raised when `getNumElements` is used in place of `getElementCount` on `VectorType` instances. The tests guards for regressions on this change.

The tests makes sure that calls to `llvm.masked.[gather|scatter]` are still scalarized when:

  # the intrinsics are operating on fixed size vectors, and
  # the compiler is not targeting fixed length SVE code generation.

Reviewed By: efriedma, sdesmalen

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

3 years ago[NPM] Translate alias analysis into require<> as well
Arthur Eubanks [Wed, 16 Sep 2020 05:06:50 +0000 (22:06 -0700)]
[NPM] Translate alias analysis into require<> as well

'require<globals-aa>' is needed to make globals-aa work in NPM, since
globals-aa is a module analysis but function passes cannot run module
analyses on demand.
So don't skip translating alias analyses to 'require<>'.

Reviewed By: asbirlea

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

3 years ago[AMDGPU] Corrected directive to use for ELF weak refs
Dmitry Preobrazhensky [Wed, 16 Sep 2020 15:51:26 +0000 (18:51 +0300)]
[AMDGPU] Corrected directive to use for ELF weak refs

WeakRefDirective should specify a directive to declare "a global as being a weak undefined symbol".
The directive used by AMDGPU was incorrect - ".weakref" was intended for other purposes.
The correct directive is ".weak" and it is already defined as default for ELF.
So the redefinition was removed.

Reviewers: arsenm, rampitec

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

3 years ago[ASTMatchers] Add missing definition for decompositionDecl
Benjamin Kramer [Wed, 16 Sep 2020 15:28:59 +0000 (17:28 +0200)]
[ASTMatchers] Add missing definition for decompositionDecl

Otherwise we'd get a linker error whenever decompositionDecl is ODR
used.

3 years ago[X86] EmitInstrWithCustomInserter - remove redundant getDebugLoc() calls. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 15:26:13 +0000 (16:26 +0100)]
[X86] EmitInstrWithCustomInserter - remove redundant getDebugLoc() calls. NFCI.

Use the same DebugLoc that is called at the top of the method.

Fixes some Wshadow static analyzer warnings.

3 years ago[NFC][Regalloc] accessors for 'reg' and 'weight'
Mircea Trofin [Tue, 15 Sep 2020 21:54:38 +0000 (14:54 -0700)]
[NFC][Regalloc] accessors for 'reg' and 'weight'

Also renamed the fields to follow style guidelines.

Accessors help with readability - weight mutation, in particular,
is easier to follow this way.

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

3 years agoAMDGPU: Improve <2 x i24> arguments and return value handling
Matt Arsenault [Sun, 30 Aug 2020 21:28:48 +0000 (17:28 -0400)]
AMDGPU: Improve <2 x i24> arguments and return value handling

This was asserting for GlobalISel. For SelectionDAG, this was
passing this on the stack. Instead, scalarize this as if it were a
32-bit vector.

3 years ago[AMDGPU] Add v3f16/v3i16 support to SDag
Sebastian Neubauer [Thu, 23 Jul 2020 14:59:00 +0000 (16:59 +0200)]
[AMDGPU] Add v3f16/v3i16 support to SDag

Fix lowering and instruction selection for v3x16 types
and enable InstCombine to emit them.

This patch only implements it for the selection dag.
GlobalISel tests in GlobalISel/llvm.amdgcn.image.load.1d.d16.ll and
GlobalISel/llvm.amdgcn.image.store.2d.d16.ll still don't work.

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

3 years ago[X86] Assert that we've found a terminator instruction. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 15:17:35 +0000 (16:17 +0100)]
[X86] Assert that we've found a terminator instruction. NFCI.

Fixes clang static analayzer null dereference warning.

3 years ago[AMDGPU] Enable scheduling around FP MODE-setting instructions
Jay Foad [Wed, 9 Sep 2020 16:21:36 +0000 (17:21 +0100)]
[AMDGPU] Enable scheduling around FP MODE-setting instructions

Pre-gfx10 all MODE-setting instructions were S_SETREG_B32 which is
marked as having unmodeled side effects, which makes the machine
scheduler treat it as a barrier. Now that we have proper implicit $mode
operands we can use a no-side-effects S_SETREG_B32_mode pseudo instead
for setregs that only touch the FP MODE bits, to give the scheduler more
freedom.

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

3 years ago[AMDGPU] Add -show-mc-encoding to setreg tests
Jay Foad [Tue, 15 Sep 2020 11:00:38 +0000 (12:00 +0100)]
[AMDGPU] Add -show-mc-encoding to setreg tests

This is a pre-commit for D87446 "[AMDGPU] Enable scheduling around FP MODE-setting instructions"

3 years ago[X86][SSE] Move VZEXT_MOVL(INSERT_SUBVECTOR(UNDEF,X,0)) handling into combineTargetSh...
Simon Pilgrim [Wed, 16 Sep 2020 14:46:23 +0000 (15:46 +0100)]
[X86][SSE] Move VZEXT_MOVL(INSERT_SUBVECTOR(UNDEF,X,0)) handling into combineTargetShuffle.

Now that we're getting better at combining shuffles of different vector widths, this can now be performed as part of the standard target shuffle combines and isn't required for cleanup.

Exposed a minor issue in combineX86ShufflesRecursively where we failed to check if a shuffle's src ops were simple types.

3 years ago[mlir][openacc] Add missing operands for acc.parallel operation
Valentin Clement [Wed, 16 Sep 2020 14:48:51 +0000 (10:48 -0400)]
[mlir][openacc] Add missing operands for acc.parallel operation

Add missing operands to represent copin with readonly modifier, copyout with zero
modifier, create with zero modifier and default clause.

Reviewed By: ftynse

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

3 years agoEnable inlining for Linalg dialect
Eugene Zhulenev [Wed, 16 Sep 2020 14:03:35 +0000 (10:03 -0400)]
Enable inlining for Linalg dialect

Enable inlining for Linalg dialect.

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

3 years ago[Partial Inliner] Compute intrinsic cost through TTI
Dangeti Tharun kumar [Wed, 16 Sep 2020 14:11:24 +0000 (15:11 +0100)]
[Partial Inliner] Compute intrinsic cost through TTI

https://bugs.llvm.org/show_bug.cgi?id=45932

assert(OutlinedFunctionCost >= Cloner.OutlinedRegionCost && "Outlined function cost should be no less than the outlined region") getting triggered in computeBBInlineCost.

Intrinsics like "assume" are considered regular function calls while computing costs.
This patch enables computeBBInlineCost to queries TTI for intrinsic call cost.

Reviewed By: fhahn

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

3 years ago[mlir] Model StringRef in C API
Alex Zinenko [Tue, 15 Sep 2020 10:04:59 +0000 (12:04 +0200)]
[mlir] Model StringRef in C API

Numerous MLIR functions return instances of `StringRef` to refer to a
non-owning fragment of a string (usually owned by the context). This is a
relatively simple class that is defined in LLVM. Provide a simple wrapper in
the MLIR C API that contains the pointer and length of the string fragment and
use it for Standard attribute functions that return StringRef instead of the
previous, callback-based mechanism.

Reviewed By: stellaraccident

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

3 years ago[DSE] Add another test cases with loop carried dependence.
Florian Hahn [Wed, 16 Sep 2020 13:49:44 +0000 (14:49 +0100)]
[DSE] Add another test cases with loop carried dependence.

3 years ago[OPENMP]Do not allow threadprivates as base for array-like reduction.
Alexey Bataev [Wed, 16 Sep 2020 12:10:55 +0000 (08:10 -0400)]
[OPENMP]Do not allow threadprivates as base for array-like reduction.

The base must be shared between the threads, threadprivates are not
allowed to be bases for array-like reductions.

Reviewed By: jdoerfert

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

3 years agoAdd section with details about DAGs.
Paul C. Anagnostopoulos [Tue, 15 Sep 2020 18:18:51 +0000 (14:18 -0400)]
Add section with details about DAGs.

3 years ago[SLP] fix formatting; NFC
Sanjay Patel [Wed, 16 Sep 2020 12:47:35 +0000 (08:47 -0400)]
[SLP] fix formatting; NFC

Also move variable declarations closer to usage and add code comments.

3 years ago[clang-format] [NFC] Fix spelling mistake in the documentation
mydeveloperday [Wed, 16 Sep 2020 12:45:45 +0000 (13:45 +0100)]
[clang-format] [NFC] Fix spelling mistake in the documentation

Ensure ClangFormatStyleOptions.rst can be regenerated from Format.h

Patch By: YangZhihui

Reviewed By: MyDeveloperDay

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

3 years ago[ARM] Reorder some logic
Sam Parker [Wed, 16 Sep 2020 12:38:36 +0000 (13:38 +0100)]
[ARM] Reorder some logic

Re-order some checks in ValidateMVEInst.

3 years ago[SLP] remove uses of 'auto' that obscure functionality; NFC
Sanjay Patel [Wed, 16 Sep 2020 12:26:21 +0000 (08:26 -0400)]
[SLP] remove uses of 'auto' that obscure functionality; NFC

3 years ago[SLP] remove redundant size check; NFC
Sanjay Patel [Wed, 16 Sep 2020 12:11:19 +0000 (08:11 -0400)]
[SLP] remove redundant size check; NFC

We bail out on small array size anyway.

3 years ago[SLP] move loop index variable declaration to its use; NFC
Sanjay Patel [Wed, 16 Sep 2020 11:44:03 +0000 (07:44 -0400)]
[SLP] move loop index variable declaration to its use; NFC

3 years ago[SLP] change poorly named variable; NFC
Sanjay Patel [Wed, 16 Sep 2020 11:40:15 +0000 (07:40 -0400)]
[SLP] change poorly named variable; NFC

'V' shadows a function argument.

3 years ago[RDA] Fix getUniqueReachingDef for self loops
Sam Parker [Wed, 16 Sep 2020 11:42:58 +0000 (12:42 +0100)]
[RDA] Fix getUniqueReachingDef for self loops

We've fixed the case where this could return an instruction after the
given instruction, but also means that we can falsely return a
'unique' def when they could be one coming from the backedge of a
loop.

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

3 years ago[Sema] isOpenMPCapturedDecl - assert we locate CapturedRegionScopeInfo. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 11:40:15 +0000 (12:40 +0100)]
[Sema] isOpenMPCapturedDecl - assert we locate CapturedRegionScopeInfo. NFCI.

Fixes clang static analayzer null dereference warning.

3 years agoUpdate dead links to Itanium and ARM ABIs. NFC
Sam McCall [Wed, 16 Sep 2020 11:42:01 +0000 (13:42 +0200)]
Update dead links to Itanium and ARM ABIs. NFC

3 years ago[AST] ASTReader::ReadModuleMapFileBlock - assert non-null Module. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 11:29:50 +0000 (12:29 +0100)]
[AST] ASTReader::ReadModuleMapFileBlock - assert non-null Module. NFCI.

At this stage the Module* shouldn't be null - add an assert to fix a clang static analyzer warning.

3 years agoTokenAnnotator.cpp - remove useless pointer null test. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 11:17:44 +0000 (12:17 +0100)]
TokenAnnotator.cpp - remove useless pointer null test. NFCI.

We dereference the Left pointer throughout the parseParens() function apart from this single case - just add an non-null assertion and drop the check.

Fixes clang static analayzer null dereference warning.

3 years agoCGBlocks.cpp - assert non-null CGF pointer. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 11:11:29 +0000 (12:11 +0100)]
CGBlocks.cpp - assert non-null CGF pointer. NFCI.

Fixes static analyzer warning.

3 years ago[ASTMatchers] Fix `hasBody` for the descendants of `FunctionDecl`
Adam Balogh [Fri, 11 Sep 2020 17:04:38 +0000 (19:04 +0200)]
[ASTMatchers] Fix `hasBody` for the descendants of `FunctionDecl`

//AST Matcher// `hasBody` is a polymorphic matcher that behaves
differently for loop statements and function declarations. The main
difference is the for functions declarations it does not only call
`FunctionDecl::getBody()` but first checks whether the declaration in
question is that specific declaration which has the body by calling
`FunctionDecl::doesThisDeclarationHaveABody()`. This is achieved by
specialization of the template `GetBodyMatcher`. Unfortunately template
specializations do not catch the descendants of the class for which the
template is specialized. Therefore it does not work correcly for the
descendants of `FunctionDecl`, such as `CXXMethodDecl`,
`CXXConstructorDecl`, `CXXDestructorDecl` etc. This patch fixes this
issue by using a template metaprogram.

The patch also introduces a new matcher `hasAnyBody` which matches
declarations which have a body present in the AST but not necessarily
belonging to that particular declaration.

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

3 years ago[clang-tidy] Crash fix for bugprone-misplaced-pointer-arithmetic-in-alloc
Adam Balogh [Tue, 15 Sep 2020 10:53:13 +0000 (12:53 +0200)]
[clang-tidy] Crash fix for bugprone-misplaced-pointer-arithmetic-in-alloc

Placement new operators on non-object types cause crash in
`bugprone-misplaced-pointer-arithmetic-in-alloc`. This patch fixes this
issue.

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

3 years ago[clangd] Actually parse Index section of the YAML file.
Adam Czachorowski [Tue, 15 Sep 2020 18:13:00 +0000 (20:13 +0200)]
[clangd] Actually parse Index section of the YAML file.

This fixes a bug in dbf486c0de92c76df77c1a1f815cf16533ecbb3a, which
introduced the Index section of the config, but did not register the
parse method, so it didn't work in a YAML file (but did in a test).

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

3 years ago[ARM] Fix tail predication predicate tracking
Sam Parker [Wed, 16 Sep 2020 10:47:26 +0000 (11:47 +0100)]
[ARM] Fix tail predication predicate tracking

Clear the CurrentPredicate when we find an instruction which would
completely overwrite the VPR. This fix essentially means we're back
to not really being able to handle VPT instructions when tail
predicating.

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

3 years ago[ARM] Add more validForTailPredication
Sam Parker [Wed, 16 Sep 2020 10:17:13 +0000 (11:17 +0100)]
[ARM] Add more validForTailPredication

Modify the unit test to inspect all MVE instructions and mark the
load/store/move of vpr/p0 as valid, as well as the remaining scalar
shifts.

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

3 years agoFix table formatting after D87686
Kirill Bobyrev [Wed, 16 Sep 2020 10:27:20 +0000 (12:27 +0200)]
Fix table formatting after D87686

3 years ago[DAG] Remover getOperand() call. NFCI.
Simon Pilgrim [Wed, 16 Sep 2020 10:02:09 +0000 (11:02 +0100)]
[DAG] Remover getOperand() call. NFCI.

3 years ago[clang-tidy] Improve documentation on Clangd integration
Kirill Bobyrev [Wed, 16 Sep 2020 10:09:29 +0000 (12:09 +0200)]
[clang-tidy] Improve documentation on Clangd integration

The integration is already complete; this patch updates information as well as
suggests using Clang-Tidy via Clangd integration that is vastly available
in most editors through LSP client plugins.

Reviewed By: hokein

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

3 years ago[ARM][LowOverheadLoops] Fix tests after ef0b9f3
Sam Tebbs [Wed, 16 Sep 2020 09:59:19 +0000 (10:59 +0100)]
[ARM][LowOverheadLoops] Fix tests after ef0b9f3

ef0b9f3 didn't update the tests that it affected.

3 years ago[llvm-readobj][test] - Improve section-symbols.test
Georgii Rymar [Mon, 14 Sep 2020 13:38:29 +0000 (16:38 +0300)]
[llvm-readobj][test] - Improve section-symbols.test

`section-symbols.test` tests how we print section symbols in
different situations.

We might have 2 different cases:
1) A named STT_SECTION symbol.
2) An unnamed STT_SECTION symbol.

Usually section symbols have no name and then `--symbols` uses their
section names when prints them. If symbol has a name, then it is used.

For `--relocations` we also want to have this logic probably,
but currently we always ignore symbol names and always use section names.
It is not consistent with GNU readelf and with our logic for `--symbols`.

This patch refines testing to document the existent behavior and improve
coverage.

Differential revision: https://reviews.llvm.org/D87612

3 years ago[LLD][ELF] Optimize linker script filename glob pattern matching NFC
Andrew Ng [Wed, 9 Sep 2020 09:48:21 +0000 (10:48 +0100)]
[LLD][ELF] Optimize linker script filename glob pattern matching NFC

Optimize the filename glob pattern matching in
LinkerScript::computeInputSections() and LinkerScript::shouldKeep().

Add InputFile::getNameForScript() which gets and if required caches the
Inputfile's name used for linker script matching. This avoids the
overhead of name creation that was in getFilename() in LinkerScript.cpp.

Add InputSectionDescription::matchesFile() and
SectionPattern::excludesFile() which perform the glob pattern matching
for an InputFile and make use of a cache of the previous result. As both
computeInputSections() and shouldKeep() process sections in order and
the sections of the same InputFile are contiguous, these single entry
caches can significantly speed up performance for more complex glob
patterns.

These changes have been seen to reduce link time with --gc-sections by
up to ~40% with linker scripts that contain KEEP filename glob patterns
such as "*crtbegin*.o".

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

3 years ago[Support] Add GlobPattern::isTrivialMatchAll()
Andrew Ng [Mon, 7 Sep 2020 12:22:12 +0000 (13:22 +0100)]
[Support] Add GlobPattern::isTrivialMatchAll()

GlobPattern::isTrivialMatchAll() returns true for the GlobPattern "*"
which will match all inputs.

This can be used to avoid performing expensive preparation of the input
for match() when the result of the match will always be true.

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

3 years ago[clangd] Implement hot index reloading for clangd-index-server
Kirill Bobyrev [Wed, 16 Sep 2020 09:11:31 +0000 (11:11 +0200)]
[clangd] Implement hot index reloading for clangd-index-server

This patch adds a mechanism to load new versions of index into
clangd-index-server using SwapIndex and FileStatus information about last
modification time without downtime.

Reviewed By: kadircet

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

3 years ago[llvm-readobj][test] - Address a forgotten review comment for D86923.
Georgii Rymar [Wed, 16 Sep 2020 08:50:14 +0000 (11:50 +0300)]
[llvm-readobj][test] - Address a forgotten review comment for D86923.

Seems I've forgot to address this bit and this looks like a reason
of a failture on mac (http://45.33.8.238/mac/20491/step_11.txt).

3 years ago[DebugInfo][flang] DISubrange support for fortran assumed size array
Alok Kumar Sharma [Thu, 10 Sep 2020 06:23:43 +0000 (11:53 +0530)]
[DebugInfo][flang] DISubrange support for fortran assumed size array

This is needed to support assumed size array of fortran which can have missing upperBound/count
, contrary to current DISubrange support.
Example:
subroutine sub (array1, array2)
  integer :: array1 (*)
  integer :: array2 (4:9, 10:*)

  array1(7:8) = 9
  array2(5, 10) = 10
end subroutine
Now the validation check is relaxed for fortran.

Reviewed By: aprantl

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

3 years agoFollow up rG635b87511ec3: forgot to add/commit the new test file. NFC.
Sjoerd Meijer [Wed, 16 Sep 2020 08:34:31 +0000 (09:34 +0100)]
Follow up rG635b87511ec3: forgot to add/commit the new test file. NFC.

3 years ago[ARM][LowOverheadLoops] Combine a VCMP and VPST into a VPT
Sam Tebbs [Mon, 14 Sep 2020 14:44:54 +0000 (15:44 +0100)]
[ARM][LowOverheadLoops] Combine a VCMP and VPST into a VPT

This patch combines a VCMP followed by a VPST into a VPT, which has the
same semantics as the combination of the former two.

3 years ago[clangd] Don't use zlib when it's unavailable.
Aleksandr Platonov [Wed, 16 Sep 2020 08:04:53 +0000 (11:04 +0300)]
[clangd] Don't use zlib when it's unavailable.

Without this patch `clangd` crashes at try to load compressed string table when `zlib` is not available.
Example:
- Build `clangd` with MinGW (`zlib` found)
- Build index
- Build `clangd` with Visual Studio compiler (`zlib` not found)
- Try to load index

Reviewed By: sammccall, adamcz

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

3 years ago[ARM][MachineOutliner] Add calls handling.
Yvan Roux [Wed, 16 Sep 2020 07:54:26 +0000 (09:54 +0200)]
[ARM][MachineOutliner] Add calls handling.

Handles calls inside outlined regions, by saving and restoring the link
register.

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

3 years agoRevert "[Asan] Accept __lsan_ignore_object for redzone pointer"
Vitaly Buka [Wed, 16 Sep 2020 07:27:13 +0000 (00:27 -0700)]
Revert "[Asan] Accept __lsan_ignore_object for redzone pointer"

We still keep AddrIsInside.

This reverts commit 1d70984fa220f966ddcecd7906c5f10368fe1b93.

3 years agoRevert "[Asan] Fix false leak report"
Vitaly Buka [Wed, 16 Sep 2020 07:03:07 +0000 (00:03 -0700)]
Revert "[Asan] Fix false leak report"

Additional investigated confirmed that issue is not about
AddrIsInside, but missing registers.

This reverts commit 9d01612db48fa27d18c6320974b8d711572e5c67.

3 years ago[Test] Add positive range checks tests in addition to negative
Max Kazantsev [Wed, 16 Sep 2020 07:24:00 +0000 (14:24 +0700)]
[Test] Add positive range checks tests in addition to negative

3 years ago[flang] Fix docs build
Richard Barton [Wed, 16 Sep 2020 07:18:08 +0000 (08:18 +0100)]
[flang] Fix docs build

Apply a local fix to an issue with recommonmark's AutoStructify extension
when used with certain versions of sphinx.

See https://github.com/readthedocs/recommonmark/issues/93

Reviewed By: hans

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

3 years ago[Test] Some more potential range check elimination opportunities
Max Kazantsev [Wed, 16 Sep 2020 06:59:41 +0000 (13:59 +0700)]
[Test] Some more potential range check elimination opportunities

3 years ago[MemorySSA] Report unoptimized as None, not MayAlias.
Alina Sbirlea [Wed, 16 Sep 2020 05:52:42 +0000 (22:52 -0700)]
[MemorySSA] Report unoptimized as None, not MayAlias.

3 years ago[obj2yaml] Add support for dumping the .debug_addr(v5) section.
Xing GUO [Wed, 16 Sep 2020 06:46:12 +0000 (14:46 +0800)]
[obj2yaml] Add support for dumping the .debug_addr(v5) section.

This patch adds support for dumping the .debug_addr(v5) section to
obj2yaml.

Reviewed By: jhenderson

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

3 years ago[llvm-rc] Lowercase the option definitions. NFC.
Martin Storsjö [Wed, 5 Aug 2020 08:00:21 +0000 (11:00 +0300)]
[llvm-rc] Lowercase the option definitions. NFC.

This matches how such options are most commonly defined in other tools.

This was pointed out in an earlier review a few months ago, that
the llvm-rc td entries felt shouty.

The INCLUDE option is renamed to includepath, to avoid clashing with
the tablegen include directive.

3 years ago[llvm-rc] Update a comment. NFC.
Martin Storsjö [Fri, 31 Jul 2020 14:41:20 +0000 (17:41 +0300)]
[llvm-rc] Update a comment. NFC.

Fix a typo and mention one missing step.

3 years ago[llvm-rc] Allow omitting components from VERSIONINFO versions
Martin Storsjö [Sat, 12 Sep 2020 21:24:26 +0000 (00:24 +0300)]
[llvm-rc] Allow omitting components from VERSIONINFO versions

MS rc.exe doesn't require specifying all 4 components.

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

3 years ago[MemorySSA] Set MustDominate to true for PhiTranslation.
Alina Sbirlea [Wed, 16 Sep 2020 00:42:03 +0000 (17:42 -0700)]
[MemorySSA] Set MustDominate to true for PhiTranslation.

3 years ago[X86] Don't scalarize gather/scatters with non-power of 2 element counts. Widen instead.
Craig Topper [Wed, 16 Sep 2020 06:22:53 +0000 (23:22 -0700)]
[X86] Don't scalarize gather/scatters with non-power of 2 element counts. Widen instead.

We can pad the mask with zeros in order to widen. We already do
this for power 2 types that are smaller than a legal type.

3 years ago[X86] Add test case for non-power of 2 scatter. NFC
Craig Topper [Wed, 16 Sep 2020 05:45:50 +0000 (22:45 -0700)]
[X86] Add test case for non-power of 2 scatter. NFC

3 years ago[ThinLTO] Relax thinlto_embed_bitcode.ll check
Mircea Trofin [Wed, 16 Sep 2020 05:40:13 +0000 (22:40 -0700)]
[ThinLTO] Relax thinlto_embed_bitcode.ll check

Fixes fuscia test [1] - the thinlto annotations may not always be there.

[1] http://lab.llvm.org:8011/builders/fuchsia-x86_64-linux/builds/11312

3 years agolibclc: Add a __builtin to let SPIRV targets select between SW and HW FMA
Daniel Stone [Tue, 15 Sep 2020 17:01:04 +0000 (13:01 -0400)]
libclc: Add a __builtin to let SPIRV targets select between SW and HW FMA

Reviewer: jenatali jvesely
Differential Revision: https://reviews.llvm.org/D85910

3 years ago[MLIR][NFC] Value print update for block arguments
Uday Bondhugula [Tue, 15 Sep 2020 05:28:45 +0000 (10:58 +0530)]
[MLIR][NFC] Value print update for block arguments

Emit some more information when printing/dumping `Value`s of
`BlockArgument` kind. This is purely to help for debugging purposes.

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

3 years ago[lldb] Reword CompilerType docstring to not say "generic type"
Dave Lee [Mon, 14 Sep 2020 20:53:50 +0000 (13:53 -0700)]
[lldb] Reword CompilerType docstring to not say "generic type"

Since "generic type" has a precise meaning in some languages, reword the docstring of `CompilerType` to avoid ambiguity.

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

3 years ago[clang-tidy] Fix crash in modernize-use-noexcept on uninstantiated throw class
Zinovy Nis [Mon, 14 Sep 2020 19:08:00 +0000 (22:08 +0300)]
[clang-tidy] Fix crash in modernize-use-noexcept on uninstantiated throw class

Bug: https://bugs.llvm.org/show_bug.cgi?id=47446

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

3 years ago[Test] Add signed version of a test
Max Kazantsev [Wed, 16 Sep 2020 04:30:21 +0000 (11:30 +0700)]
[Test] Add signed version of a test

3 years ago[InstCombine] Add tests for statepoint simplification
Serguei Katkov [Mon, 7 Sep 2020 05:56:34 +0000 (12:56 +0700)]
[InstCombine] Add tests for statepoint simplification

This tests increase coverage for change introduced in D85959

Reviewers: reames, reames
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D87224

3 years agoFully qualify some more namespace in MLIR ODS to be more friendly to dialects not...
Mehdi Amini [Wed, 16 Sep 2020 03:40:36 +0000 (03:40 +0000)]
Fully qualify some more namespace in MLIR ODS to be more friendly to dialects not defined under the mlir namespace (NFC)

3 years ago[NewPM] Fix opt-hot-cold-split.ll under NPM
Arthur Eubanks [Wed, 16 Sep 2020 03:29:20 +0000 (20:29 -0700)]
[NewPM] Fix opt-hot-cold-split.ll under NPM

Pin to legacy PM, there are already NPM RUN lines.