platform/upstream/llvm.git
4 years ago[InstCombine] Remove hasNoInfs check for pow(C,y) -> exp2(log2(C)*y)
Jay Foad [Tue, 5 May 2020 12:00:48 +0000 (13:00 +0100)]
[InstCombine] Remove hasNoInfs check for pow(C,y) -> exp2(log2(C)*y)

We already check hasNoNaNs and that x is finite and strictly positive.
That only leaves the following special cases (taken from the Linux man
page for pow):

If x is +1, the result is 1.0 (even if y is a NaN).
If the absolute value of x is less than 1, and y is negative infinity, the result is positive infinity.
If the absolute value of x is greater than 1, and y is negative infinity, the result is +0.
If the absolute value of x is less than 1, and y is positive infinity, the result is +0.
If the absolute value of x is greater than 1, and y is positive infinity, the result is positive infinity.

The first case is handled elsewhere, and this transformation preserves
all the others, so there is no need to limit it to hasNoInfs.

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

4 years ago[ELF] Make --trace-symbol track preempted shared definitions
Fangrui Song [Mon, 18 May 2020 17:15:59 +0000 (10:15 -0700)]
[ELF] Make --trace-symbol track preempted shared definitions

Note, we still name a preempted SharedSymbol "shared definition",
instead of "reference" as printed by GNU ld. This difference should not matter.

```
// GNU ld
ld.bfd: t: definition of f@v1
ld.bfd: t.so: reference to f@v1
```

Reviewed By: psmith

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

4 years ago[clang-format] @lefticus just taught the world how to use [[unlikely]] but we forgot...
mydeveloperday [Tue, 19 May 2020 15:50:24 +0000 (16:50 +0100)]
[clang-format] @lefticus just taught the world how to use [[unlikely]] but we forgot to teach clang-format

Summary:
https://twitter.com/lefticus/status/1262392152950288384?s=20

Jason Turner's (@lefticus) most recent C++ weekly explains the usage of [[likely]] and [[unlikely]] in an 'if/else' context in C++ 20

clang-format leaves the code a little messy afterwards..

```
if (argc > 5)
  [[unlikely]] {
    // ...
  }
else if (argc < 0)
  [[likely]] {
    // ...
  }
else
  [[likely]] {
    // ...
  }
```

try to improve the situation

```
if (argc > 5) [[unlikely]] {
  // ...
} else if (argc < 0) [[likely]] {
  // ...
} else [[likely]] {
  // ...
}
```

Reviewed By: JakeMerdichAMD

Subscribers: cfe-commits, lefticus

Tags: #clang, #clang-format

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

4 years ago[clang-format] [PR45614] Incorrectly indents [[nodiscard]] attribute funtions after...
mydeveloperday [Tue, 19 May 2020 15:47:38 +0000 (16:47 +0100)]
[clang-format] [PR45614] Incorrectly indents [[nodiscard]] attribute funtions after a macro without semicolon

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

`[[nodiscard]]` after a macro doesn't behave the same as an __attribute__ resulting in incorrect indentation

This revision corrects that behavior

See original Mozilla bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1629756

Before:

```
class FooWidget : public nsBaseWidget {
public:
  FooWidget();

  NS_DECL_ISUPPORTS_INHERITED

      [[nodiscard]] nsresult
      FunctionOne();
  [[nodiscard]] nsresult FunctionTwo();
};
```

After:
```
class FooWidget : public nsBaseWidget {
public:
  FooWidget();

  NS_DECL_ISUPPORTS_INHERITED

  [[nodiscard]] nsresult FunctionOne();
  [[nodiscard]] nsresult FunctionTwo();
};
```

Reviewed By: Abpostelnicu

Subscribers: cfe-commits

Tags: #clang, #clang-format

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

4 years ago[clang-format] [PR44476] Add space between template and attribute
mydeveloperday [Tue, 19 May 2020 15:43:50 +0000 (16:43 +0100)]
[clang-format] [PR44476] Add space between template and attribute

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

```template <typename T> [[nodiscard]] int a() { return 1; }```

gets incorrectly formatted to be

```template <typename T>[[nodiscard]] int a() { return 1; }```

This revision ensure there is a space between the template and the attribute

Reviewed By: JakeMerdichAMD

Subscribers: cfe-commits

Tags: #clang, #clang-format

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

4 years ago[clang-format] [PR45942] [[nodiscard]] causes && to be miss interpreted as BinaryOper...
mydeveloperday [Tue, 19 May 2020 15:41:50 +0000 (16:41 +0100)]
[clang-format] [PR45942] [[nodiscard]] causes && to be miss interpreted as BinaryOperators

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

With Chromium style (although that is not important) its just it defines PointerAligmment: Left

The following arguments `S&&` are formatted differently depending on if the class has an attribute between it and the class identifier

```
class S {
  S(S&&) = default;
};

class [[nodiscard]] S {
  S(S &&) = default;
};
```

The prescense of [[nodiscard]] between the `class/struct` and the `{` causes the `{` to be incorrectly seen as a `TT_FunctionLBrace` which in turn transforms all the && to be `TT_BinaryOperators` rather than `TT_PointerOrReference`, as binary operators other spacing rules come into play causing a miss format

This revision resolves this by allowing the parseRecord to consider the [[nodisscard]]

Reviewed By: Abpostelnicu

Subscribers: cfe-commits

Tags: #clang, #clang-format

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

4 years agoRevert "[lld-macho] Support .subsections_via_symbols"
Jez Ng [Tue, 19 May 2020 15:29:17 +0000 (08:29 -0700)]
Revert "[lld-macho] Support .subsections_via_symbols"

Due to build breakage mentioned in https://reviews.llvm.org/D79926.

This reverts commit e270b2f1727c0fbde2676e8d0340c0d934726d3c.

4 years agoRevert "[lld-macho] Support X86_64_RELOC_UNSIGNED"
Jez Ng [Tue, 19 May 2020 15:29:11 +0000 (08:29 -0700)]
Revert "[lld-macho] Support X86_64_RELOC_UNSIGNED"

This reverts commit 1f820e35596bac036a7f759c4de41fcc2e642719.

