platform/upstream/llvm.git
4 years ago[clangd] Update TUStatus api to accommodate preamble thread
Kadir Cetinkaya [Tue, 17 Mar 2020 18:08:23 +0000 (19:08 +0100)]
[clangd] Update TUStatus api to accommodate preamble thread

Summary:
TUStatus api had a single thread in mind. This introudces a section
action to represent state of the preamble thread. In the file status extension,
we keep old behavior almost the same. We only prepend current task with a
`parsing includes` if preamble thread is working. We omit the idle thread in the
output unless both threads are idle.

Reviewers: sammccall

Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Decouple preambleworker from astworker, NFCI
Kadir Cetinkaya [Fri, 13 Mar 2020 10:52:19 +0000 (11:52 +0100)]
[clangd] Decouple preambleworker from astworker, NFCI

Summary:
First step to enable deferred preamble builds. Not intending to land it
alone, will have follow-ups that will implement full deferred build
functionality and will land after all of them are ready.

Reviewers: sammccall

Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agoFix mismatch from D77112 and D77499
Nathan James [Mon, 6 Apr 2020 19:19:12 +0000 (20:19 +0100)]
Fix mismatch from D77112 and D77499

4 years ago[ASTMatchers] Matchers that take enumerations args provide hints with invalid arguments
Nathan James [Sun, 5 Apr 2020 14:33:34 +0000 (15:33 +0100)]
[ASTMatchers] Matchers that take enumerations args provide hints with invalid arguments

Summary:
This adds support for giving hints when using dynamic matchers with enum args. Take this query, I couldn't figure out why the matcher wasn't working:
(Turns out it needed to be "IntegralToBoolean", but thats another bug itself)
```
clang-query> match implicitCastExpr(hasCastKind("CK_IntegralToBoolean"))
1:1: Error parsing argument 1 for matcher implicitCastExpr.
1:18: Error building matcher hasCastKind.
1:30: Incorrect type for arg 1. (Expected = string) != (Actual = String)
```
With this patch the new behaviour looks like this:
```
clang-query> match implicitCastExpr(hasCastKind("CK_IntegralToBoolean"))
1:1: Error parsing argument 1 for matcher implicitCastExpr.
1:18: Error building matcher hasCastKind.
1:30: Unknown value 'CK_IntegralToBoolean' for arg 1; did you mean 'IntegralToBoolean'
```

There are no test cases for this yet as there simply isn't any infrastructure for testing errors reported when parsing args that I can see.

Reviewers: klimek, jdoerfert, aaron.ballman

Reviewed By: aaron.ballman

Subscribers: aaron.ballman, dexonsmith, mgorny, cfe-commits

Tags: #clang

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

4 years ago[llvm][CodeGen] Avoid implicit cast of TypeSize to integer in `initActions`.
Francesco Petrogalli [Mon, 6 Apr 2020 18:25:17 +0000 (19:25 +0100)]
[llvm][CodeGen] Avoid implicit cast of TypeSize to integer in `initActions`.

Reviewers: sdesmalen, efriedma

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[WebAssembly] Handle event exports
Heejin Ahn [Sat, 4 Apr 2020 13:56:35 +0000 (06:56 -0700)]
[WebAssembly] Handle event exports

Summary: This handles exports of events, which was missing.

Reviewers: sbc100

Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits

Tags: #llvm

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

4 years agoRemove math.h/cmath include from DataTypes.h
Reid Kleckner [Mon, 6 Apr 2020 18:14:59 +0000 (11:14 -0700)]
Remove math.h/cmath include from DataTypes.h

DataTypes.h is meant to wrap the integer type and limits headers, which
have some unfortunate variance. The FP math functions declared by math.h
are not unnecessary. math.h took a noticeable amount of time to parse
(~40ms), but that could be startup costs.

Anyway, we don't need to include it, so skipping it can't hurt.

This has been present since the initial CMake build was added in 2008.

4 years agoAdd InjectTLIMappings pass to new pass manager
Masoud Ataei jaliseh [Mon, 6 Apr 2020 18:16:48 +0000 (13:16 -0500)]
Add InjectTLIMappings pass to new pass manager

This pass is created in d6de5f12d485a85504bc99d384a85634574a27e2 and tested
for new and legacy pass manager but never added to new pass manager pipeline.
I am adding it to new pass manager pipeline.

This pass is get used in Vector Function Database (VFDatabase) and without
this pass in new pass manager pipeline, none of the vector libraries are work
ing with new pass manager.

Related passes:
66c120f02560ef528a60924104ead66f330190f1
https://reviews.llvm.org/D74944

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

4 years ago[mlir][AsmPrinter] Change value numbering for local scope to be the next isolated...
River Riddle [Mon, 6 Apr 2020 18:04:22 +0000 (11:04 -0700)]
[mlir][AsmPrinter] Change value numbering for local scope to be the next isolated operation.

Summary: This revision updates the value numbering when printing to number from the next parent operation that is isolated from above. This is the highest level to number from that still ensures thread-safety. This revision also changes the behavior of Operator::operator<< to use local scope to avoid thread races when numbering operations.

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

4 years ago[clang][CodeComplete] Dont perform fallback completion for incomplete member ref
Kadir Cetinkaya [Mon, 6 Apr 2020 17:13:08 +0000 (19:13 +0200)]
[clang][CodeComplete] Dont perform fallback completion for incomplete member ref

Summary:
Clang performs expression based completion whenever it can't figure out
base of a member reference expression. It might be quite confusing in cases like
incomplete types. This patch disables that fallback.

Unfortunately `ParsePostfixExpressionSuffix` is quite tangled and this patch
adds more to it.

Reviewers: sammccall

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[OpenMP] Fix layering problem with FrontendOpenMP
Johannes Doerfert [Mon, 6 Apr 2020 17:39:40 +0000 (12:39 -0500)]
[OpenMP] Fix layering problem with FrontendOpenMP

Summary:
ASTMatchers is used in various places and it now exposes the
LLVMFrontendOpenMP library to its users without them needing to depend
on it explicitly.

Reviewers: lebedev.ri

Subscribers: mgorny, yaxunl, bollu, guansong, martong, cfe-commits

Tags: #clang

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

