platform/upstream/llvm.git
5 years agoOptions: Reduce code duplication
Pavel Labath [Wed, 10 Jul 2019 17:09:47 +0000 (17:09 +0000)]
Options: Reduce code duplication

Summary:
While investigating breakages caused by D63110, I noticed we were
building the short options strings in three places. Some of them used a
leading ':' to detect missing arguments, and some didn't. This was the
indirect cause of D63110. Here, I move the common code into a utility
function.

Also, unify the code which appends the sentinel value at the end of the
option vector, and make it harder for users to pass invalid argc-argv
combos to getopt (another component of D63110) by having the
OptionParser::Parse function take a (Mutable)ArrayRef.

This unification has uncovered that we don't handle missing arguments
while building aliases, However, it's not possible to write an effective
test for this, as right now it is not possible to return an error out of
the alias parsing code (which means we are printing the generic
"failure" message even after this patch).

Reviewers: mgorny, aprantl

Reviewed By: mgorny

Subscribers: lldb-commits

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

llvm-svn: 365665

5 years ago[TargetLowering] support BlockAddress as "i" inline asm constraint
Nick Desaulniers [Wed, 10 Jul 2019 17:08:25 +0000 (17:08 +0000)]
[TargetLowering] support BlockAddress as "i" inline asm constraint

Summary:
This allows passing address of labels to inline assembly "i" input
constraints.

Fixes pr/42502.

Reviewers: ostannard

Reviewed By: ostannard

Subscribers: void, echristo, nathanchance, ostannard, javed.absar, hiraditya, llvm-commits, srhines

Tags: #llvm

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

llvm-svn: 365664

5 years ago[NFC][InstCombine] Fixup some tests in just-added "omit mask before left-shift" tests
Roman Lebedev [Wed, 10 Jul 2019 16:54:13 +0000 (16:54 +0000)]
[NFC][InstCombine] Fixup some tests in just-added "omit mask before left-shift" tests

llvm-svn: 365663

5 years agoELF: Add support for R_AARCH64_ADR_PREL_PG_HI21_NC relocation.
Peter Collingbourne [Wed, 10 Jul 2019 16:42:20 +0000 (16:42 +0000)]
ELF: Add support for R_AARCH64_ADR_PREL_PG_HI21_NC relocation.

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

llvm-svn: 365662

5 years agoMC: AArch64: Add support for pg_hi21_nc relocation specifier.
Peter Collingbourne [Wed, 10 Jul 2019 16:36:46 +0000 (16:36 +0000)]
MC: AArch64: Add support for pg_hi21_nc relocation specifier.

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

llvm-svn: 365661

5 years ago[CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451)
Vedant Kumar [Wed, 10 Jul 2019 16:32:20 +0000 (16:32 +0000)]
[CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451)

An alloca which can be sunk into the extraction region may have more
than one bitcast use. Move these uses along with the alloca to prevent
use-before-def.

Testing: check-llvm, stage2 build of clang

Fixes llvm.org/PR42451.

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

llvm-svn: 365660

5 years ago[CodeExtractor] Simplify findAllocas, NFC
Vedant Kumar [Wed, 10 Jul 2019 16:32:16 +0000 (16:32 +0000)]
[CodeExtractor] Simplify findAllocas, NFC

Split getLifetimeMarkers out into its own method and have it return a
struct.

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

llvm-svn: 365659

5 years agoGlobalISel: Legalization for G_FMINNUM/G_FMAXNUM
Matt Arsenault [Wed, 10 Jul 2019 16:31:19 +0000 (16:31 +0000)]
GlobalISel: Legalization for G_FMINNUM/G_FMAXNUM

llvm-svn: 365658

5 years agoGlobalISel: Define the full family of FP min/max instructions
Matt Arsenault [Wed, 10 Jul 2019 16:31:15 +0000 (16:31 +0000)]
GlobalISel: Define the full family of FP min/max instructions

llvm-svn: 365657

5 years ago[X86] EltsFromConsecutiveLoads - remove duplicate check for element size. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 16:22:31 +0000 (16:22 +0000)]
[X86] EltsFromConsecutiveLoads - remove duplicate check for element size. NFCI.

We've already checked that each element is the correct contributory size for VT when we inspect the elements for Undef/Zero/Load.

llvm-svn: 365656

5 years ago[X86] EltsFromConsecutiveLoads - ensure element reg/store sizes are the same size...
Simon Pilgrim [Wed, 10 Jul 2019 16:14:26 +0000 (16:14 +0000)]
[X86] EltsFromConsecutiveLoads - ensure element reg/store sizes are the same size. NFCI.

This renames the type so it doesn't sound like its based off the load size - as we're moving towards supporting combining loads of different sizes.

llvm-svn: 365655

5 years agoObjectFileELF: Add support for gnu-style compressed sections
Pavel Labath [Wed, 10 Jul 2019 16:10:43 +0000 (16:10 +0000)]
ObjectFileELF: Add support for gnu-style compressed sections

With this style, a compressed section is indicated by a "z" in the section
name, instead of a section header flag. This patch consists of two small tweaks:
- use an llvm Decompressor method in order to properly detect compressed sections
- make sure we recognise .zdebug_info (and friends) when classifying section types.

llvm-svn: 365654

5 years agoAMDGPU: Serialize mode from MachineFunctionInfo
Matt Arsenault [Wed, 10 Jul 2019 16:09:26 +0000 (16:09 +0000)]
AMDGPU: Serialize mode from MachineFunctionInfo

llvm-svn: 365653