4 years ago[clangd-remote] Replace YAML serialization with proper Protobuf messages
Kirill Bobyrev [Tue, 19 May 2020 14:59:04 +0000 (16:59 +0200)]
[clangd-remote] Replace YAML serialization with proper Protobuf messages

Summary:
YAML serialization was used in the Proof of Concept for simplicity.
This patch replaces implements Protobuf (de) serialization of almost all
types that need to be transferred over the protocol.

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[MLIR] Update the FunctionAndBlockSignatureConverter and NonVoidToVoidReturnOpConvert...
Ehsan Toosi [Mon, 4 May 2020 14:06:59 +0000 (16:06 +0200)]
[MLIR] Update the FunctionAndBlockSignatureConverter and NonVoidToVoidReturnOpConverter of Buffer Assignment

Making these two converters more generic. FunctionAndBlockSignatureConverter now
moves only memref results (after type conversion) to the function argument and
keeps other legal function results unchanged. NonVoidToVoidReturnOpConverter is
renamed to NoBufferOperandsReturnOpConverter. It removes only the buffer
operands from the operands of the converted ReturnOp and inserts CopyOps to copy
each buffer to the target function argument.

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

4 years ago[analyzer][Nullability] Don't emit under the checker name NullabilityBase
Kirstóf Umann [Tue, 14 Apr 2020 15:13:41 +0000 (17:13 +0200)]
[analyzer][Nullability] Don't emit under the checker name NullabilityBase

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

4 years ago[clang][AIX] Implement ABIInfo and TargetCodeGenInfo for AIX
jasonliu [Tue, 19 May 2020 14:56:56 +0000 (14:56 +0000)]
[clang][AIX] Implement ABIInfo and TargetCodeGenInfo for AIX

Summary:
Created AIXABIInfo and AIXTargetCodeGenInfo for AIX ABI.

Reviewed By: Xiangling_L, ZarkoCA

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

4 years ago[analyzer] Don't print the config count in debug.ConfigDumper
Kirstóf Umann [Tue, 19 May 2020 14:46:16 +0000 (16:46 +0200)]
[analyzer] Don't print the config count in debug.ConfigDumper

I think anyone who added a checker config wondered why is there a need
to test this. Its just a chore when adding a new config, so I removed
it.

To give some historic insight though, we used to not list **all**
options, but only those explicitly added to AnalyzerOptions, such as the
ones specified on the command line. However, past this change (and
arguably even before that) this line makes little sense.

There is an argument to be made against the entirety of
analyzer-config.c test file, but since this commit fixes some builtbots
and is landing without review, I wouldn't like to be too invasive.

4 years ago[clangd] Avoid StringRef entirely with gmock
Sam McCall [Tue, 19 May 2020 14:50:30 +0000 (16:50 +0200)]
[clangd] Avoid StringRef entirely with gmock

4 years ago[clangd] findExplicitReferences supports goto labels
Sam McCall [Mon, 18 May 2020 22:45:27 +0000 (00:45 +0200)]
[clangd] findExplicitReferences supports goto labels

Summary:
This means they're renamable and textDocument/highlight works

This fell out of D78454

Reviewers: adamcz

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

Tags: #clang

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

4 years ago[lld-macho] Support X86_64_RELOC_UNSIGNED
Jez Ng [Fri, 15 May 2020 19:02:40 +0000 (12:02 -0700)]
[lld-macho] Support X86_64_RELOC_UNSIGNED

Note that it's only used for non-pc-relative contexts.

Reviewed By: MaskRay, smeenai

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

4 years ago[lld-macho] Support .subsections_via_symbols
Jez Ng [Mon, 11 May 2020 22:48:47 +0000 (15:48 -0700)]
[lld-macho] Support .subsections_via_symbols

This diff restores and builds upon @pcc and @ruiu's initial work on
subsections.

The .subsections_via_symbols directive indicates we can split each
section along symbol boundaries, unless those symbols have been marked
with `.alt_entry`.

We exercise this functionality in our tests by using order files that
rearrange those symbols.

Reviewed By: smeenai

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

4 years ago[lld-macho] Support -order_file
Jez Ng [Tue, 5 May 2020 23:37:34 +0000 (16:37 -0700)]
[lld-macho] Support -order_file

The order file indicates how input sections should be sorted within each
output section, based on the symbols contained within those sections.

This diff sets the stage for implementing and testing
`.subsections_via_symbols`, where we will break up InputSections by each
symbol and sort them more granularly.

Reviewed By: smeenai

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

4 years ago[VPlan] Fix comment for User in VPWidenSelectRecipe (NFC).
Florian Hahn [Tue, 19 May 2020 14:29:40 +0000 (15:29 +0100)]
[VPlan] Fix comment for User in VPWidenSelectRecipe (NFC).

The comment was referring the arguments of the call, but the recipe
widens a select.

4 years ago[mlir] scf::ForOp: provide builders with callbacks for loop body
Alex Zinenko [Tue, 19 May 2020 14:22:00 +0000 (16:22 +0200)]
[mlir] scf::ForOp: provide builders with callbacks for loop body

Thanks to a recent change that made `::build` functions take an instance of
`OpBuilder`, it is now possible to build operations within a region attached to
the operation about to be created. Exercise this on `scf::ForOp` by taking a
callback that populates the loop body while the loop is being created.

Additionally, provide helper functions to build perfect nests of `ForOp`s,
with support for iteration arguments. These functions provide the same
functionality as EDSC LoopNestBuilder with simpler implementation, without
relying on edsc::ScopedContext, and using `OpBuilder` in an unambiguous way.
Compatibility functions for EDSC are provided, but may be removed in the
future.

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

4 years ago[lld] Remove unused lld/test/Driver/Inputs/**/libtest.a
Greg McGary [Tue, 19 May 2020 14:17:44 +0000 (07:17 -0700)]
[lld] Remove unused lld/test/Driver/Inputs/**/libtest.a

Under `lld/test/Driver/Inputs/`, all instances of `libtest.a` are
unreferenced. FYI, all of these are empty archives, and the files
contain only a magic number.

Reviewed By: MaskRay

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

4 years agoMCTargetOptionsCommandFlags.h - remove unnecessary includes. NFC.
Simon Pilgrim [Tue, 19 May 2020 14:04:05 +0000 (15:04 +0100)]
MCTargetOptionsCommandFlags.h - remove unnecessary includes. NFC.