4 years ago[SelectionDAGBuilder] Fix ISD::FREEZE creation for structs with fields of different...
Craig Topper [Mon, 6 Apr 2020 17:22:50 +0000 (10:22 -0700)]
[SelectionDAGBuilder] Fix ISD::FREEZE creation for structs with fields of different types.

The previous code used the type of the first field for the VT
passed to getNode for every field.

I've based the implementation here off what is done in visitSelect
as it removes the need to special case aggregates.

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

4 years ago[NFC] Minor fix for deferred diagnostics emitter
Yaxun (Sam) Liu [Mon, 6 Apr 2020 17:52:47 +0000 (13:52 -0400)]
[NFC] Minor fix for deferred diagnostics emitter

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

4 years ago[Hexagon] Make lld be the default linker for linux/musl
Sid Manning [Sun, 5 Apr 2020 00:36:00 +0000 (19:36 -0500)]
[Hexagon] Make lld be the default linker for linux/musl

When the target is hexagon-unknown-linux-musl select lld as the default
linker.

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

4 years ago[lit] Move the recursiveExpansionLimit setting to TestingConfig
Louis Dionne [Fri, 3 Apr 2020 16:49:09 +0000 (12:49 -0400)]
[lit] Move the recursiveExpansionLimit setting to TestingConfig

The LitConfig is shared across the whole test suite. However, since
enabling recursive expansion can be a breaking change for some test
suites, it's important to confine the setting to test suites that
enable it explicitly.

Note that other issues were raised with the way recursiveExpansionLimit
operates. However, this commit simply moves the setting to the right
place -- the mechanism by which it works can be improved independently.

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

4 years ago[gn build] Port 00a57558978
LLVM GN Syncbot [Mon, 6 Apr 2020 17:54:02 +0000 (17:54 +0000)]
[gn build] Port 00a57558978

4 years agoRevert e1730cfeb3588f20dcf4a96b181ad52761666e52
Konstantin Pyzhov [Mon, 6 Apr 2020 09:56:11 +0000 (05:56 -0400)]
Revert e1730cfeb3588f20dcf4a96b181ad52761666e52

4 years ago[clang-tidy] Add check llvmlibc-implementation-in-namespace.
Paula Toth [Mon, 6 Apr 2020 17:40:50 +0000 (10:40 -0700)]
[clang-tidy] Add check llvmlibc-implementation-in-namespace.

Summary:
This check makes sure all llvm-libc implementations falls within the `__llvm_libc` namespace.

Reviewers: alexfh, aaron.ballman, hokein, njames93

Reviewed By: aaron.ballman

Subscribers: Eugene.Zelenko, libc-commits, mgorny, xazax.hun, MaskRay, cfe-commits, sivachandra

Tags: #clang-tools-extra, #clang

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

4 years ago[CFGPrinter][CallPrinter][polly] Adding distinct structure for CFGDOTInfo
Kirill Naumov [Mon, 6 Apr 2020 16:53:10 +0000 (16:53 +0000)]
[CFGPrinter][CallPrinter][polly] Adding distinct structure for CFGDOTInfo

The patch introduces the system to distinctively store the information
needed for the Control Flow Graph as well as the instrumentary needed for
the follow-up changes: BlockFrequencyInfo and BranchProbabilityInfo.
The patch is a part of sequence of three patches, related to graphs Heat Coloring.

Reviewers: rcorcs, apilipenko, davidxl, sfertile, fedor.sergeev, eraman, bollu

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

4 years agoRemove llvm::Error include form Diagnostic.h
Reid Kleckner [Mon, 6 Apr 2020 17:32:16 +0000 (10:32 -0700)]
Remove llvm::Error include form Diagnostic.h

Saves ~400 related LLVM ADT. llvm/ADT/Error.h takes 90ms to parse.

$ diff -u <(sort thedeps-before.txt) <(sort thedeps-after.txt) \
    | grep '^[-+] ' | sort | uniq -c | sort -nr
    403 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Error.h
    403 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm-c/Error.h
    397 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Format.h
    397 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Debug.h
    377 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/StringExtras.h
    158 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm-c/ExternC.h
    138 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/ErrorOr.h
     13 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/raw_ostream.h
     13 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/SmallString.h
      5 -    /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/Twine.h

4 years ago[mlir] Fix typo in docs/DefiningAttributesAndTypes.md
Jean-Michel Gorius [Mon, 6 Apr 2020 17:38:00 +0000 (19:38 +0200)]
[mlir] Fix typo in docs/DefiningAttributesAndTypes.md

4 years ago[libc++] Make sure we execute tests with the current environment
Louis Dionne [Mon, 6 Apr 2020 16:43:55 +0000 (12:43 -0400)]
[libc++] Make sure we execute tests with the current environment

The new libc++ test format doesn't automatically do this (cause it
would be the wrong place to do it).

4 years ago[analyzer] Fix NSErrorChecker false positives on constructors.
Artem Dergachev [Mon, 6 Apr 2020 17:27:40 +0000 (20:27 +0300)]
[analyzer] Fix NSErrorChecker false positives on constructors.

Constructors and delete operators cannot return a boolean value.
Therefore they cannot possibly follow the NS/CFError-related coding
conventions.

Patch by Valeriy Savchenko!

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

4 years ago[analyzer] Fix scan-build and exploded-graph-rewriter tests on Windows.
Artem Dergachev [Mon, 6 Apr 2020 17:18:13 +0000 (20:18 +0300)]
[analyzer] Fix scan-build and exploded-graph-rewriter tests on Windows.

Detect script locations in a more straightforward way: we don't need to
search for them because we know exactly where they are anyway.

Fix a file path escaping issue in exploded-graph-rewriter with Windows
backslashes in the path.

'REQUIRES: shell' remains in scan-build tests for now, so that to
observe the buildbot reaction on removing it in a cleaner experiment.

Patch by Denys Petrov!

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

4 years ago[AST] Remove DeclCXX.h dep on ASTContext.h
Reid Kleckner [Mon, 6 Apr 2020 16:55:33 +0000 (09:55 -0700)]
[AST] Remove DeclCXX.h dep on ASTContext.h

Saves only 36 includes of ASTContext.h and related headers.