5 years ago[PatternMatch] Generalize m_SpecificInt_ULT() to take ICmpInst::Predicate
Roman Lebedev [Wed, 10 Jul 2019 16:07:35 +0000 (16:07 +0000)]
[PatternMatch] Generalize m_SpecificInt_ULT() to take ICmpInst::Predicate

As discussed in the original review, this may be useful,
so let's just do it.

llvm-svn: 365652

5 years ago[CMake][NFC] Remove dead code lldb_append_link_flags() from AddLLDB.cmake
Stefan Granitz [Wed, 10 Jul 2019 16:02:46 +0000 (16:02 +0000)]
[CMake][NFC] Remove dead code lldb_append_link_flags() from AddLLDB.cmake

llvm-svn: 365651

5 years ago[CMake][NFC] Polish comments in AddLLDB.cmake
Stefan Granitz [Wed, 10 Jul 2019 16:00:03 +0000 (16:00 +0000)]
[CMake][NFC] Polish comments in AddLLDB.cmake

llvm-svn: 365650

5 years ago[CMake] Add Apple-lldb-Linux.cmake cache
Stefan Granitz [Wed, 10 Jul 2019 15:59:56 +0000 (15:59 +0000)]
[CMake] Add Apple-lldb-Linux.cmake cache

llvm-svn: 365649

5 years ago[CMake] Polish Apple-lldb caches
Stefan Granitz [Wed, 10 Jul 2019 15:59:50 +0000 (15:59 +0000)]
[CMake] Polish Apple-lldb caches

llvm-svn: 365648

5 years ago[Remarks] Add cl::Hidden to -remarks-yaml-string-table
Francis Visoiu Mistrih [Wed, 10 Jul 2019 15:46:36 +0000 (15:46 +0000)]
[Remarks] Add cl::Hidden to -remarks-yaml-string-table

It was showing up in a lot of unrelated tools.

llvm-svn: 365647

5 years agodocs/GithubMove.rst: Remove obsolete information
Tom Stellard [Wed, 10 Jul 2019 15:39:37 +0000 (15:39 +0000)]
docs/GithubMove.rst: Remove obsolete information

Summary:
Remove references to the multirepo and update the document to
reflect the current state of the github repository.

Reviewers: mehdi_amini, jyknight

Subscribers: jdoerfert, llvm-commits

Tags: #llvm

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

llvm-svn: 365645

5 years ago[FileCheck] Use bool operator to test Expected
Thomas Preud'homme [Wed, 10 Jul 2019 15:31:19 +0000 (15:31 +0000)]
[FileCheck] Use bool operator to test Expected

Use bool() consistently to get boolean value of Error, Optional and
Expected types in EXPECT calls. While static_cast is used in all cases
but one, bool provides more clarity and makes more sense as a new
default.

llvm-svn: 365644

5 years ago[AMDGPU] Increased the number of implicit argument bytes for both OpenCL and HIP...
Christudasan Devadasan [Wed, 10 Jul 2019 15:10:08 +0000 (15:10 +0000)]
[AMDGPU] Increased the number of implicit argument bytes for both OpenCL and HIP (CLANG).

To enable a new implicit kernel argument,
increased the number of argument bytes from 48 to 56.

Reviewed By: yaxunl

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

llvm-svn: 365643

5 years agoNFC: fixed typo #ifdef --> #if to allow macro set to 0 work correctly
Andrey Churbanov [Wed, 10 Jul 2019 15:09:37 +0000 (15:09 +0000)]
NFC: fixed typo #ifdef --> #if to allow macro set to 0 work correctly

llvm-svn: 365642

5 years ago[NFC][InstCombine] Redundant masking before left-shift (PR42563)
Roman Lebedev [Wed, 10 Jul 2019 15:08:06 +0000 (15:08 +0000)]
[NFC][InstCombine] Redundant masking before left-shift (PR42563)

alive proofs:
a,b:     https://rise4fun.com/Alive/4zsf
c,d,e,f: https://rise4fun.com/Alive/RC49

Indeed, not all of these patterns are canonical.
But since this fold will only produce a single instruction
i'm really interested in handling even uncanonical patterns.

Other than these 6 patterns, i can't think of any other
reasonable variants right now, although i'm sure they exist.

For now let's start with patterns where both shift amounts are variable,
with trivial constant "offset" between them, since i believe this is
both simplest to handle and i think this is most common.
But again, there are likely other variants where we could use
ValueTracking/ConstantRange to handle more cases.

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

llvm-svn: 365641

5 years ago[AMDGPU] Allow abs/neg source modifiers on v_cndmask_b32
Jay Foad [Wed, 10 Jul 2019 14:53:47 +0000 (14:53 +0000)]
[AMDGPU] Allow abs/neg source modifiers on v_cndmask_b32

Summary:
D59191 added support for these modifiers in the assembler and
disassembler. This patch just teaches instruction selection that it can
use them.

Reviewers: arsenm, tstellar

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 365640

5 years ago[analyzer]Add user docs rst
Gabor Marton [Wed, 10 Jul 2019 14:49:53 +0000 (14:49 +0000)]
[analyzer]Add user docs rst

Summary:
Add user documentation page. This is an empty page atm, later patches will add
the specific user documentatoins.

Reviewers: dkrupp

Subscribers: whisperity, xazax.hun, baloghadamsoftware, szepet, rnkovacs, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, gamesh411, Charusso, cfe-commits

Tags: #clang

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

llvm-svn: 365639