Replace with MCTargetOptions forward declaration and move includes down to MCTargetOptionsCommandFlags.cpp

4 years agoCommandLine.h - remove unnecessary raw_ostream forward declaration. NFC.
Simon Pilgrim [Tue, 19 May 2020 13:22:11 +0000 (14:22 +0100)]
CommandLine.h - remove unnecessary raw_ostream forward declaration. NFC.

We already have to include raw_ostream.h.

4 years agoMachineBasicBlock.h - remove unnecessary includes. NFC.
Simon Pilgrim [Tue, 19 May 2020 13:00:37 +0000 (14:00 +0100)]
MachineBasicBlock.h - remove unnecessary includes. NFC.

Don't explicitly include ilist_node.h + simple_ilist.h - we already include ilist.h that include these for us and all references are in terms of that.

The rest can be covered by forward declarations.

4 years ago[analyzer] SATestBuild.py: Optionally override compiler
Valeriy Savchenko [Tue, 19 May 2020 14:05:51 +0000 (17:05 +0300)]
[analyzer] SATestBuild.py: Optionally override compiler

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

4 years ago[VPlan] Add & use VPValue operands for VPReplicateRecipe (NFC).
Florian Hahn [Tue, 19 May 2020 14:04:48 +0000 (15:04 +0100)]
[VPlan] Add & use VPValue operands for VPReplicateRecipe (NFC).

This patch adds VPValue version of the instruction operands to
VPReplicateRecipe and uses them during code-generation.

Reviewers: Ayal, gilr, rengolin

Reviewed By: gilr

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

4 years ago[clangd] Delete regex assertion, breaking on windows too...
Sam McCall [Tue, 19 May 2020 14:06:08 +0000 (16:06 +0200)]
[clangd] Delete regex assertion, breaking on windows too...

4 years ago[VPlan] Remove unique_ptr from VPBranchOnRecipeMask (NFC).
Florian Hahn [Tue, 19 May 2020 13:03:18 +0000 (14:03 +0100)]
[VPlan] Remove unique_ptr from VPBranchOnRecipeMask (NFC).

We can remove a dynamic memory allocation, by checking the number of
operands: no operands = all true, 1 operand = mask.

Reviewers: Ayal, gilr, rengolin

Reviewed By: Ayal

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

4 years agoGlobalISel: Fix IRTranslator for constantexpr selects
Matt Arsenault [Tue, 19 May 2020 12:59:16 +0000 (08:59 -0400)]
GlobalISel: Fix IRTranslator for constantexpr selects

This was assuming a select is always an instruction, which is not
true.

4 years ago[analyzer][DirectIvarAssignment] Turn DirectIvarAssignmentForAnnotatedFunctions into...
Kirstóf Umann [Tue, 14 Apr 2020 15:13:41 +0000 (17:13 +0200)]
[analyzer][DirectIvarAssignment] Turn DirectIvarAssignmentForAnnotatedFunctions into a checker option

Since this is an alpha checker, I don't worry about backward compatibility :)

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

4 years ago[AST] Fix an assertion violation in FieldDecl::getParent.
Haojian Wu [Tue, 19 May 2020 13:26:42 +0000 (15:26 +0200)]
[AST] Fix an assertion violation in FieldDecl::getParent.

Summary:
FieldDecl::getParent assumes that the FiledDecl::getDeclContext returns a
RecordDecl, this is true for C/C++, but not for ObjCIvarDecl:

The Decls hierarchy is like following

FieldDecl <-- ObjCIvarDecl

DeclContext <-- ObjCContainerDecl <-- ObjCInterfaceDecl
         ^
         |----- TagDecl <-- RecordDecl

calling getParent() on ObjCIvarDecl will:
1. invoke getDeclContext(), which returns a DeclContext*, which points to an ObjCInterfaceDecl;
2. then downcast the "DeclContext" pointer to a RecordDecl*, and we will hit
the "is_a<RecordDecl>" assertion in llvm::cast (undefined behavior
in release build without assertion enabled);

Fixes https://github.com/clangd/clangd/issues/369

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: rsmith, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Add a flag to preserve type for recovery expression.
Haojian Wu [Tue, 19 May 2020 13:21:50 +0000 (15:21 +0200)]
[clangd] Add a flag to preserve type for recovery expression.

Reviewers: sammccall

Reviewed By: sammccall

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

Tags: #clang

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

4 years ago[AST] Fix the PrintQualifiedName for ObjC instance variable in class extension.
Haojian Wu [Tue, 19 May 2020 13:10:10 +0000 (15:10 +0200)]
[AST] Fix the PrintQualifiedName for ObjC instance variable in class extension.

Summary:
Similar to property, we print the containing interface decl as the
nested name specifier for ivar; otherwise we will get "::ivar_name".

this would fix an assertion crash in clangd: https://github.com/clangd/clangd/issues/365

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years agoAdded a TanOp to SPIR-V dialect GLSL ops
George [Tue, 19 May 2020 13:07:49 +0000 (09:07 -0400)]
Added a TanOp to SPIR-V dialect GLSL ops

Implemented tangent op from SPIR-V's GLSL extended instruction set.
Added a round-trip and serialization/deserialization tests for the op.

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

4 years ago[AST][RecoveryExpr] Fix an assertion crash on openMP.
Haojian Wu [Tue, 19 May 2020 10:02:52 +0000 (12:02 +0200)]
[AST][RecoveryExpr] Fix an assertion crash on openMP.

Summary:
With recovery expr, it is possible that we have a value-dependent expr
within non-dependent context.

Reviewers: sammccall, jdoerfert

Subscribers: yaxunl, guansong, cfe-commits

Tags: #clang

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

4 years ago[NFC][ARM] Add more tail predication tests
Sam Parker [Tue, 19 May 2020 12:56:51 +0000 (13:56 +0100)]
[NFC][ARM] Add more tail predication tests

4 years ago[OPENMP50]Add initial support for 'affinity' clause.
Alexey Bataev [Mon, 18 May 2020 17:37:53 +0000 (13:37 -0400)]
[OPENMP50]Add initial support for 'affinity' clause.