There are two deps on ASTContext.h:
- C++ method overrides iterator types (TinyPtrVector)
- getting LangOptions

For #1, duplicate the iterator type, which is
TinyPtrVector<>::const_iterator.

For #2, add an out-of-line accessor to get the language options. Getting
the ASTContext from a Decl is already an out of line method that loops
over the parent DeclContexts, so if it is ever performance critical, the
proper fix is to pass the context (or LangOpts) into the predicate in
question.

Other changes are just header fixups.

4 years agoSpeed up deferred diagnostic emitter
Yaxun (Sam) Liu [Thu, 2 Apr 2020 03:26:56 +0000 (23:26 -0400)]
Speed up deferred diagnostic emitter

Move function emitDeferredDiags from Sema to DeferredDiagsEmitter since it
is only used by DeferredDiagsEmitter.

Also skip visited functions to avoid exponential compile time.

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

4 years ago[AMDGPU] Disable 'Skip Uniform Regions' optimization by default for AMDGPU.
Konstantin Pyzhov [Mon, 6 Apr 2020 09:10:37 +0000 (05:10 -0400)]
[AMDGPU] Disable 'Skip Uniform Regions' optimization by default for AMDGPU.

Reviewers: sameerds, dstuttard

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

4 years ago[sanitizer_common] Update global_symbols.txt.
Matt Morehouse [Mon, 6 Apr 2020 16:55:56 +0000 (09:55 -0700)]
[sanitizer_common] Update global_symbols.txt.

4 years agoRevert "[sanitizer_common] Show new unexpected symbols."
Matt Morehouse [Mon, 6 Apr 2020 16:55:03 +0000 (09:55 -0700)]
Revert "[sanitizer_common] Show new unexpected symbols."

This reverts commit 68d73dfa1a422fd045e25d06c3e8ff01621c377a.

4 years agoRevert "[sanitizer_common] Update global_symbols.txt."
Matt Morehouse [Mon, 6 Apr 2020 16:54:56 +0000 (09:54 -0700)]
Revert "[sanitizer_common] Update global_symbols.txt."

This reverts commit 98bb7fdbe586e7f95588c99c5363e94870da75f5.

4 years ago[AArch64] Allow logical immediates to have all-1 in top bits
Fangrui Song [Tue, 10 Mar 2020 00:35:50 +0000 (17:35 -0700)]
[AArch64] Allow logical immediates to have all-1 in top bits

So that constant expressions like the following are permitted:

and w0, w0, #~(0xfe<<24)
and w1, w1, #~(0xff<<24)

The behavior matches GNU as (opcodes/aarch64-opc.c:aarch64_logical_immediate_p).

Reviewed By: sdesmalen

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

4 years ago[LV] Fix value that could be read uninitialized.
Florian Hahn [Mon, 6 Apr 2020 16:53:38 +0000 (17:53 +0100)]
[LV] Fix value that could be read uninitialized.

This should fix
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/18569

4 years ago[DebugInfo] Change to constructor homing debug info mode: skip literal types
Amy Huang [Tue, 31 Mar 2020 20:31:42 +0000 (13:31 -0700)]
[DebugInfo] Change to constructor homing debug info mode: skip literal types

Summary:
In constructor type homing mode sometimes complete debug info for constexpr
types was missing, because there was not a constructor emitted. This change
makes constructor type homing ignore constexpr types.

Reviewers: rnk, dblaikie

Subscribers: aprantl, cfe-commits

Tags: #clang

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

4 years ago[ELF] Make --version-script/--dynamic-list work for lazy symbols fetched by LTO libcalls
Fangrui Song [Wed, 1 Apr 2020 23:11:31 +0000 (16:11 -0700)]
[ELF] Make --version-script/--dynamic-list work for lazy symbols fetched by LTO libcalls

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

The LTO code generator happens after version script scanning and may
create references which will fetch some lazy symbols.

Currently a version script does not assign VER_NDX_LOCAL to lazy symbols
and such symbols will be made global after they are fetched.

Change findByVersion and findAllByVersion to work on lazy symbols.
For unfetched lazy symbols, we should keep them non-local (D35263).
Check isDefined() in computeBinding() as a compensation.

This patch fixes a companion bug that --dynamic-list does not export
libcall fetched symbols.

Reviewed By: grimar

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

4 years ago[sanitizer_common] Update global_symbols.txt.
Matt Morehouse [Mon, 6 Apr 2020 16:42:32 +0000 (09:42 -0700)]
[sanitizer_common] Update global_symbols.txt.

4 years ago[sanitizer_common] Show new unexpected symbols.
Matt Morehouse [Mon, 6 Apr 2020 16:39:53 +0000 (09:39 -0700)]
[sanitizer_common] Show new unexpected symbols.

4 years ago[libc++] Mark two std::timed_mutex tests as flaky
Louis Dionne [Mon, 6 Apr 2020 16:40:54 +0000 (12:40 -0400)]
[libc++] Mark two std::timed_mutex tests as flaky

4 years ago[RDA] Only store most recent reaching def from predecessors (NFCI)
Nikita Popov [Sat, 4 Apr 2020 22:46:20 +0000 (00:46 +0200)]
[RDA] Only store most recent reaching def from predecessors (NFCI)

When entering a basic block, RDA inserts reaching definitions coming
from predecessor blocks (which will be negative numbers) in a rather
peculiar way. If you have incoming reaching definitions -4, -3, -2, -1,
it will insert those. If you have incoming reaching definitions
-1, -2, -3, -4, it will insert -1, -1, -1, -1, as the max is taken
at each step. That's probably not what was intended...

However, RDA only actually cares about the most recent reaching
definition from a predecessor (to calculate clearance), so this
ends up working fine as far as behavior is concerned. It does
waste memory on unnecessary reaching definitions though.

This patch changes the implementation to first compute the most
recent reaching definition in one loop, and then insert only that
one in a separate loop.

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

4 years ago[x86] add size cost tests for casts and binops; NFC
Sanjay Patel [Mon, 6 Apr 2020 16:34:59 +0000 (12:34 -0400)]
[x86] add size cost tests for casts and binops; NFC

Shows bugs for div/rem/fdiv and possibly others.