5 years agoRemove two unused member variables.
Nico Weber [Wed, 10 Jul 2019 14:49:36 +0000 (14:49 +0000)]
Remove two unused member variables.

They were added over 10 years ago in r66575 and have never been used as
far as I can tell.

(r67087 added similar fields to Compilation, and those are used.)

llvm-svn: 365638

5 years ago[InstCombine] pow(C,x) -> exp2(log2(C)*x)
David Bolvansky [Wed, 10 Jul 2019 14:43:27 +0000 (14:43 +0000)]
[InstCombine] pow(C,x) -> exp2(log2(C)*x)

Summary:
Transform
pow(C,x)

To
exp2(log2(C)*x)

if C > 0, C != inf, C != NaN (and C is not power of 2, since we have some fold for such case already).

log(C) is folded by the compiler and exp2 is much faster to compute than pow.

Reviewers: spatel, efriedma, evandro

Reviewed By: evandro

Subscribers: lebedev.ri, llvm-commits

Tags: #llvm

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

llvm-svn: 365637

5 years ago[InferFunctionAttrs] add/adjust tests for dereferenceable; NFC
Sanjay Patel [Wed, 10 Jul 2019 14:41:47 +0000 (14:41 +0000)]
[InferFunctionAttrs] add/adjust tests for dereferenceable; NFC

Based on review comments for D64258.

llvm-svn: 365636

5 years ago[LLD][ELF] - Linkerscript: fix FILL() expressions handling.
George Rimar [Wed, 10 Jul 2019 14:36:48 +0000 (14:36 +0000)]
[LLD][ELF] - Linkerscript: fix FILL() expressions handling.

D64130 introduced a bug described in the following message:
https://reviews.llvm.org/D64130#1571560

The problem can happen with the following script:

SECTIONS {
  .out : {
...
   FILL(0x10101010)
   *(.aaa)
...
}

The current code tries to read (0x10101010) as an expression and
does not break when meets *, what results in a script parsing error.

In this patch, I verify that FILL command's expression always wrapped in ().
And at the same time =<fillexp> expression can be both wrapped or unwrapped.
I checked it matches to bfd/gold.

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

llvm-svn: 365635

5 years ago[clangd] Filter out non-governed files from broadcast
Kadir Cetinkaya [Wed, 10 Jul 2019 14:11:46 +0000 (14:11 +0000)]
[clangd] Filter out non-governed files from broadcast

Summary:
This also turns off implicit discovery of additional compilation
databases.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits

Tags: #clang

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

llvm-svn: 365634

5 years agogn build: Merge r365585
Nico Weber [Wed, 10 Jul 2019 14:05:13 +0000 (14:05 +0000)]
gn build: Merge r365585

llvm-svn: 365633

5 years ago[clangd] Trim spaces around parsed include in include extractor
Kadir Cetinkaya [Wed, 10 Jul 2019 13:59:13 +0000 (13:59 +0000)]
[clangd] Trim spaces around parsed include in include extractor

llvm-svn: 365632

5 years ago[clangd] Add a flag to clangdServer rename function to control whether we want format...
Haojian Wu [Wed, 10 Jul 2019 13:44:22 +0000 (13:44 +0000)]
[clangd] Add a flag to clangdServer rename function to control whether we want format the replacements.

Summary:
This would allow clangd embedders to use the ClangdServer::rename for other
purposes (highlighting all the occurrences of the symbol in prepare
stage).

Reviewers: sammccall, ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 365631

5 years ago[docs][llvm-symbolizer] Fix grammar
James Henderson [Wed, 10 Jul 2019 13:40:45 +0000 (13:40 +0000)]
[docs][llvm-symbolizer] Fix grammar

llvm-svn: 365630

5 years agoLoop pragma parsing. NFC.
Sjoerd Meijer [Wed, 10 Jul 2019 13:34:57 +0000 (13:34 +0000)]
Loop pragma parsing. NFC.

I would like to add some pragma handling here, but couldn't resist a little NFC
and tidy up first.

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

llvm-svn: 365629

5 years ago[X86] EltsFromConsecutiveLoads - cleanup Zero/Undef/Load element collection. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 13:28:13 +0000 (13:28 +0000)]
[X86] EltsFromConsecutiveLoads - cleanup Zero/Undef/Load element collection. NFCI.

llvm-svn: 365628

5 years ago[MIPS GlobalISel] Select float and double phi
Petar Avramovic [Wed, 10 Jul 2019 13:18:13 +0000 (13:18 +0000)]
[MIPS GlobalISel] Select float and double phi

Select float and double phi for MIPS32.

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

llvm-svn: 365627

5 years ago[MIPS GlobalISel] Select float and double load and store
Petar Avramovic [Wed, 10 Jul 2019 12:55:21 +0000 (12:55 +0000)]
[MIPS GlobalISel] Select float and double load and store

Select float and double load and store for MIPS32.

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

llvm-svn: 365626

5 years ago[FileCheck] Simplify numeric variable interface
Thomas Preud'homme [Wed, 10 Jul 2019 12:49:28 +0000 (12:49 +0000)]
[FileCheck] Simplify numeric variable interface

Summary:
This patch simplifies 2 aspects in the FileCheckNumericVariable code.

First, setValue() method is turned into a void function since being
called only on undefined variable is an invariant and is now asserted
rather than returned. This remove the assert from the callers.

Second, clearValue() method is also turned into a void function since
the only caller does not check its return value since it may be trying
to clear the value of variable that is already cleared without this
being noteworthy.

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya

Tags: #llvm

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

> llvm-svn: 365249