Summary:
Added parsing/sema/serialization support for affinity clause in task
directives.

Reviewers: jdoerfert

Subscribers: yaxunl, guansong, arphaman, llvm-commits, cfe-commits, caomhin

Tags: #clang, #llvm

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

4 years ago[IR] Revert r119493
Jay Foad [Tue, 19 May 2020 11:30:26 +0000 (12:30 +0100)]
[IR] Revert r119493

r119493 protected against PHINode::hasConstantValue returning the PHI
node itself, but a later fix in r159687 means that can never happen, so
the workarounds are no longer required.

4 years agoFix "not all control paths return a value" warning on MSVC builds.
Simon Pilgrim [Tue, 19 May 2020 12:16:24 +0000 (13:16 +0100)]
Fix "not all control paths return a value" warning on MSVC builds.

Use llvm_unreachable as typeName(Metric::MetricType T) should handle all enum values.

4 years agoObjectCache.h - replace unnecessary MemoryBuffer.h include with forward declarations...
Simon Pilgrim [Tue, 19 May 2020 11:33:28 +0000 (12:33 +0100)]
ObjectCache.h - replace unnecessary MemoryBuffer.h include with forward declarations. NFC.

4 years agoGlobalVariable.h - remove unused PointerUnion.h include. NFC
Simon Pilgrim [Tue, 19 May 2020 11:08:29 +0000 (12:08 +0100)]
GlobalVariable.h - remove unused PointerUnion.h include. NFC

4 years ago[analyzer][MallocChecker] When modeling realloc-like functions, don't early return...
Kirstóf Umann [Tue, 5 May 2020 12:55:37 +0000 (14:55 +0200)]
[analyzer][MallocChecker] When modeling realloc-like functions, don't early return if the argument is symbolic

The very essence of MallocChecker lies in 2 overload sets: the FreeMemAux
functions and the MallocMemAux functions. The former houses most of the error
checking as well (aside from leaks), such as incorrect deallocation. There, we
check whether the argument's MemSpaceRegion is the heap or unknown, and if it
isn't, we know we encountered a bug (aside from a corner case patched by
@balazske in D76830), as specified by MEM34-C.

In ReallocMemAux, which really is the combination of  FreeMemAux and
MallocMemAux, we incorrectly early returned if the memory argument of realloc is
non-symbolic. The problem is, one of the cases where this happens when we know
precisely what the region is, like an array, as demonstrated in the test file.
So, lets get rid of this false negative :^)

Side note, I dislike the warning message and the associated checker name, but
I'll address it in a later patch.

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

4 years agoUnrank mcuMemHostRegister tensor argument.
Christian Sigg [Mon, 18 May 2020 12:13:14 +0000 (14:13 +0200)]
Unrank mcuMemHostRegister tensor argument.

Reviewers: herhut

Reviewed By: herhut

Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, jurahul, llvm-commits

Tags: #llvm

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

4 years ago[clangd] Squash GCC error with StringRef + gtest MatchesRegex()
Sam McCall [Tue, 19 May 2020 11:58:12 +0000 (13:58 +0200)]
[clangd] Squash GCC error with StringRef + gtest MatchesRegex()

4 years ago[MLIR] Add helper functions for common integer types
Frederik Gossen [Mon, 18 May 2020 08:56:22 +0000 (08:56 +0000)]
[MLIR] Add helper functions for common integer types

Add helper functions for 32-bit and 64-bit integer types.

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

4 years ago[clangd] Add CSV export for trace metrics
Sam McCall [Sat, 9 May 2020 20:43:35 +0000 (22:43 +0200)]
[clangd] Add CSV export for trace metrics

Summary: Example: https://docs.google.com/spreadsheets/d/1VZKGetSUTTDe9p4ooIETmdcwUod1_aE3vgD0E9x7HhI/edit

Reviewers: kadircet

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

Tags: #clang

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

4 years ago[clangd] Complete filenames after < / ".
Sam McCall [Tue, 5 May 2020 23:39:59 +0000 (01:39 +0200)]
[clangd] Complete filenames after < / ".

Summary:
Extract prefix filters to CodeComplete so it can be easily tested.

Fixes https://github.com/clangd/clangd/issues/366

Reviewers: adamcz

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

Tags: #clang

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

4 years ago[MLIR, OpenMP] Support for flush operation, and translating the same to LLVM IR
Kiran Kumar T P [Tue, 19 May 2020 11:30:15 +0000 (17:00 +0530)]
[MLIR, OpenMP] Support for flush operation, and translating the same to LLVM IR

Summary:
This patch adds support for flush operation in OpenMP dialect and translation of this construct to LLVM IR.
The OpenMP IRBuilder is used for this translation.
The patch includes code changes and testcase modifications.

Reviewed By: ftynse, kiranchandramohan

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

4 years ago[AMDGPU] Add more VMEM to SALU WAR hazard tests. NFC
Carl Ritson [Tue, 19 May 2020 10:27:16 +0000 (19:27 +0900)]
[AMDGPU] Add more VMEM to SALU WAR hazard tests. NFC

4 years agoGlobPattern.h - remove unnecessary StringRef.h include. NFC
Simon Pilgrim [Tue, 19 May 2020 09:49:08 +0000 (10:49 +0100)]
GlobPattern.h - remove unnecessary StringRef.h include. NFC

Use forward declaration instead.

Remove unnecessary BitVector forward declaration while we're here - we need to include BitVector.h.

4 years ago[Analyzer][VLASizeChecker] Try to fix vla.c test problems.
Balázs Kéri [Tue, 19 May 2020 10:12:28 +0000 (12:12 +0200)]
[Analyzer][VLASizeChecker] Try to fix vla.c test problems.

4 years ago[yaml2obj] - Stop using square brackets for unique suffixes.
Georgii Rymar [Mon, 18 May 2020 13:43:13 +0000 (16:43 +0300)]
[yaml2obj] - Stop using square brackets for unique suffixes.

For describing section/symbol names we can use unique suffixes,
e.g:

```
- Name: '.foo [1]`
- Name: '.foo [2]`
```

It can be a problem (see https://reviews.llvm.org/D79984#inline-734829),
because `[]` are sometimes used to describe a macros:

```
- Name: "[[a0]]"
```

Seems the better approach is to use something else, like "()".
This patch does it and refactors the code related.

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

4 years ago[clangd] Fix gcc compiler warning by removing extra ";" [NFC]
Mikael Holmen [Tue, 19 May 2020 09:57:15 +0000 (11:57 +0200)]
[clangd] Fix gcc compiler warning by removing extra ";" [NFC]

gcc complained with:

/data/repo/master/clang-tools-extra/clangd/index/Ref.h:189:2: warning: extra ';' [-Wpedantic]
 }; // namespace llvm
  ^

4 years ago[Tooling] Drop leading/trailing whitespace from compile_flags.txt lines
Sam McCall [Mon, 18 May 2020 21:01:46 +0000 (23:01 +0200)]
[Tooling] Drop leading/trailing whitespace from compile_flags.txt lines

Summary:
These files tend to be hand-authored, and people get very confused.
I can't think of any reason that such whitespace would be intended.

Reviewers: kadircet

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[AST] Fix recovery-AST crash: dependent overloaded call exprs are now possible.
Sam McCall [Mon, 18 May 2020 15:22:59 +0000 (17:22 +0200)]
[AST] Fix recovery-AST crash: dependent overloaded call exprs are now possible.

Reviewers: hokein

Subscribers: cfe-commits

Tags: #clang

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

4 years agoTargetIntrinsicInfo.h - remove unnecessary Compiler.h include. NFC.
Simon Pilgrim [Mon, 18 May 2020 16:49:59 +0000 (17:49 +0100)]
TargetIntrinsicInfo.h - remove unnecessary Compiler.h include. NFC.

We don't need use compiler specific attributes so don't need Compiler.h

4 years agoTargetLoweringObjectFile.h - remove unnecessary includes. NFCI.
Simon Pilgrim [Mon, 18 May 2020 15:56:53 +0000 (16:56 +0100)]
TargetLoweringObjectFile.h - remove unnecessary includes. NFCI.

Replace with forward declarations and move includes down to source files where required.

I also needed to move the TargetLoweringObjectFile::SectionForGlobal wrapper implementation down into TargetLoweringObjectFile.cpp

4 years ago[WebAssembly] Handle exception specifications
Heejin Ahn [Fri, 8 May 2020 23:19:46 +0000 (16:19 -0700)]
[WebAssembly] Handle exception specifications

Summary:
Wasm currently does not fully handle exception specifications. Rather
than crashing,
- This treats `throw()` in the same way as `noexcept`.
- This ignores and prints a warning for `throw(type, ..)`, for a
  temporary measure. This warning is controlled by
  `-Wwasm-exception-spec`, which is on by default. You can suppress the
  warning by using `-Wno-wasm-exception-spec`.

Reviewers: dschuff

Subscribers: sbc100, jgravelle-google, sunfish, cfe-commits

Tags: #clang

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

4 years ago[Analyzer][VLASizeChecker] Check for VLA size overflow.
Balázs Kéri [Tue, 19 May 2020 06:21:47 +0000 (08:21 +0200)]
[Analyzer][VLASizeChecker] Check for VLA size overflow.

Summary:
Variable-length array (VLA) should have a size that fits into
a size_t value. According to the standard: "std::size_t can
store the maximum size of a theoretically possible object of
any type (including array)" (this is applied to C too).

The size expression is evaluated at the definition of the
VLA type even if this is a typedef.
The evaluation of the size expression in itself might cause
problems if it overflows.

Reviewers: Szelethus, baloghadamsoftware, martong, gamesh411

Reviewed By: Szelethus, martong, gamesh411

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

Tags: #clang

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

4 years ago[SystemZ] Eliminate the need to create a zero vector by reusing the VPERM mask.
Jonas Paulsson [Wed, 13 May 2020 12:19:08 +0000 (14:19 +0200)]
[SystemZ] Eliminate the need to create a zero vector by reusing the VPERM mask.

Try to avoid creating VGBMs by reusing the permutation mask if it contains a
zero. If the first byte was into (any byte of) a zero vector, then the first
byte of the mask can become zero and reused by putting the mask also as the
first operand. If there instead was a first-byte use of the other source
operand, then that zero index can be reused if the mask is placed as the
second operand.

Review: Ulrich Weigand

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

4 years ago[clang] Add an API to retrieve implicit constructor arguments.
Martin Böhme [Tue, 19 May 2020 06:43:46 +0000 (08:43 +0200)]
[clang] Add an API to retrieve implicit constructor arguments.

Summary:
This is needed in Swift for C++ interop -- see here for the corresponding Swift change:

https://github.com/apple/swift/pull/30630

As part of this change, I've had to make some changes to the interface of CGCXXABI to return the additional parameters separately rather than adding them directly to a `CallArgList`.

Reviewers: rjmccall

Reviewed By: rjmccall

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[DebugInfo] Add a test for dumping DWARF64 CIEs and FDEs (8/8).
Igor Kudrin [Tue, 19 May 2020 06:36:07 +0000 (13:36 +0700)]
[DebugInfo] Add a test for dumping DWARF64 CIEs and FDEs (8/8).

This adds a test to check that Length and CIE_id/CIE_pointer fields in
.debug_frame section are printed as 16-digit hex values if the records
are in the DWARF64 format.

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

4 years ago[DebugInfo] Dump offsets in .debug_str_offsets according to the DWARF format (7/8).
Igor Kudrin [Tue, 19 May 2020 06:35:58 +0000 (13:35 +0700)]
[DebugInfo] Dump offsets in .debug_str_offsets according to the DWARF format (7/8).

The patch changes dumping of offsets in .debug_str_offsets sections so
that they are printed as 16-digit hex values if the contribution is in
the DWARF64 format.

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

4 years ago[DebugInfo] Dump values in .debug_pubnames and .debug_pubtypes according to the DWARF...
Igor Kudrin [Tue, 19 May 2020 06:35:48 +0000 (13:35 +0700)]
[DebugInfo] Dump values in .debug_pubnames and .debug_pubtypes according to the DWARF format (6/8).

The patch changes dumping of unit_length, debug_info_offset, and
debug_info_length fields in headers in .debug_pubname and
.debug_pubtypes sections so that they are printed as 16-digit hex values
if the contribution is in the DWARF64 format. Dumping of offsets in the
tables is changed in the same way.

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

4 years ago[DebugInfo] Dump values in .debug_loclists and .debug_rnglists according to the DWARF...
Igor Kudrin [Tue, 19 May 2020 06:35:41 +0000 (13:35 +0700)]
[DebugInfo] Dump values in .debug_loclists and .debug_rnglists according to the DWARF format (5/8).

The patch changes dumping of a unit_length field and offsets in headers
in .debug_loclists and .debug_rnglists sections so that they are printed
as 16-digit hex values if the contribution is in the DWARF64 format.

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

4 years ago[DebugInfo] Dump length in .debug_line according to the DWARF format (4/8).
Igor Kudrin [Tue, 19 May 2020 06:35:31 +0000 (13:35 +0700)]
[DebugInfo] Dump length in .debug_line according to the DWARF format (4/8).

The patch changes dumping of unit_length and header_length fields in
headers in .debug_line sections so that they are printed as 16-digit hex
values if the contribution is in the DWARF64 format.

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

4 years ago[DebugInfo] Dump length of CUs and TUs according to the DWARF format (3/8).
Igor Kudrin [Tue, 19 May 2020 06:35:20 +0000 (13:35 +0700)]
[DebugInfo] Dump length of CUs and TUs according to the DWARF format (3/8).

The patch changes dumping of the unit_length field in a unit header so
that it is printed as a 16-digit hex value if the unit is in the DWARF64
format.

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

4 years ago[DebugInfo] Dump form values according to the DWARF format (2/8).
Igor Kudrin [Tue, 19 May 2020 06:35:07 +0000 (13:35 +0700)]
[DebugInfo] Dump form values according to the DWARF format (2/8).

The patch changes dumping of DWARF form values which sizes depend on
the DWARF format so that they are printed as 16-digit hex values for
DWARF64.

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

4 years ago[DebugInfo] Dump fields in .debug_aranges according to the DWARF format (1/8).
Igor Kudrin [Tue, 19 May 2020 06:34:54 +0000 (13:34 +0700)]
[DebugInfo] Dump fields in .debug_aranges according to the DWARF format (1/8).

The patch changes dumping of unit_length and debug_info_offset fields in
an address range header so that they are printed as 16-digit hex values
if the contribution is in the DWARF64 format.

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

4 years ago[DebugInfo] Remove an outdated test.
Igor Kudrin [Tue, 19 May 2020 06:20:50 +0000 (13:20 +0700)]
[DebugInfo] Remove an outdated test.

64-bit DWARF is supported for most of the sections now, and there are
separate tests for each of them. This test uses a binary input, while
the preferable way is to have a text-based source. Thus, it looks like
this test may be safely removed.

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

4 years agoAdd support of the next Ubuntu (Ubuntu 20.10 - Groovy Gorilla)
Sylvestre Ledru [Tue, 19 May 2020 06:30:25 +0000 (08:30 +0200)]
Add support of the next Ubuntu (Ubuntu 20.10 - Groovy Gorilla)

4 years ago[gn build] Port bcc0c894f38
LLVM GN Syncbot [Tue, 19 May 2020 06:07:14 +0000 (06:07 +0000)]
[gn build] Port bcc0c894f38

4 years agoAdd cet.h for writing CET-enabled assembly code
Xiang1 Zhang [Tue, 19 May 2020 05:29:30 +0000 (13:29 +0800)]
Add cet.h for writing CET-enabled assembly code

Summary:
Add x86 feature with IBT and/or SHSTK bits to ELF program property if they  are enabled. Otherwise, contents in this header file are unused.
This file is mainly design for assembly source code which want to enable CET

Reviewers: hjl.tools, annita.zhang, LuoYuanke, craig.topper, tstellar, pengfei, rsmith

Reviewed By: LuoYuanke

Subscribers: cfe-commits, mgorny

Tags: #clang

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

4 years ago[lldb/Test] Skip TestPositionalArgs with lldb-repro
Jonas Devlieghere [Tue, 19 May 2020 05:59:31 +0000 (22:59 -0700)]
[lldb/Test] Skip TestPositionalArgs with lldb-repro

4 years ago[NFC] [PowerPC] Refresh fma-mutate.ll using script
Qiu Chaofan [Tue, 19 May 2020 05:37:25 +0000 (13:37 +0800)]
[NFC] [PowerPC] Refresh fma-mutate.ll using script

This is a clean-up after D78989. The old comments are out of date.

4 years ago[BPF] fix an asan issue when disassemble an illegal instruction
Yonghong Song [Tue, 19 May 2020 05:20:33 +0000 (22:20 -0700)]
[BPF] fix an asan issue when disassemble an illegal instruction

Commit 8e8f1bd75a9a ("[BPF] Return fail if disassembled insn registers
out of range") tried to fix a segfault when an illegal instruction
is decoded. A test case is added to emulate such an illegal instruction.

The llvm buildbot reported an asan issue with this test case.
  ERROR: AddressSanitizer: global-buffer-overflow on address ...
  decodeMemoryOpValue(llvm::MCInst&, unsigned int, ...)
  llvm::MCDisassembler::DecodeStatus llvm::decodeToMCInst<unsigned long>(...)
  llvm::MCDisassembler::DecodeStatus llvm::decodeInstruction<unsigned long>(...)
  in (anonymous namespace)::BPFDisassembler::getInstruction(...)
  ...

Basically, the fix in Commit 8e8f1bd75a9a is too later to prevent
the asan. The fix in this patch moved the register number check earlier
during decodeInstruction(). It will return fail for decodeInstruction()
if the register number is out of range.

Note that DecodeGPRRegisterClass() and DecodeGPR32RegisterClass()
already have register number checking, so here we only check
decodeMemoryOpValue().

4 years ago[gn build] Port 62a9eca859d
LLVM GN Syncbot [Tue, 19 May 2020 05:18:58 +0000 (05:18 +0000)]
[gn build] Port 62a9eca859d

4 years agoTest asm-cet.S fail for window clang
Xiang1 Zhang [Tue, 19 May 2020 05:15:26 +0000 (13:15 +0800)]
Test asm-cet.S fail for window clang

This reverts commit e7e84ff24a5f0f4ed2d706de4168a4ec6073e3ef.

4 years ago[LoopSimplify] don't separate nested loops with convergent calls
Sameer Sahasrabuddhe [Tue, 19 May 2020 03:52:08 +0000 (09:22 +0530)]
[LoopSimplify] don't separate nested loops with convergent calls

Summary:
When a loop has multiple backedges, loop simplification attempts to
separate them out into nested loops. This results in incorrect control
flow in the presence of some functions like a GPU barrier. This change
skips the transformation when such "convergent" function calls are
present in the loop body.

Reviewed By: nhaehnle

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

4 years ago[PowerPC-QPX] adjust operands order of qpx fma instructions.
Chen Zheng [Tue, 19 May 2020 01:57:16 +0000 (21:57 -0400)]
[PowerPC-QPX] adjust operands order of qpx fma instructions.

convert
  %3 = QVFMADD %2, %0, %1, implicit $rm
to
  %3 = QVFMADD %2, %1, %0, implicit $rm

Reviewed By: hfinkel, steven.zhang

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

4 years ago[gn build] Port e7e84ff24a5
LLVM GN Syncbot [Tue, 19 May 2020 02:41:51 +0000 (02:41 +0000)]
[gn build] Port e7e84ff24a5

4 years agoAdd cet.h for writing CET-enabled assembly code
Xiang1 Zhang [Tue, 19 May 2020 02:37:46 +0000 (10:37 +0800)]
Add cet.h for writing CET-enabled assembly code

Summary:
Add x86 feature with IBT and/or SHSTK bits to ELF program property if they  are enabled. Otherwise, contents in this header file are unused.
This file is mainly design for assembly source code which want to enable CET

Reviewers: hjl.tools, annita.zhang, LuoYuanke, craig.topper, tstellar, pengfei, rsmith

Reviewed By: LuoYuanke

Subscribers: mgorny

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

4 years ago[NFC] Replace MaybeAlign with Align in TargetTransformInfo.
Eli Friedman [Tue, 19 May 2020 02:16:06 +0000 (19:16 -0700)]
[NFC] Replace MaybeAlign with Align in TargetTransformInfo.

4 years ago[BPF] Return fail if disassembled insn registers out of range
Yonghong Song [Sat, 16 May 2020 05:57:25 +0000 (22:57 -0700)]
[BPF] Return fail if disassembled insn registers out of range

Daniel reported a llvm-objdump segfault like below:
  $ llvm-objdump -D bpf_xdp.o
  ...
  0000000000000000 <.strtab>:
       0:       00 63 69 6c 69 75 6d 5f <unknown>
       1:       6c 62 36 5f 61 66 66 69 w2 <<= w6
  ...
  (llvm-objdump: lib/Target/BPF/BPFGenAsmWriter.inc:1087: static const char*
   llvm::BPFInstPrinter::getRegisterName(unsigned int): Assertion
   `RegNo && RegNo < 25 && "Invalid register number!"' failed.
   Stack dump:
   0.      Program arguments: llvm-objdump -D bpf_xdp.o
    ...
    abort
    ...
    llvm::BPFInstPrinter::getRegisterName(unsigned int)
    llvm::BPFInstPrinter::printMemOperand(llvm::MCInst const*,
                          int, llvm::raw_ostream&, char const*)
    llvm::BPFInstPrinter::printInstruction(llvm::MCInst const*,
                          unsigned long, llvm::raw_ostream&)
    llvm::BPFInstPrinter::printInst(llvm::MCInst const*,
                          unsigned long, llvm::StringRef, llvm::MCSubtargetInfo const&,
                          llvm::raw_ostream&)
   ...