4 years ago[RDA] Don't adjust ReachingDefDefaultVal (NFCI)
Nikita Popov [Sun, 5 Apr 2020 17:16:56 +0000 (19:16 +0200)]
[RDA] Don't adjust ReachingDefDefaultVal (NFCI)

At the end of a basic block, RDA adjusts all the reaching defs it
found to be relative to the end of the basic block, rather than the
start of it. However, it also does this to registers which don't
have a reaching def, indicated by ReachingDefDefaultVal. This means
that code checking against ReachingDefDefaultVal will not skip them,
and may insert them into the reaching definition list. This is
ultimately harmless, but causes unnecessary work and is logically
not right.

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

4 years ago[OPENMP]Fix PR45439: `omp for collapse(2) ordered(2)` generates invalid
Alexey Bataev [Mon, 6 Apr 2020 15:49:17 +0000 (11:49 -0400)]
[OPENMP]Fix PR45439: `omp for collapse(2) ordered(2)` generates invalid
IR.

Fixed a crash because of the not quite correct casting of the value of
iterations.

4 years ago[lldb] NFC: Fix trivial typo in comments, documents, and messages
Kazuaki Ishizaki [Mon, 6 Apr 2020 16:06:02 +0000 (01:06 +0900)]
[lldb] NFC: Fix trivial typo in comments, documents, and messages

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

4 years agoUse in-tree clang-format-diff.py as Arcanist linter
Scott Linder [Fri, 3 Apr 2020 19:48:28 +0000 (15:48 -0400)]
Use in-tree clang-format-diff.py as Arcanist linter

Summary:
The only guarantee there seems to be in the clang-format packaging is
that an executable called `clang-format` is in the PATH. Use the
in-tree `clang-format-diff.py` to avoid assuming anything else.

Also remove dead code for SVN repo and switch to `git diff-index` which
is the git plumbing equivalent of `git diff` in this case.

Reviewers: starsid, mehdi_amini, vitalybuka, fhahn, kadircet

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[llvm-objdump] Fix case of -Wmismatched-tags
Jonathan Roelofs [Mon, 6 Apr 2020 15:37:14 +0000 (09:37 -0600)]
[llvm-objdump] Fix case of -Wmismatched-tags

4 years ago[llvm] Fix missing FileCheck directive colons
Jonathan Roelofs [Thu, 2 Apr 2020 22:28:32 +0000 (16:28 -0600)]
[llvm] Fix missing FileCheck directive colons

https://reviews.llvm.org/D77352

4 years ago[ValueTracking] enhance matching of umin/umax with 'not' operands
Sanjay Patel [Mon, 6 Apr 2020 15:40:45 +0000 (11:40 -0400)]
[ValueTracking] enhance matching of umin/umax with 'not' operands

The cmyk test is based on the known regression that resulted from:
rGf2fbdf76d8d0

This improves on the equivalent signed min/max change:
rG867f0c3c4d8c

The underlying icmp equivalence is:
  ~X pred ~Y --> Y pred X

For an icmp with constant, canonicalization results in a swapped pred:
  ~X < C -->  X > ~C

4 years agoFix a typo in an assert message; NFC.
BoYao Zhang [Mon, 6 Apr 2020 15:49:51 +0000 (11:49 -0400)]
Fix a typo in an assert message; NFC.

4 years agoAMDGPU/GlobalISel: Select llvm.amdgcn.div.scale
Matt Arsenault [Mon, 6 Apr 2020 01:16:00 +0000 (21:16 -0400)]
AMDGPU/GlobalISel: Select llvm.amdgcn.div.scale

4 years agoAMDGPU/GlobalISel: Fix llvm.amdgcn.div.fmas.ll
Matt Arsenault [Sun, 5 Apr 2020 23:49:09 +0000 (19:49 -0400)]
AMDGPU/GlobalISel: Fix llvm.amdgcn.div.fmas.ll

4 years ago[AMDGPU] Fix inaccurate comments
Jay Foad [Mon, 6 Apr 2020 15:44:08 +0000 (16:44 +0100)]
[AMDGPU] Fix inaccurate comments

4 years ago[libc++] Always use -fsyntax-only in .fail.cpp tests
Louis Dionne [Mon, 6 Apr 2020 15:04:13 +0000 (11:04 -0400)]
[libc++] Always use -fsyntax-only in .fail.cpp tests

We had a workaround because GCC 5 does not evaluate static assertions
that are dependent on template parameters. This commit removes the
workaround and marks the corresponding tests as unsupported with GCC 5.
This has the benefit of bringing the new and the old test formats closer
without having to carry a workaround for an old compiler in the new
test format.

4 years ago[analyzer] StdLibraryFunctionsChecker: match signature based on FunctionDecl
Gabor Marton [Fri, 3 Apr 2020 15:01:00 +0000 (17:01 +0200)]
[analyzer] StdLibraryFunctionsChecker: match signature based on FunctionDecl

Summary:
Currently we match the summary signature based on the arguments in the CallExpr.
There are a few problems with this approach.
1) Variadic arguments are handled badly. Consider the below code:
     int foo(void *stream, const char *format, ...);
     void test_arg_constraint_on_variadic_fun() {
        foo(0, "%d%d", 1, 2); // CallExpr
     }
   Here the call expression holds 4 arguments, whereas the function declaration
   has only 2 `ParmVarDecl`s. So there is no way to create a summary that
   matches the call expression, because the discrepancy in the number of
   arguments causes a mismatch.
2) The call expression does not handle the `restrict` type qualifier.
   In C99, fwrite's signature is the following:
     size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);
   However, in a call expression, like below, the type of the argument does not
   have the restrict qualifier.
    void test_fread_fwrite(FILE *fp, int *buf) {
      size_t x = fwrite(buf, sizeof(int), 10, fp);
    }
   This can result in an unmatches signature, so the summary is not applied.
The solution is to match the summary against the referened callee
`FunctionDecl` that we can query from the `CallExpr`.

Further patches will continue with additional refactoring where I am going to
do a lookup during the checker initialization and the signature match will
happen there. That way, we will not check the signature during every call,
rather we will compare only two `FunctionDecl` pointers.

Reviewers: NoQ, Szelethus, gamesh411, baloghadamsoftware