llvm-svn: 365625

5 years ago[FileCheck] Fix @LINE value after match failure
Thomas Preud'homme [Wed, 10 Jul 2019 12:49:17 +0000 (12:49 +0000)]
[FileCheck] Fix @LINE value after match failure

Summary:
The value of the FileCheckNumericVariable class instance representing
the @LINE numeric variable is set and cleared respectively before and
after substitutions are made, if any. However, when a substitution
fails, the value is not cleared. This causes the next substitution of
@LINE later on to give the wrong value since setValue is a nop if the
value is already set. This is what caused failures after commit r365249.

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield

Tags: #llvm

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

llvm-svn: 365624

5 years ago[NFC][ARM] Convert lambdas to static helpers
Sam Parker [Wed, 10 Jul 2019 12:29:43 +0000 (12:29 +0000)]
[NFC][ARM] Convert lambdas to static helpers

Break up and convert some of the lambdas in ARMLowOverheadLoops into
static functions.

llvm-svn: 365623

5 years ago[X86] EltsFromConsecutiveLoads - LDBase is non-null. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 12:22:59 +0000 (12:22 +0000)]
[X86] EltsFromConsecutiveLoads - LDBase is non-null. NFCI.

Don't bother checking for LDBase != null - it should be (and we assert that it is).

llvm-svn: 365622

5 years ago[DAGCombine] visitINSERT_SUBVECTOR - use uint64_t subvector index. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 12:21:35 +0000 (12:21 +0000)]
[DAGCombine] visitINSERT_SUBVECTOR - use uint64_t subvector index. NFCI.

Keep the uint64_t type from getZExtValue() to stop truncation/extension overflow warnings in MSVC in subvector index math.

llvm-svn: 365621

5 years ago[X86] EltsFromConsecutiveLoads - store Loads on a per-element basis. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 11:26:57 +0000 (11:26 +0000)]
[X86] EltsFromConsecutiveLoads - store Loads on a per-element basis. NFCI.

Cache the LoadSDNode nodes so we can easily map to/from the element index instead of packing them together - this will be useful for future patches for PR16739 etc.

llvm-svn: 365620

5 years ago[ELF] Update test case due to llvm r365618
Nikola Prica [Wed, 10 Jul 2019 11:19:44 +0000 (11:19 +0000)]
[ELF] Update test case due to llvm r365618

llvm-svn: 365619

5 years ago[ELF] Loose a condition for relocation with a symbol
Nikola Prica [Wed, 10 Jul 2019 11:17:48 +0000 (11:17 +0000)]
[ELF] Loose a condition for relocation with a symbol

Deleted code was introduced as a work around for a bug in the gold linker
(http://sourceware.org/PR16794). Test case that was given as a reason for
this part of code, the one on previous link, now works for the gold.
This condition is too strict and when a code is compiled with debug info
it forces generation of numerous relocations with symbol for architectures
that do not have relocation addend.

Reviewers: arsenm, espindola

Reviewed By: MaskRay

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

llvm-svn: 365618

5 years ago[CMake] `install-distribution` for LLDB on Darwin
Stefan Granitz [Wed, 10 Jul 2019 11:09:29 +0000 (11:09 +0000)]
[CMake] `install-distribution` for LLDB on Darwin

Summary:
There's a number of requirements for installing LLDB on macOS that are untypical for LLVM projects: use special install-prefix for LLDB.framework, ship headers and tools as framework resources, patch RPATHs, externalize debug-info to dSYM's and strip binaries with `-ST`. For some of it we could use `llvm_externalize_debuginfo()` in the past and just add special cases. However, this complicates the code for all projects and comes with the major drawback, that it adds all these actions at build-time, i.e. dSYM creation and stripping take a lot of time and don't make sense at build-time.

LLVM's distribution mechanism (https://llvm.org/docs/BuildingADistribution.html) appears to be the natural candidate to install LLDB. Based on D64399 (enable in standalone builds), this patch integrates framework installation with the distribution mechanism and adds custom stripping flags and dSYM creation at install-time. Unlike the abandoned D61952, it leaves build-tree binaries untouched, so there's no side-effects on testing. Potential install-order issues must be handled externally.

Please let me know what you think, while I run a few more tests and add remarks+documentation.

Reviewers: xiaobai, compnerd, JDevlieghere, davide, labath, mgorny

Reviewed By: xiaobai, JDevlieghere

Subscribers: lldb-commits, #lldb

Tags: #lldb

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

llvm-svn: 365617

5 years ago[CMake] Distribution builds for LLDB standalone
Stefan Granitz [Wed, 10 Jul 2019 11:09:11 +0000 (11:09 +0000)]
[CMake] Distribution builds for LLDB standalone

Summary:
Enable `distribution` and `install-distribution` targets in LLDB standalone and pre-populate the cache accordingly on macOS.
Documentation for distribution builds is here: https://llvm.org/docs/BuildingADistribution.html

Reviewers: xiaobai, mgorny, JDevlieghere, davide, compnerd

Reviewed By: xiaobai, JDevlieghere

Subscribers: lldb-commits, #lldb

Tags: #lldb

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

llvm-svn: 365616

5 years ago[CMake] Remove extra lldb-framework target
Stefan Granitz [Wed, 10 Jul 2019 11:09:01 +0000 (11:09 +0000)]
[CMake] Remove extra lldb-framework target

Summary: The custom lldb-framework target was meant to encapsulate all build steps that LLDB.framework needs on top of the ordinaly liblldb. In the end all of it happens in post-build steps, so we can do the same with liblldb and cut down another source of confusion.

Reviewers: xiaobai, JDevlieghere

Reviewed By: xiaobai, JDevlieghere

Subscribers: mgorny, lldb-commits, #lldb

Tags: #lldb

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

llvm-svn: 365615

5 years ago[X86][SSE] EltsFromConsecutiveLoads - add basic dereferenceable support
Simon Pilgrim [Wed, 10 Jul 2019 10:46:36 +0000 (10:46 +0000)]
[X86][SSE] EltsFromConsecutiveLoads - add basic dereferenceable support

This patch checks to see if the vector element loads are based off a dereferenceable pointer that covers the entire vector width, in which case we don't need to have element loads at both extremes of the vector width - just the start (base pointer) of it.

Another step towards partial vector loads......

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

llvm-svn: 365614

5 years agoFix const/non-const lambda return type warning. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 10:45:09 +0000 (10:45 +0000)]
Fix const/non-const lambda return type warning. NFCI.