Basically, since -D enables disassembly for all sections, .strtab is also disassembled,
but some strings are decoded as legal instructions but with illegal register numbers.
When llvm-objdump tries to print register name for these illegal register numbers,
assertion and segfault happens.

The patch fixed the issue by returning fail for a disassembled insn if
that insn contains a reg operand with illegal reg number.
The insn will be printed as "<unknown>" instead of causing an assertion.

4 years ago[lldb/Driver] Fix handling on positional arguments
Jonas Devlieghere [Tue, 19 May 2020 01:10:53 +0000 (18:10 -0700)]
[lldb/Driver] Fix handling on positional arguments

Before the transition to libOption it was possible to specify arguments
for the inferior without -- as long as they didn't start with a dash.

For example, the following invocations should all behave the same:

  $ lldb inferior inferior-arg
  $ lldb inferior -- inferior-arg
  $ lldb -- inferior inferior-arg

This patch fixes that behavior, documents it and adds a test to cover
the different combinations.

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

4 years agofix build failure due to commit rGddcb3cf213e8
Chen Zheng [Tue, 19 May 2020 01:44:47 +0000 (21:44 -0400)]
fix build failure due to commit rGddcb3cf213e8

4 years ago[TargetInstrInfo] add override function setSpecialOperandAttr - NFC
Chen Zheng [Tue, 19 May 2020 01:20:52 +0000 (21:20 -0400)]
[TargetInstrInfo] add override function setSpecialOperandAttr - NFC