Subscribers: whisperity, xazax.hun, kristof.beyls, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, steakhal, danielkiss, ASDenysPetrov, cfe-commits

Tags: #clang

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

4 years ago[libc++] Make sure we include %{flags} when building with the new format
Louis Dionne [Mon, 6 Apr 2020 14:25:51 +0000 (10:25 -0400)]
[libc++] Make sure we include %{flags} when building with the new format

Otherwise, we're missing some flags like the flags that are used by
sanitizer builds and the 32-bit builds. In the long term, I think it
would be better to have only %{compile_flags} and %{link_flags}, but
for the benefit of adopting the new format by default, I think it's OK
to add %{flags} to it.

4 years ago[libc++] Mark is_scalar test as unsupported in C++11 and C++14
Louis Dionne [Mon, 6 Apr 2020 14:46:14 +0000 (10:46 -0400)]
[libc++] Mark is_scalar test as unsupported in C++11 and C++14

That test requires std::optional. We never noticed that because our
test format was skipping Objective-C++ tests altogether.

4 years ago[mlir][Linalg] Add a linalg.tensor_reshape to operate on tensors
Nicolas Vasilache [Mon, 6 Apr 2020 15:18:28 +0000 (11:18 -0400)]
[mlir][Linalg] Add a linalg.tensor_reshape to operate on tensors

Summary:
This revision adds a tensor_reshape operation that operates on tensors.
In the tensor world the constraints are less stringent and we can allow more
arbitrary dynamic reshapes, as long as they are contractions.

The expansion of a dynamic dimension into multiple dynamic dimensions is under-specified and is punted on for now.

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

4 years ago[ValueTracking] add/adjust tests for min/max; NFC
Sanjay Patel [Mon, 6 Apr 2020 15:12:16 +0000 (11:12 -0400)]
[ValueTracking] add/adjust tests for min/max; NFC

4 years agoclang-format: [JS] handle pseudo-keywords.
Martin Probst [Mon, 6 Apr 2020 13:20:54 +0000 (15:20 +0200)]
clang-format: [JS] handle pseudo-keywords.

Summary:
The previous change in https://reviews.llvm.org/D77311 attempted to
detect more C++ keywords. However it also precisely detected all
JavaScript keywords. That's generally correct, but many JavaScripy
keywords, e.g. `get`, are so-called pseudo-keywords. They can be used in
positions where a keyword would never be legal, e.g. in a dotted
expression:

    x.type;  // type is a pseudo-keyword, but can be used here.
    x.get;   // same for get etc.

This change introduces an additional parameter to
`IsJavaScriptIdentifier`, allowing clients to toggle whether they want
to allow `IdentifierName` tokens, i.e. pseudo-keywords.

Reviewers: krasimir

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[analyzer] StdLibraryFunctionsChecker: Add test for function with default parameter
Gabor Marton [Fri, 3 Apr 2020 15:56:28 +0000 (17:56 +0200)]
[analyzer] StdLibraryFunctionsChecker: Add test for function with default parameter

Reviewers: Szelethus, baloghadamsoftware, gamesh411, steakhal, balazske

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

Tags: #clang

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

4 years ago[VPlan] Introduce new VPWidenCallRecipe (NFC).
Florian Hahn [Mon, 6 Apr 2020 14:59:45 +0000 (15:59 +0100)]
[VPlan] Introduce new VPWidenCallRecipe (NFC).

This patch moves calls to their own recipe, to simplify the transition
to VPUser for operands of VPWidenRecipe, as discussed in D76992.

Subsequently additional information can be added to the recipe rather
than computing it during the execute step.

Reviewers: rengolin, Ayal, gilr, hsaito

Reviewed By: gilr

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

4 years ago[AIX][PPC] Implement by-val caller arguments in multiple registers
Chris Bowler [Mon, 6 Apr 2020 14:41:48 +0000 (10:41 -0400)]
[AIX][PPC] Implement by-val caller arguments in multiple registers

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

4 years agoAMDGPU/GlobalISel: Add unmerge of concat tests
Matt Arsenault [Thu, 6 Feb 2020 19:44:56 +0000 (14:44 -0500)]
AMDGPU/GlobalISel: Add unmerge of concat tests

4 years ago[Alignment][NFC] Assume AlignmentFromAssumptions::getNewAlignment is always set.
Guillaume Chatelet [Mon, 6 Apr 2020 10:53:56 +0000 (10:53 +0000)]
[Alignment][NFC] Assume AlignmentFromAssumptions::getNewAlignment is always set.

Summary:
In D77454 we explain that `LoadInst` and `StoreInst` always have their alignment defined.
This allows to work backward here and to infer that `getNewAlignment` does not need to return `0` in case of failure.
Returning `1` also works since it needs to be greater than the Load/Store alignment which is a least `1`.

This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agotry to fix tsan bot
Nico Weber [Mon, 6 Apr 2020 14:47:41 +0000 (10:47 -0400)]
try to fix tsan bot

4 years ago[NFC][PPC][AIX] Test updates for byval args that fit in a single register
Chris Bowler [Mon, 6 Apr 2020 13:51:21 +0000 (09:51 -0400)]
[NFC][PPC][AIX] Test updates for byval args that fit in a single register

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

4 years ago[llvm-objdump][XCOFF] Use symbol index+symbol name + storage mapping class as label...
diggerlin [Mon, 6 Apr 2020 14:09:12 +0000 (10:09 -0400)]
[llvm-objdump][XCOFF] Use symbol index+symbol name + storage mapping class as label for -D

SUMMARY:

For the llvm-objdump -D, the symbol name is used as a label in the disassembly for the specific address (when a symbol address is equal to the virtual address in the dump).

In XCOFF, multiple symbols may have the same name, being differentiated by their storage mapping class. It is helpful to print the QualName and not just the name when forming the output label for a csect symbol. The symbol index further removes any ambiguity caused by duplicate names.

To maintain compatibility with the binutils objdump, the XCOFF-specific --symbol-description option is added to enable the enhanced format.

Reviewers: hubert.reinterpretcast, James Henderson, Jason Liu ,daltenty
Subscribers: wuzish, nemanjai, hiraditya

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