llvm-svn: 365613

5 years agoFix "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.
Simon Pilgrim [Wed, 10 Jul 2019 10:34:44 +0000 (10:34 +0000)]
Fix "result of 32-bit shift implicitly converted to 64 bits" warning. NFCI.

llvm-svn: 365612

5 years ago[SimpleLoopUnswitch] Don't consider unswitching `switch` insructions with one unique...
Serguei Katkov [Wed, 10 Jul 2019 10:25:22 +0000 (10:25 +0000)]
[SimpleLoopUnswitch] Don't consider unswitching `switch` insructions with one unique successor

Only instructions with two or more unique successors should be considered for unswitching.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D64404

llvm-svn: 365611

5 years ago[AArch64] Fix vector vuqadd intrinsics operands
Diogo N. Sampaio [Wed, 10 Jul 2019 09:58:51 +0000 (09:58 +0000)]
[AArch64] Fix vector vuqadd intrinsics operands

Summary:
Change the vuqadd vector instrinsics to have the second argument as unsigned values, not signed,
accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, ostannard

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365609

5 years ago[NFC][AArch64] Fix vector vsqadd intrinsics operands
Diogo N. Sampaio [Wed, 10 Jul 2019 09:58:03 +0000 (09:58 +0000)]
[NFC][AArch64] Fix vector vsqadd intrinsics operands

Summary:
Change the vsqadd vector instrinsics to have the second argument as signed values, not unsigned,
accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, ostannard

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365608

5 years ago[clangd] Stop recording tokens before running clang-tidy
Ilya Biryukov [Wed, 10 Jul 2019 09:28:35 +0000 (09:28 +0000)]
[clangd] Stop recording tokens before running clang-tidy

modernize-trailing-return-type runs the preprocessor, breaking the token
collection logic.

This lead to a crash before, see the new test for a repro.

llvm-svn: 365607

5 years ago[clangd] Consume error to avoid assertion failures
Ilya Biryukov [Wed, 10 Jul 2019 09:18:09 +0000 (09:18 +0000)]
[clangd] Consume error to avoid assertion failures

When we fail to calculate #include insertion for a completion item.
Note that this change does not add a test, although that would be good.

llvm-svn: 365606

5 years agoMake functions and member variables distinguishable even after the name style change...
Rui Ueyama [Wed, 10 Jul 2019 09:10:01 +0000 (09:10 +0000)]
Make functions and member variables distinguishable even after the name style change. NFC.

llvm-svn: 365605

5 years ago[ARM] Enable VPUSH/VPOP aliases when either MVE or VFP is present
Mikhail Maltsev [Wed, 10 Jul 2019 08:59:17 +0000 (08:59 +0000)]
[ARM] Enable VPUSH/VPOP aliases when either MVE or VFP is present

Summary:
Use the same predicates as VSTMDB/VLDMIA since VPUSH/VPOP alias to
these.

Patch by Momchil Velikov.

Reviewers: ostannard, simon_tatham, SjoerdMeijer, samparker, t.p.northover, dmgreen

Reviewed By: dmgreen

Subscribers: javed.absar, kristof.beyls, hiraditya, dmgreen, llvm-commits

Tags: #llvm

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

llvm-svn: 365604

5 years ago[docs][llvm-dwarfdump] Normalise some wording
James Henderson [Wed, 10 Jul 2019 08:56:13 +0000 (08:56 +0000)]
[docs][llvm-dwarfdump] Normalise some wording

llvm-svn: 365603

5 years ago[clangd] Added highlighting for class and enum types.
Johan Vikstrom [Wed, 10 Jul 2019 08:41:25 +0000 (08:41 +0000)]
[clangd] Added highlighting for class and enum types.

Summary: Added highlighting for non-builtin types using VisitTypeLoc. Ignoring namespace qualifiers as for now.

Reviewers: hokein, sammccall, ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 365602

5 years ago[test/Object/nm-trivial-object.test] - Remove 4 precompiled binaries.
George Rimar [Wed, 10 Jul 2019 08:40:11 +0000 (08:40 +0000)]
[test/Object/nm-trivial-object.test] - Remove 4 precompiled binaries.

This converts 5 precompiled binaries to YAMLs,
removes 4 from inputs and performs a cleanup.

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

llvm-svn: 365601

5 years ago[SimpleLoopUnswitch] Add a test case exposing a bug
Serguei Katkov [Wed, 10 Jul 2019 08:25:48 +0000 (08:25 +0000)]
[SimpleLoopUnswitch] Add a test case exposing a bug