4 years ago[PowerPC][MachineCombiner] add testcase for reassociating FMA - NFC
Chen Zheng [Tue, 19 May 2020 01:16:21 +0000 (21:16 -0400)]
[PowerPC][MachineCombiner] add testcase for reassociating FMA - NFC

4 years ago[BPF] Prevent disassembly segfault for NOP insn
Yonghong Song [Mon, 18 May 2020 18:56:29 +0000 (11:56 -0700)]
[BPF] Prevent disassembly segfault for NOP insn

For a simple program like below:
  -bash-4.4$ cat t.c
  int test() {
    asm volatile("r0 = r0" ::);
    return 0;
  }
compiled with
  clang -target bpf -O2 -c t.c
the following llvm-objdump command will segfault.
  llvm-objdump -d t.o

  0:       bf 00 00 00 00 00 00 00 nop
  llvm-objdump: ../include/llvm/ADT/SmallVector.h:180
  ...
  Assertion `idx < size()' failed
  ...
  abort
  ...
  llvm::BPFInstPrinter::printOperand
  llvm::BPFInstPrinter::printInstruction
  ...

The reason is both NOP and MOV_rr (r0 = r0) having the same encoding.
The disassembly getInstruction() decodes to be a NOP instruciton but
during printInstruction() the same encoding is interpreted as
a MOV_rr instruction. Such a mismatcch caused the segfault.

The fix is to make NOP instruction as CodeGen only so disassembler
will skip NOP insn for disassembling.

Note that instruction "r0 = r0" should not appear in non inline
asm codes since BPF Machine Instruction Peephole optimization will
remove it.

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

4 years agoRe-land [Debug][CodeView] Emit fully qualified names for globals
Reid Kleckner [Mon, 18 May 2020 19:07:31 +0000 (12:07 -0700)]
Re-land [Debug][CodeView] Emit fully qualified names for globals

This reverts commit 525a591f0f48b9d54018bf5245f2abee09c9c1c8.

Fixed an issue with pointers to members based on typedefs. In this case,
LLVM would emit a second UDT. I fixed it by not passing the class type
to getTypeIndex when the base type is not a function type. lowerType
only uses the class type for direct function types. This suggests if we
have a PMF with a function typedef, there may be an issue, but that can
be solved separately.

4 years ago[lldb/test] Disable NSDate format check under _WIN32
Vedant Kumar [Mon, 18 May 2020 23:37:04 +0000 (16:37 -0700)]
[lldb/test] Disable NSDate format check under _WIN32

Disable the test which attempts to format an NSDate with a date_value of
0 on _WIN32.

When _WIN32 is defined, GetOSXEpoch returns a date that should be in
2001, but after this is passed through timegm (which, afaict isn't
portable?) the result is a date in 1970:

```
lldb-x64-windows-ninja\llvm-project\lldb\unittests\DataFormatter\MockTests.cpp(39): error:       Expected: *formatDateValue(0)
      Which is: "1970-01-01 00:00:00 Pacific Standard Time"
      To be equal to: "2001-01-01 00:00:00 UTC"