4 years ago[lldb][nfc] remove overriden funcs with default impl
Konrad Kleine [Mon, 6 Apr 2020 12:37:58 +0000 (08:37 -0400)]
[lldb][nfc] remove overriden funcs with default impl

Summary:
These `SearchFilter` methods all return `true` by their default
implementation:

```lang=c++
virtual bool ModulePasses(const FileSpec &spec);
virtual bool ModulePasses(const lldb::ModuleSP &module_sp);
virtual bool AddressPasses(Address &addr);
virtual bool CompUnitPasses(FileSpec &fileSpec);
virtual bool CompUnitPasses(CompileUnit &compUnit);
```

That's why I've documented the default behavior and remove the overrides
(except for `AddressPasses`) in these `SearchFilter`-subclasses which all just
repeated the default implementation: `SearchFilterByModule`,
`SearchFilterByModuleList`.

Reviewers: jankratochvil, labath

Reviewed By: jankratochvil, labath

Subscribers: labath, lldb-commits

Tags: #lldb

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

4 years agoMake clang/test/Driver/cl-options.cu pass in 32-bit builds
Hans Wennborg [Mon, 6 Apr 2020 14:01:48 +0000 (16:01 +0200)]
Make clang/test/Driver/cl-options.cu pass in 32-bit builds

4 years ago[OpenMP][FIX] Add missing cmake dependence needed after 931c0cd713ee
Johannes Doerfert [Mon, 6 Apr 2020 13:59:47 +0000 (08:59 -0500)]
[OpenMP][FIX] Add missing cmake dependence needed after 931c0cd713ee

4 years ago[libc++] SSH: Fix tarring of dependencies on Windows
Louis Dionne [Mon, 6 Apr 2020 13:33:08 +0000 (09:33 -0400)]
[libc++] SSH: Fix tarring of dependencies on Windows

On Windows, we must make sure to close the temporary tar file before we
try to scp it.

This is an alternative approach to https://reviews.llvm.org/D77500.

4 years ago[Polly] Add -polly-isl-arg command line option.
Michael Kruse [Thu, 2 Apr 2020 15:06:17 +0000 (10:06 -0500)]
[Polly] Add -polly-isl-arg command line option.

The option is passed as argv to ISL's command line option parser.

Polly's own own command line options take precedence over options passed
as `-polly-isl-arg`. For instance,
`-polly-isl-arg=--schedule-outer-coincidence` will be ignored in favor
of `-polly-opt-outer-coincidence`.

Reviewed By: grosser

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

4 years ago[MC] Use a byte_swap in emitIntValue instead of doing it in a loop. NFCI.
Benjamin Kramer [Mon, 6 Apr 2020 13:21:16 +0000 (15:21 +0200)]
[MC] Use a byte_swap in emitIntValue instead of doing it in a loop.  NFCI.

4 years ago[Matrix] Update load/storeMatrix to take indices as Value* (NFC).
Florian Hahn [Mon, 6 Apr 2020 13:44:00 +0000 (14:44 +0100)]
[Matrix] Update load/storeMatrix to take indices as Value* (NFC).

This allows using the functions to be used with loop dependent indices.

4 years agoMake test more robust
James Henderson [Mon, 6 Apr 2020 09:47:13 +0000 (10:47 +0100)]
Make test more robust

llvm-readobj prints the file path as part of the output, so
--implicit-check-not patterns can accidentally match it. This patch
makes the test more robust by preventing failures if "foo" is in
somebody's path.

Reviewed by: grimar

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

4 years ago[lldb-server] jThreadsInfo returns stack memory
Jaroslav Sevcik [Mon, 6 Apr 2020 13:41:33 +0000 (15:41 +0200)]
[lldb-server] jThreadsInfo returns stack memory

This patch adds parts of the stack that should be useful for unwinding
to the jThreadsInfo reply from lldb-server. We return the top of the
stack (12 words), and we also try to walk the frame pointer linked list
and return the memory containing frame pointer and return address pairs.
The idea is to cover the cases with and without frame pointer omission.

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

4 years agotest commit
Chris Bowler [Mon, 6 Apr 2020 13:36:59 +0000 (09:36 -0400)]
test commit

4 years agoAMDGPU: Use DAG patterns for div_fmas
Matt Arsenault [Fri, 20 Dec 2019 16:09:45 +0000 (21:39 +0530)]
AMDGPU: Use DAG patterns for div_fmas

4 years agoAMDGPU: Remove DisableInst feature
Matt Arsenault [Thu, 21 Feb 2019 19:55:29 +0000 (14:55 -0500)]
AMDGPU: Remove DisableInst feature

I'm not sure why these were bothering to check the instruction
profile, since those profiles should only be used with these
instruction classes.

4 years agoDAG: Combine extract_vector_elt of concat_vectors
Matt Arsenault [Wed, 29 Aug 2018 06:25:36 +0000 (09:25 +0300)]
DAG: Combine extract_vector_elt of concat_vectors

Fixes extra canonicalize regressions when legalizing
vector fminnum/fmaxnum.

4 years agoMake paths in generated llvm-lit relative as well.
Nico Weber [Sun, 5 Apr 2020 00:25:27 +0000 (20:25 -0400)]
Make paths in generated llvm-lit relative as well.

This builds on top of D77184. With this, I can rename my build directory
to a different name and `bin/llvm-lit ../llvm-project/clang/test
../llvm-project/llvm/test` still succeeds.

I haven't tried copying the build dir to a different machine to run
tests there yet, but I tried something like it a few months ago and it
worked back then.

Changes:
- Make configure_lit_site_cfg() store the main / generated config pair
  interleaved in the LLVM_LIT_CONFIG_FILES list and postpone converting
  it to python code to llvm-lit's CMakeList.
- Pull the relpath code into a new function make_paths_relative() and
  call that in llvm-lit's CMakeList, prior to converting the list to
  python code.
- Pull the path() function into a variable and use that in llvm-lit's
  CMakeList too.

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

4 years ago[libc++] [test] Add missing FILE_DEPENDENCIES to align.pass.sh.cpp
Sergej Jaskiewicz [Mon, 6 Apr 2020 13:12:44 +0000 (09:12 -0400)]
[libc++] [test] Add missing FILE_DEPENDENCIES to align.pass.sh.cpp

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