This test exposes a bug in SimpleLoopUnswitch that leads to a crash on
assert(SuccessorsCount > 1 && "Cannot unswitch a condition without multiple distinct successors!");
when SimpleLoopUnswitch considers unswitching of a loop by a switch with one successor.

Fix will be submitted soon.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: zzheng, llvm-commits
Differential Revision: https://reviews.llvm.org/D64403

llvm-svn: 365600

5 years ago[Syntax] Add assertion to catch invalid tokens early. NFC
Ilya Biryukov [Wed, 10 Jul 2019 08:24:42 +0000 (08:24 +0000)]
[Syntax] Add assertion to catch invalid tokens early. NFC

To help with identifiying root cause of a crash we are seeing.

llvm-svn: 365599

5 years ago[NFC][AArch64] Fix vector vqtb[lx][1-4]_s8 operand
Diogo N. Sampaio [Wed, 10 Jul 2019 08:16:49 +0000 (08:16 +0000)]
[NFC][AArch64] Fix vector vqtb[lx][1-4]_s8 operand

Summary:
Change the vqtb[lx][1-4]_s8 instrinsics to have the last argument as vector of unsigned valuse, not
signed, accordingly to https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

Reviewers: LukeCheeseman, DavidSpickett

Reviewed By: DavidSpickett

Subscribers: DavidSpickett, javed.absar, kristof.beyls, cfe-commits

Tags: #clang

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

llvm-svn: 365598

5 years agoSilence gcc warning by adding parentheses to condition [NFC]
Mikael Holmen [Wed, 10 Jul 2019 06:18:03 +0000 (06:18 +0000)]
Silence gcc warning by adding parentheses to condition [NFC]

Without this gcc 7.4.0 complains with

  ../include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:457:54: error: suggest parentheses around '&&' within '||' [-Werror=parentheses]
                    isArtifactCast(TmpDef->getOpcode()) &&
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
                        "Expecting copy or artifact cast here");
                        ~

llvm-svn: 365597

5 years ago[Coding style change] Rename variables so that they start with a lowercase letter
Rui Ueyama [Wed, 10 Jul 2019 05:00:37 +0000 (05:00 +0000)]
[Coding style change] Rename variables so that they start with a lowercase letter

This patch is mechanically generated by clang-llvm-rename tool that I wrote
using Clang Refactoring Engine just for creating this patch. You can see the
source code of the tool at https://reviews.llvm.org/D64123. There's no manual
post-processing; you can generate the same patch by re-running the tool against
lld's code base.

Here is the main discussion thread to change the LLVM coding style:
https://lists.llvm.org/pipermail/llvm-dev/2019-February/130083.html
In the discussion thread, I proposed we use lld as a testbed for variable
naming scheme change, and this patch does that.

I chose to rename variables so that they are in camelCase, just because that
is a minimal change to make variables to start with a lowercase letter.

Note to downstream patch maintainers: if you are maintaining a downstream lld
repo, just rebasing ahead of this commit would cause massive merge conflicts
because this patch essentially changes every line in the lld subdirectory. But
there's a remedy.

clang-llvm-rename tool is a batch tool, so you can rename variables in your
downstream repo with the tool. Given that, here is how to rebase your repo to
a commit after the mass renaming:

1. rebase to the commit just before the mass variable renaming,
2. apply the tool to your downstream repo to mass-rename variables locally, and
3. rebase again to the head.

Most changes made by the tool should be identical for a downstream repo and
for the head, so at the step 3, almost all changes should be merged and
disappear. I'd expect that there would be some lines that you need to merge by
hand, but that shouldn't be too many.

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

llvm-svn: 365595

5 years agoFix modular build issues caused by BitCodes.h
Kristina Brooks [Wed, 10 Jul 2019 03:52:31 +0000 (03:52 +0000)]
Fix modular build issues caused by BitCodes.h

Consolidate llvm::BWH_* statics into an enum to fix
module build issues. This fixes the LLVM_Bitcode module,
getting rid of -Wmodules-ambiguous-internal-linkage.

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

llvm-svn: 365594

5 years agoRevert accidental change to file
Aaron Smith [Wed, 10 Jul 2019 03:41:34 +0000 (03:41 +0000)]
Revert accidental change to file

llvm-svn: 365593

5 years agoTry again to move common functionality from ProcessWindows into ProcessDebugger
Aaron Smith [Wed, 10 Jul 2019 03:34:57 +0000 (03:34 +0000)]
Try again to move common functionality from ProcessWindows into ProcessDebugger

This reverts commit ed499a36b67cf46cbf66052cfe374c80a595f1c1 and addresses
a problem causing a Windows build bot to hang.

llvm-svn: 365592

5 years ago[ubsan][test] Restore float-divide-by-zero test
Fangrui Song [Wed, 10 Jul 2019 01:53:11 +0000 (01:53 +0000)]
[ubsan][test] Restore float-divide-by-zero test

Removed by rCTE365307 to fix buildbots. It can be restored now because D64317/rC365587 brought back -fsanitize=float-divide-by-zero

llvm-svn: 365591

5 years ago[analyzer] CastValueChecker: Remove a dump()
Csaba Dabis [Wed, 10 Jul 2019 00:50:01 +0000 (00:50 +0000)]
[analyzer] CastValueChecker: Remove a dump()

Summary: Fix a nit.
llvm-svn: 365590

5 years ago[X86] Limit getTargetConstantFromNode to only work on NormalLoads not extending loads.
Craig Topper [Wed, 10 Jul 2019 00:40:01 +0000 (00:40 +0000)]
[X86] Limit getTargetConstantFromNode to only work on NormalLoads not extending loads.