```

http://lab.llvm.org:8011/builders/lldb-aarch64-ubuntu/builds/4520/steps/test/logs/stdio

4 years ago[clangd] Tidy up SelectionTree dumps with newlines
Sam McCall [Mon, 18 May 2020 23:30:23 +0000 (01:30 +0200)]
[clangd] Tidy up SelectionTree dumps with newlines

4 years ago[AArch64][GlobalISel] Add legalizer & selector support for G_FREEZE.
Amara Emerson [Mon, 18 May 2020 23:23:53 +0000 (16:23 -0700)]
[AArch64][GlobalISel] Add legalizer & selector support for G_FREEZE.

These should legalize like undefs and select into copies.

The ll test is copied from the x86 test, minus the half fp case because
we don't currently support that.

4 years ago[clang][SveEmitter] SVE builtins for `svusdot` and `svsudot` ACLE.
Francesco Petrogalli [Mon, 11 May 2020 17:44:17 +0000 (17:44 +0000)]
[clang][SveEmitter] SVE builtins for `svusdot` and `svsudot` ACLE.

Summary:
Intrinsics, guarded by `__ARM_FEATURE_SVE_MATMUL_INT8`:

* svusdot[_s32]
* svusdot[_n_s32]
* svusdot_lane[_s32]
* svsudot[_s32]
* svsudot[_n_s32]
* svsudot_lane[_s32]

Reviewers: sdesmalen, efriedma, david-arm, rengolin

Subscribers: tschuett, kristof.beyls, cfe-commits

Tags: #clang

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

4 years ago[lldb/test] Relax NSDate mock test for non-Apple platforms
Vedant Kumar [Mon, 18 May 2020 22:59:34 +0000 (15:59 -0700)]
[lldb/test] Relax NSDate mock test for non-Apple platforms

On Ubuntu, a formatted date prints as "GMT" instead of "UTC", which is
ok.

http://lab.llvm.org:8011/builders/lldb-aarch64-ubuntu/builds/4520/steps/test/logs/stdio

4 years agoMap -O to -O1 instead of -O2
Fangrui Song [Thu, 14 May 2020 00:25:04 +0000 (17:25 -0700)]
Map -O to -O1 instead of -O2

rL82131 changed -O from -O1 to -O2, because -O1 was not different from
-O2 at that time.

GCC treats -O as -O1 and there is now work to make -O1 meaningful.
We can change -O back to -O1 again.

Reviewed By: echristo, dexonsmith, arphaman

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

4 years ago[LV] Fix FoldTail under user VF and UF
Ayal Zaks [Sun, 17 May 2020 14:51:03 +0000 (17:51 +0300)]
[LV] Fix FoldTail under user VF and UF

LV considers an internally computed MaxVF to decide if a constant trip-count is
a multiple of any subsequently chosen VF, and conclude that no scalar remainder
iterations (tail) will be left for Fold Tail to handle. If an external VF is
provided via -force-vector-width, it must be considered instead of the internal
MaxVF.
If an external UF is provided via -force-vector-interleave, it too must be
considered in addition to MaxVF or user VF.

Fixes PR45679.

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

4 years ago[gn build] Port 9d69072fb80
LLVM GN Syncbot [Mon, 18 May 2020 22:19:17 +0000 (22:19 +0000)]
[gn build] Port 9d69072fb80

4 years ago[analyzer][NFC] Introduce CXXDeallocatorCall, deploy it in MallocChecker
Kirstóf Umann [Sun, 1 Mar 2020 16:49:44 +0000 (17:49 +0100)]
[analyzer][NFC] Introduce CXXDeallocatorCall, deploy it in MallocChecker

One of the pain points in simplifying MallocCheckers interface by gradually
changing to CallEvent is that a variety of C++ allocation and deallocation
functionalities are modeled through preStmt<...> where CallEvent is unavailable,
and a single one of these callbacks can prevent a mass parameter change.

This patch introduces a new CallEvent, CXXDeallocatorCall, which happens after
preStmt<CXXDeleteExpr>, and can completely replace that callback as
demonstrated.

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

4 years agoGlobalISel: Fold G_MUL x, 0, and G_*DIV 0, x
Matt Arsenault [Mon, 18 May 2020 00:00:59 +0000 (20:00 -0400)]
GlobalISel: Fold G_MUL x, 0, and G_*DIV 0, x