4 years agoRevert 43f031d3126 "Enable IBT(Indirect Branch Tracking) in JIT with CET(Control...
Hans Wennborg [Mon, 6 Apr 2020 13:05:08 +0000 (15:05 +0200)]
Revert 43f031d3126 "Enable IBT(Indirect Branch Tracking) in JIT with CET(Control-flow Enforcement Technology)"

ExecutionEngine/MCJIT/cet-code-model-lager.ll is failing on 32-bit
windows, see llvm-commits thread for fef2dab.

This reverts commit 43f031d31264d20cfb8f1ebd606c66e57c231d4d
and the follow-ups fef2dab100dfc7c49ccf0ce2bacea409324b54ba and
6a800f6f622a7ade275fa6cb1ef07803460d8bb3.

4 years ago[mlir][LowerToAffineLoops] Handle tensors of rank 0
Djordje Todorovic [Sat, 4 Apr 2020 16:32:43 +0000 (18:32 +0200)]
[mlir][LowerToAffineLoops] Handle tensors of rank 0

This will fix the case:

  $ toyc -emit=jit test.toy
  $ cat test.toy
  def main() {
    var a = 1;
    print(a);
  }

Without this patch it would trigger an assertion.

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

4 years agoAdd a triple to test/ExecutionEngine/MCJIT/cet-code-model-lager.ll
Hans Wennborg [Mon, 6 Apr 2020 12:18:35 +0000 (14:18 +0200)]
Add a triple to test/ExecutionEngine/MCJIT/cet-code-model-lager.ll

It was failing in 32-bit Windows builds with:

  $ ":" "RUN: at line 1"
  $ "c:\src\llvm_package_944db8a4\build32_stage0\bin\lli.exe" "-mtriple=i686-pc-windows-msvc-elf" "-code-model=large" "C:\src\llvm_package_944db8a4\llvm-project\llvm\test\ExecutionEngine\MCJIT\cet-code-model-lager.ll"
  # command stderr:
  Assertion failed: Is64Bit && "Large code model is only legal in 64-bit mode.", file C:\src\llvm_package_944db8a4\llvm-project\llvm\lib\Target\X86\X86ISelLowering.cpp, line 4212

Let's see if this helps.

4 years ago[DWARF5] Added support for emission of debug_macro section.
Sourabh Singh Tomar [Fri, 3 Apr 2020 07:14:09 +0000 (12:44 +0530)]
[DWARF5] Added support for emission of debug_macro section.

Summary:
This patch adds support for emission of following DWARFv5 macro forms
in .debug_macro section.

1. DW_MACRO_start_file
2. DW_MACRO_end_file
3. DW_MACRO_define_strp
4. DW_MACRO_undef_strp.

Reviewed By: dblaikie, ikudrin

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

4 years ago[llvm/Support] Don't crash on empty nullptr ranges when decoding LEBs
Pavel Labath [Thu, 2 Apr 2020 12:48:12 +0000 (14:48 +0200)]
[llvm/Support] Don't crash on empty nullptr ranges when decoding LEBs

Summary:
If the decoding functions are called with both start and end pointers
being nullptr, the function will crash due to a nullptr dereference.
This happens because the function does not recognise nullptr as a valid
end pointer.

Obviously, nobody is going to pass null pointers here deliberately, but
it can happen indirectly (as it did for me), when calling these
functions on an ArrayRef, as a default-initialized empty ArrayRef will
have both begin() and end() pointers equal to nullptr.

The fix is to simply remove the nullptr check. Passing nullptr for "end"
with a valid "begin" pointer will still work, as one cannot reach
nullptr by incrementing a valid pointer without triggerring UB.

Reviewers: dblaikie

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[llvm/Support] Make more DataExtractor methods error-aware
Pavel Labath [Tue, 24 Mar 2020 16:49:55 +0000 (17:49 +0100)]
[llvm/Support] Make more DataExtractor methods error-aware