This seems to fix a failure reported by Jordan Rupprecht, but we
don't have a reduced test case yet.

llvm-svn: 365589

5 years ago[Support] Move llvm::MemoryBuffer to sys::fs::file_t
Reid Kleckner [Wed, 10 Jul 2019 00:34:13 +0000 (00:34 +0000)]
[Support] Move llvm::MemoryBuffer to sys::fs::file_t

Summary:
On Windows, Posix integer file descriptors are a compatibility layer
over native file handles provided by the C runtime. There is a hard
limit on the maximum number of file descriptors that a process can open,
and the limit is 8192. LLD typically doesn't run into this limit because
it opens input files, maps them into memory, and then immediately closes
the file descriptor. This prevents it from running out of FDs.

For various reasons, I'd like to open handles to every input file and
keep them open during linking. That requires migrating MemoryBuffer over
to taking open native file handles instead of integer FDs.

Reviewers: aganea, Bigcheese

Reviewed By: aganea

Subscribers: smeenai, silvas, mehdi_amini, hiraditya, steven_wu, dexonsmith, dang, llvm-commits, zturner

Tags: #llvm

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

llvm-svn: 365588

5 years ago[Driver] Add float-divide-by-zero back to supported sanitizers after D63793/rC365272
Fangrui Song [Wed, 10 Jul 2019 00:30:02 +0000 (00:30 +0000)]
[Driver] Add float-divide-by-zero back to supported sanitizers after D63793/rC365272

D63793 removed float-divide-by-zero from the "undefined" set but it
failed to add it to getSupportedSanitizers(), thus the sanitizer is
rejected by the driver:

    clang-9: error: unsupported option '-fsanitize=float-divide-by-zero' for target 'x86_64-unknown-linux-gnu'

Also, add SanitizerMask::FloatDivideByZero to a few other masks to make -fsanitize-trap, -fsanitize-recover, -fsanitize-minimal-runtime and -fsanitize-coverage work.

Reviewed By: rsmith, vitalybuka

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

llvm-svn: 365587

5 years agoAMDGPU/GlobalISel: Add support for wide loads >= 256-bits
Tom Stellard [Wed, 10 Jul 2019 00:22:41 +0000 (00:22 +0000)]
AMDGPU/GlobalISel: Add support for wide loads >= 256-bits

Summary:
This adds support for the most commonly used wide load types:
<8xi32>, <16xi32>, <4xi64>, and <8xi64>

Reviewers: arsenm

Reviewed By: arsenm

Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, volkan, Petar.Avramovic, llvm-commits

Tags: #llvm

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

llvm-svn: 365586

5 years ago[analyzer] CastValueChecker: Model casts
Csaba Dabis [Wed, 10 Jul 2019 00:20:03 +0000 (00:20 +0000)]
[analyzer] CastValueChecker: Model casts

Summary:
It models the LLVM casts:
- `cast<>`
- `dyn_cast<>`
- `cast_or_null<>`
- `dyn_cast_or_null<>`

It has a very basic support without checking the `classof()` function.

(It reapplies the reverted 'llvm-svn: 365582' patch with proper test file.)

Reviewed By: NoQ

Tags: #clang

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

llvm-svn: 365585

5 years agoRevert "[analyzer] CastValueChecker: Model casts"
Csaba Dabis [Tue, 9 Jul 2019 23:47:09 +0000 (23:47 +0000)]
Revert "[analyzer] CastValueChecker: Model casts"

This reverts commit 27cf6664437efd640bb6db5594bafcce68fa2854.

llvm-svn: 365584

5 years agoGlobalISel: Implement lower for G_FCOPYSIGN
Matt Arsenault [Tue, 9 Jul 2019 23:34:29 +0000 (23:34 +0000)]
GlobalISel: Implement lower for G_FCOPYSIGN

In SelectionDAG AMDGPU treated these as legal, but this was mostly
because the bitcasts required for FP types were painful. Theoretically
the bitpattern should eventually match to bfi, so don't bother trying
to get the patterns to import.

llvm-svn: 365583

5 years ago[analyzer] CastValueChecker: Model casts
Csaba Dabis [Tue, 9 Jul 2019 23:33:23 +0000 (23:33 +0000)]
[analyzer] CastValueChecker: Model casts

Summary:
It models the LLVM casts:
- `cast<>`
- `dyn_cast<>`
- `cast_or_null<>`
- `dyn_cast_or_null<>`

It has a very basic support without checking the `classof()` function.

Reviewed By: NoQ

Tags: #clang

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

llvm-svn: 365582

5 years agoRevert [clang] DirectoryWatcher
Reid Kleckner [Tue, 9 Jul 2019 23:22:01 +0000 (23:22 +0000)]
Revert [clang] DirectoryWatcher

This reverts r365574 (git commit 31babea94a3ed38a140540f2252cf043dacec1f7)

llvm-svn: 365581

5 years ago[Bitcode] Explicitly include Bitstream/BitCodes.h and BitstreamWriter.h
Francis Visoiu Mistrih [Tue, 9 Jul 2019 23:20:01 +0000 (23:20 +0000)]
[Bitcode] Explicitly include Bitstream/BitCodes.h and BitstreamWriter.h

This fixes a modules issue.

llvm-svn: 365580

5 years ago[MS] Treat ignored explicit calling conventions as an explicit __cdecl
Reid Kleckner [Tue, 9 Jul 2019 23:17:43 +0000 (23:17 +0000)]
[MS] Treat ignored explicit calling conventions as an explicit __cdecl

The CCCR_Ignore action is only used for Microsoft calling conventions,
mainly because MSVC does not warn when a calling convention would be
ignored by the current target. This behavior is actually somewhat
important, since windows.h uses WINAPI (which expands to __stdcall)
widely. This distinction didn't matter much before the introduction of
__vectorcall to x64 and the ability to make that the default calling
convention with /Gv. Now, we can't just ignore __stdcall for x64, we
have to treat it as an explicit __cdecl annotation.

Fixes PR42531

llvm-svn: 365579

5 years ago[docs][Remarks] Add documentation for remarks in LLVM
Francis Visoiu Mistrih [Tue, 9 Jul 2019 23:16:59 +0000 (23:16 +0000)]
[docs][Remarks] Add documentation for remarks in LLVM

This adds documentation that describes remarks in LLVM.

It aims at explaining what remarks are, how to enable them, and what
users can do with the different modes.

It lists all the available flags in LLVM (excluding clang), and
describes the expected YAML structure as well as the tools that support
the YAML format today.

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

llvm-svn: 365578

5 years ago[X86] Don't form extloads in combineExtInVec unless the load extension is legal.
Craig Topper [Tue, 9 Jul 2019 23:05:54 +0000 (23:05 +0000)]
[X86] Don't form extloads in combineExtInVec unless the load extension is legal.

This should prevent doing this on pre-sse4.1 targets or for 256
bit vectors without avx2.

I don't know of a failure from this. Op legalization will probably
take care of, but seemed better to be safe.

llvm-svn: 365577

5 years ago[clangd] fix assert in test after r365531.
Sam McCall [Tue, 9 Jul 2019 23:05:20 +0000 (23:05 +0000)]
[clangd] fix assert in test after r365531.

Unverified because CMake/ninja seems to be broken...

llvm-svn: 365576

5 years agoAMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR
Matt Arsenault [Tue, 9 Jul 2019 22:48:04 +0000 (22:48 +0000)]
AMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR

llvm-svn: 365575

5 years ago[clang] DirectoryWatcher
Jan Korous [Tue, 9 Jul 2019 22:44:48 +0000 (22:44 +0000)]
[clang] DirectoryWatcher

Asynchronously monitors specified directory for changes and passes notifications to provided callback.

Dependency for index-while-building.

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

llvm-svn: 365574

5 years ago[AMDGPU] gfx908 v_pk_fmac_f16 support
Stanislav Mekhanoshin [Tue, 9 Jul 2019 22:42:24 +0000 (22:42 +0000)]
[AMDGPU] gfx908 v_pk_fmac_f16 support

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

llvm-svn: 365573

5 years agogn build: Merge r365536.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:51 +0000 (22:37 +0000)]
gn build: Merge r365536.

llvm-svn: 365572

5 years agogn build: Merge r365532.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:41 +0000 (22:37 +0000)]
gn build: Merge r365532.

llvm-svn: 365571

5 years agogn build: Merge r365541.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:25 +0000 (22:37 +0000)]
gn build: Merge r365541.

llvm-svn: 365570

5 years agogn build: Merge r365531.
Peter Collingbourne [Tue, 9 Jul 2019 22:37:09 +0000 (22:37 +0000)]
gn build: Merge r365531.

llvm-svn: 365569

5 years agoAdd lldb type unit support to the release notes
Pavel Labath [Tue, 9 Jul 2019 22:36:43 +0000 (22:36 +0000)]
Add lldb type unit support to the release notes

Reviewers: JDevlieghere, teemperor

Subscribers: llvm-commits, lldb-commits

Tags: #llvm

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

llvm-svn: 365568

5 years ago[lldb] Quick Fix: IRExecutionUnit check pointer before access it
Alex Langford [Tue, 9 Jul 2019 22:24:54 +0000 (22:24 +0000)]
[lldb] Quick Fix: IRExecutionUnit check pointer before access it

Summary:
Move checking pointer code block before accessing the pointer
This caused lldb to crash when testing on Android

Patch by Wanyi Ye!

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

llvm-svn: 365567

5 years agoGlobalISel: Combine unmerge of merge with intermediate cast
Matt Arsenault [Tue, 9 Jul 2019 22:19:13 +0000 (22:19 +0000)]
GlobalISel: Combine unmerge of merge with intermediate cast

This eliminates some illegal intermediate vectors when operations are
scalarized.

llvm-svn: 365566

5 years ago[Profile] Support raw/indexed profiles larger than 4GB
Vedant Kumar [Tue, 9 Jul 2019 22:01:04 +0000 (22:01 +0000)]
[Profile] Support raw/indexed profiles larger than 4GB

rdar://45955976

llvm-svn: 365565

5 years ago[llvm-objdump] Keep warning for --disassemble-functions in correct order.
Yuanfang Chen [Tue, 9 Jul 2019 21:53:33 +0000 (21:53 +0000)]
[llvm-objdump] Keep warning for --disassemble-functions in correct order.

relative to normal output when dumping archive files.

prepare for PR35351.

Reviewers: jhenderson, grimar, MaskRay, rupprecht

Reviewed by: MaskRay, jhenderson

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

llvm-svn: 365564

5 years ago[AMDGPU] gfx908 mAI instructions, MC part
Stanislav Mekhanoshin [Tue, 9 Jul 2019 21:43:09 +0000 (21:43 +0000)]
[AMDGPU] gfx908 mAI instructions, MC part

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

llvm-svn: 365563