Summary:
This patch adds the optional Error argument, and the Cursor variants to
more DataExtractor methods. The functions now behave the same way as
other error-aware functions (they set the error when they fail, and
don't do anything if the error is already set).

I have merged the LEB128 implementations via a template (similarly to
how fixed-size functions are handled) to reduce code duplication.

Depends on D77304.

Reviewers: dblaikie, aprantl

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[Support] Make DataExtractor string functions error-aware
Pavel Labath [Mon, 23 Mar 2020 15:15:49 +0000 (16:15 +0100)]
[Support] Make DataExtractor string functions error-aware

Summary:
This patch adds an optional Error argument to DataExtractor functions
for string extraction, and makes them behave like other DataExtractor
functions (set the error if extraction fails, don't do anything if the
error is already set).

I have merged the StringRef and C string versions of the functions to
reduce code duplication.

Reviewers: dblaikie, MaskRay

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[Alignment][NFC] Add DebugStr and operator*
Guillaume Chatelet [Mon, 6 Apr 2020 10:08:22 +0000 (10:08 +0000)]
[Alignment][NFC] Add DebugStr and operator*

Summary:
This is a roll forward of D77394 minus AlignmentFromAssumptions (which needs to be addressed separately)
Differences from D77394:
 - DebugStr() now prints the alignment value or `None` and no more `Align(x)` or `MaybeAlign(x)`
   - This is to keep Warning message consistent (CodeGen/SystemZ/alloca-04.ll)
 - Removed a few unneeded headers from Alignment (since it's included everywhere it's better to keep the dependencies to a minimum)

Reviewers: courbet

Subscribers: sdardis, hiraditya, jrtc27, atanasyan, llvm-commits

Tags: #llvm

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

4 years ago[Alignment][NFC] Remove deprecated functions introduced in 10.0.0
Guillaume Chatelet [Fri, 3 Apr 2020 15:26:35 +0000 (15:26 +0000)]
[Alignment][NFC] Remove deprecated functions introduced in 10.0.0

Summary:
24 March 2020: LLVM 10.0.0 is out.
I gathered all deprecated function introduced between 9 and 10 and cleaned them up so they will be removed from 11.

> git log -p -S LLVM_ATTRIBUTE_DEPRECATED llvmorg-9.0.0..llvmorg-10.0.0

Reviewers: courbet

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

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

4 years ago[X86][SSE] combineVectorSignBitsTruncation - remove minimum vector length limitations
Simon Pilgrim [Mon, 6 Apr 2020 09:42:14 +0000 (10:42 +0100)]
[X86][SSE] combineVectorSignBitsTruncation - remove minimum vector length limitations

truncateVectorWithPACK has its own vector length controls, so we can rely on those directly. This helps some existing truncation to subvector tests, which were being combined later during shuffle lowering at which point the sign/zero bit detection had become obscured preventing lowerShuffleWithPACK working as well as it could.

4 years ago[LTO] Replace hand-rolled endian conversion with support::endian. NFCI.
Benjamin Kramer [Mon, 6 Apr 2020 11:23:27 +0000 (13:23 +0200)]
[LTO] Replace hand-rolled endian conversion with support::endian. NFCI.

4 years ago[RuntimeDyld] Replace hand-rolled endian conversion with support::endian. NFCI.
Benjamin Kramer [Mon, 6 Apr 2020 11:22:53 +0000 (13:22 +0200)]
[RuntimeDyld] Replace hand-rolled endian conversion with support::endian. NFCI.

4 years ago[llvm-bcanalyzer] Simplify code. NFCI.
Benjamin Kramer [Mon, 6 Apr 2020 10:50:34 +0000 (12:50 +0200)]
[llvm-bcanalyzer] Simplify code. NFCI.

4 years ago[ARM] MVE vqmovn tests. NFC.
David Green [Mon, 6 Apr 2020 09:26:40 +0000 (10:26 +0100)]
[ARM] MVE vqmovn tests. NFC.

4 years ago[VE] Update lea/load/store instructions
Kazushi (Jam) Marukawa [Mon, 6 Apr 2020 07:17:20 +0000 (09:17 +0200)]
[VE] Update lea/load/store instructions

Summary:
Modify lea/load/store instructions to accept `disp(index, base)`
style addressing mode (called ASX format).  Also, uniform the
number of DAG nodes to have 3 operands for this ASX format
instructions, and update selectADDR functions to lower
appropriate MI.

Reviewers: arsenm, simoll, k-ishizaka

Reviewed By: simoll

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

4 years agoRevert "[IPRA][ARM] Spill extra registers at -Oz"
Oliver Stannard [Mon, 6 Apr 2020 09:33:55 +0000 (10:33 +0100)]
Revert "[IPRA][ARM] Spill extra registers at -Oz"

Reverting because this is causing failures on bots with expensive checks
enabled.

This reverts commit 73cea83a6f5ab521edf3cccfc603534776d691ec.

4 years ago[lldb] Add option to retry Fix-Its multiple times to failed expressions
Raphael Isemann [Mon, 6 Apr 2020 09:08:12 +0000 (11:08 +0200)]
[lldb] Add option to retry Fix-Its multiple times to failed expressions

Summary:
Usually when Clang emits an error Fix-It it does two things. It emits the diagnostic and then it fixes the
currently generated AST to reflect the applied Fix-It. While emitting the diagnostic is easy to implement,
fixing the currently generated AST is often tricky. That causes that some Fix-Its just keep the AST as-is or
abort the parsing process entirely. Once the parser stopped, any Fix-Its for the rest of the expression are
not detected and when the user manually applies the Fix-It, the next expression will just produce a new
Fix-It.

This is often occurring with quickly made Fix-Its that are just used to bridge temporary API changes
and that often are not worth implementing a proper API fixup in addition to the diagnostic. To still
give some kind of reasonable user-experience for users that have these Fix-Its and rely on them to
fix their expressions, this patch adds the ability to retry parsing with applied Fix-Its multiple time to
give the normal Fix-It experience where things Clang knows how to fix are not causing actual expression
error (at least when automatically applying Fix-Its is activated).

The way this is implemented is just by having another setting in the expression options that specify how
often we should try applying Fix-Its and then reparse the expression. The default setting is still 1 for everyone
so this should not affect the speed in which we fail to parse expressions.

Reviewers: jingham, JDevlieghere, friss, shafik

Reviewed By: shafik

Subscribers: shafik, abidh

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

4 years ago[AArch64][SVE] Add SVE intrinsics for saturating add & subtract
Kerry McLaughlin [Mon, 6 Apr 2020 08:35:05 +0000 (09:35 +0100)]
[AArch64][SVE] Add SVE intrinsics for saturating add & subtract

Summary:
Adds the following intrinsics:
  - @llvm.aarch64.sve.[s|u]qadd.x
  - @llvm.aarch64.sve.[s|u]qsub.x

Reviewers: sdesmalen, c-rhodes, dancgr, efriedma, cameron.mcinally, rengolin

Reviewed By: efriedma

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, danielkiss, cfe-commits, llvm-commits

Tags: #llvm

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

4 years ago[Matrix] Add option to use row-major matrix layout as default.
Florian Hahn [Mon, 6 Apr 2020 08:43:41 +0000 (09:43 +0100)]
[Matrix] Add option to use row-major matrix layout as default.

This patch adds a -matrix-default-layout option which can be used to
set the default matrix layout to row-major or column-major (default).

The initial patch updates codegen for loads, stores, binary operators
and matrix multiply.

Reviewers: anemet, Gerolf, andrew.w.kaylor, LuoYuanke

Reviewed By: anemet

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

4 years ago[clang] fix undefined behaviour in RawComment::getFormattedText()
Oliver Bruns [Mon, 6 Apr 2020 08:38:30 +0000 (10:38 +0200)]
[clang] fix undefined behaviour in RawComment::getFormattedText()

Summary:
Calling `back()` and `pop_back()` on the empty string is undefined
behavior [1,2].

The issue manifested itself as an uncaught `std::out_of_range` exception
when running `clangd` compiled on RHEL7 using devtoolset-9.

[1] https://en.cppreference.com/w/cpp/string/basic_string/back
[2] https://en.cppreference.com/w/cpp/string/basic_string/pop_back

Fixes: 1ff7c32fc91c607b690d4bb9cf42f406be8dde68

Reviewers: teemperor, ioeric, cfe-commits

Reviewed By: teemperor

Subscribers: ilya-biryukov, kadircet, usaxena95

Tags: #clang

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