platform/upstream/llvm.git
4 years agoAdd `FloatingLiteral` to SyntaxTree
Eduardo Caldas [Mon, 22 Jun 2020 17:35:38 +0000 (17:35 +0000)]
Add `FloatingLiteral` to SyntaxTree

Subscribers: cfe-commits

Tags: #clang

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

4 years agoAdd StringLiteral to SyntaxTree
Eduardo Caldas [Thu, 25 Jun 2020 16:25:42 +0000 (16:25 +0000)]
Add StringLiteral to SyntaxTree

Subscribers: cfe-commits

Tags: #clang

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

4 years agoAdd `CharLiteral` to SyntaxTree
Eduardo Caldas [Thu, 25 Jun 2020 16:10:19 +0000 (16:10 +0000)]
Add `CharLiteral` to SyntaxTree

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[NewPM] Move debugging log printing after PassInstrumentation before-pass-callbacks
Yuanfang Chen [Thu, 25 Jun 2020 17:02:50 +0000 (10:02 -0700)]
[NewPM] Move debugging log printing after PassInstrumentation before-pass-callbacks

For passes got skipped, this is confusing because the log said it is `running pass`
but it is skipped later.

Reviewed By: asbirlea

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

4 years ago[Clang][SourceManager] optimize getFileIDLocal()
Nick Desaulniers [Thu, 25 Jun 2020 16:53:11 +0000 (09:53 -0700)]
[Clang][SourceManager] optimize getFileIDLocal()

Summary:
A recent Linux kernel commit exposed a performance cliff in Clang. Calls
to SourceManager::getFileIDLocal() when there's a cache miss against
LastFileIDLookup can be relatively expensive, as getFileIDLocal() tries
a few linear probes, then falls back to binary search.  The use of
SourceManager::isOffsetInFileID() is also relatively expensive (both
isOffsetInFileID and getFileIDLocal dominated a trace of the performance
cliff case).

As a FIXME notes (and as @kadircet helpfully noted in review of D80681),
there's a few optimizations we can do here since we've already
identified that an offset is local (as opposed to "loaded").

This patch was forked off of D80681, which additionally did this and
modified some caching behavior, as we expect this change to be less
controversial.

In terms of optimizations, we've already determined that the SLocOffset
parameter to SourceManager::getFileIDLocal() is local in the caller
SourceManager::getFileIDSlow(). Also, there's an early continue in the
binary search loop in getFileIDLocal() that are duplicated in
isOffsetInFileID() as pointed out by @kadircet.

Take advantage of these to optimize the binary search patch, and remove
the FIXME.

Reviewers: kadircet

Reviewed By: kadircet

Subscribers: cfe-commits, kadircet, srhines

Tags: #clang

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

4 years ago[lldb/Lua] Redirect Lua stdout/stderr to the CommandReturnObject
Jonas Devlieghere [Thu, 25 Jun 2020 16:55:19 +0000 (09:55 -0700)]
[lldb/Lua] Redirect Lua stdout/stderr to the CommandReturnObject

Redirect the output of stdout and stderr to the CommandReturnObject for
one line commands.

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

4 years ago[lldb/ScriptInterpreter] Let the IORedirect factory handle IO being disabled.
Jonas Devlieghere [Thu, 25 Jun 2020 16:51:55 +0000 (09:51 -0700)]
[lldb/ScriptInterpreter] Let the IORedirect factory handle IO being disabled.

Have one factory method that decides how to initialize the
ScriptInterpreterIORedirect object based on whether IO is enabled or
disabled.

4 years ago[llvm-readobj][COFF] add .llvm.call-graph-profile section dump
Zequan Wu [Mon, 15 Jun 2020 23:29:36 +0000 (16:29 -0700)]
[llvm-readobj][COFF] add .llvm.call-graph-profile section dump

Summary: Dumping contents of `.llvm.call-graph-profile` section of COFF in the same format as ELF.

Reviewers: jhenderson, MaskRay, hans

Reviewed By: jhenderson

Subscribers: grimar, rupprecht, llvm-commits

Tags: #llvm

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

4 years agoEnsure that default value for -triple is correctly normalizedvalues
Daniel Grumberg [Thu, 25 Jun 2020 16:47:41 +0000 (17:47 +0100)]
Ensure that default value for -triple is correctly normalizedvalues

This fixes the build failure at http://lab.llvm.org:8011/builders/llvm-clang-win-x-aarch64/builds/240/steps/test-check-clang/logs/FAIL%3A%20Clang-Unit%3A%3ACC1CommandLineGenerationTest.CanGenerateCC1CommandLineSeparateRequiredAbsent

4 years ago[analyzer] Enable constructor support in evalCall event.
Nithin Vadukkumchery Rajendrakumar [Thu, 25 Jun 2020 01:30:41 +0000 (18:30 -0700)]
[analyzer] Enable constructor support in evalCall event.

Pass EvalCallOptions via runCheckersForEvalCall into defaultEvalCall.
Update the AnalysisOrderChecker to support evalCall for testing.

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

4 years ago[lldb/ScriptInterpreter] Extract IO redirection logic
Jonas Devlieghere [Thu, 25 Jun 2020 16:43:17 +0000 (09:43 -0700)]
[lldb/ScriptInterpreter] Extract IO redirection logic

This patch takes the IO redirection logic from ScriptInterpreterPython
and moves it into the interpreter library so that it can be used by
other script interpreters. I've turned it into a RAII object so that we
don't have to worry about cleaning up in the calling code.

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

4 years ago[FileCheck][NFC] Remove redundant DumpInputDefault
Joel E. Denny [Thu, 25 Jun 2020 16:33:20 +0000 (12:33 -0400)]
[FileCheck][NFC] Remove redundant DumpInputDefault

Reviewed By: mehdi_amini, jhenderson

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

4 years ago[sve][acle] Add some C intrinsics for brain float types.
Francesco Petrogalli [Tue, 23 Jun 2020 22:06:13 +0000 (22:06 +0000)]
[sve][acle] Add some C intrinsics for brain float types.

Summary:
The following intrinsics has been added:

svuint16_t svcnt[_bf16]_m(svuint16_t inactive, svbool_t pg, svbfloat16_t op)
svuint16_t svcnt[_bf16]_x(svbool_t pg, svbfloat16_t op)
svuint16_t svcnt[_bf16]_z(svbool_t pg, svbfloat16_t op)

svbfloat16_t svtbl[_bf16](svbfloat16_t data, svuint16_t indices)

svbfloat16_t svtbl2[_bf16](svbfloat16x2_t data, svuint16_t indices)

svbfloat16_t svtbx[_bf16](svbfloat16_t fallback, svbfloat16_t data, svuint16_t indices)

Reviewers: c-rhodes, kmclaughlin, efriedma, sdesmalen, ctetreau

Subscribers: tschuett, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years agoChange while to do-while
Seija Kijin [Thu, 25 Jun 2020 16:29:50 +0000 (09:29 -0700)]
Change while to do-while

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

4 years ago[libunwind] Allow specifying custom Lit config files
Louis Dionne [Thu, 25 Jun 2020 16:02:43 +0000 (12:02 -0400)]
[libunwind] Allow specifying custom Lit config files

This is the libunwind counterpart of 0c66af970c80.

4 years ago[libc++abi] Allow specifying custom Lit config files
Louis Dionne [Thu, 25 Jun 2020 15:46:00 +0000 (11:46 -0400)]
[libc++abi] Allow specifying custom Lit config files

This is the libc++abi counterpart of 0c66af970c80.

4 years agoGVN.h - reduce AliasAnalysis.h include to forward declaration. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 15:37:06 +0000 (16:37 +0100)]
GVN.h - reduce AliasAnalysis.h include to forward declaration. NFC.

Cleanup MemoryDependenceAnalysis.h as well - GVN.h was also implicitly including AliasAnalysis.h via this.

Fix implicit include dependencies in source files and replace legacy AliasAnalysis typedef with AAResults where necessary.

4 years ago[NewPM] Separate out alias analysis passes in opt
Arthur Eubanks [Tue, 23 Jun 2020 23:11:59 +0000 (16:11 -0700)]
[NewPM] Separate out alias analysis passes in opt

Summary:
This somewhat matches the --aa-pipeline option, which separates out any
AA analyses to make sure they run before other passes.

Makes check-llvm failures under new PM go from 2356 -> 2303.

AA passes are not handled by PassBuilder::parsePassPipeline() but rather
PassBuilder::parseAAPipeline(), which is why this fixes some failures.

Reviewers: asbirlea, hans, ychen, leonardchan

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[Clang] Add support for -Wno-inline-namespace-reopened-noninline
Elvina Yakubova [Thu, 25 Jun 2020 13:53:23 +0000 (16:53 +0300)]
[Clang] Add support for -Wno-inline-namespace-reopened-noninline

This patch adds the option for disabling warn_inline_namespace_reopened_noninline
warning described here: https://bugs.llvm.org/show_bug.cgi?id=46106

Patch by Elvina Yakubova

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

4 years ago[FPEnv] PowerPC-specific builtin constrained FP enablement
Andrew Wock [Mon, 22 Jun 2020 16:16:03 +0000 (12:16 -0400)]
[FPEnv] PowerPC-specific builtin constrained FP enablement

This change enables PowerPC compiler builtins to generate constrained
floating point operations when clang is indicated to do so.

A couple of possibly unexpected backend divergences between constrained
floating point and regular behavior are highlighted under the test tag
FIXME-CHECK. This may be something for those on the PPC backend to look
at.

Patch by: Drew Wock <drew.wock@sas.com>

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

4 years agoAdd `BoolLiteralExpression` to SyntaxTree
Eduardo Caldas [Mon, 22 Jun 2020 16:04:54 +0000 (16:04 +0000)]
Add `BoolLiteralExpression` to SyntaxTree

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[InstCombine] fold fmul/fdiv with fabs operands
Sanjay Patel [Thu, 25 Jun 2020 15:28:04 +0000 (11:28 -0400)]
[InstCombine] fold fmul/fdiv with fabs operands

fabs(X) * fabs(Y) --> fabs(X * Y)
fabs(X) / fabs(Y) --> fabs(X / Y)

If both operands of fmul/fdiv are positive, then the result must be positive.

There's a NAN corner-case that prevents removing the more specific fold just
above this one:
fabs(X) * fabs(X) -> X * X
That fold works even with NAN because the sign-bit result of the multiply is
not specified if X is NAN.

We can't remove that and use the more general fold that is proposed here
because once we convert to this:
fabs (X * X)
...it is not legal to simplify the 'fabs' out of that expression when X is NAN.
That's because fabs() guarantees that the sign-bit is always cleared - even
for NAN values.

So this patch has the potential to lose information, but it seems unlikely if
we do the more specific fold ahead of this one.

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

4 years ago[ARM] Fixup for signed comparison warning. NFC
David Green [Thu, 25 Jun 2020 15:22:09 +0000 (16:22 +0100)]
[ARM] Fixup for signed comparison warning. NFC

4 years ago[mlir][EDSC] Add divis and diviu and vector.extractelement
Diego Caballero [Thu, 25 Jun 2020 15:06:19 +0000 (08:06 -0700)]
[mlir][EDSC] Add divis and diviu and vector.extractelement

Reviewed By: ftynse

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

4 years agoRemove orphan AMDGPUAAResult::Aliases and AMDGPUAAResult::PathAliases declarations...
Simon Pilgrim [Thu, 25 Jun 2020 14:47:56 +0000 (15:47 +0100)]
Remove orphan AMDGPUAAResult::Aliases and AMDGPUAAResult::PathAliases declarations. NFC.

4 years agoRemove orphan TypeBasedAAResult::PathAliases declaration. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 14:45:05 +0000 (15:45 +0100)]
Remove orphan TypeBasedAAResult::PathAliases declaration. NFC.

4 years agoGlobalsModRef.h - reduce CallGraph.h include to forward declarations. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 14:29:07 +0000 (15:29 +0100)]
GlobalsModRef.h - reduce CallGraph.h include to forward declarations. NFC.

Fix implicit include dependencies in source files.

4 years agoLoopAccessAnalysis.h - reduce AliasAnalysis.h include to forward declaration. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 13:53:34 +0000 (14:53 +0100)]
LoopAccessAnalysis.h - reduce AliasAnalysis.h include to forward declaration. NFC.

Fix implicit include dependencies in source files and replace legacy AliasAnalysis typedef with AAResults where necessary.

4 years ago[ARM] MVE VCVT lowering for f32->f16 truncs
David Green [Thu, 25 Jun 2020 12:25:38 +0000 (13:25 +0100)]
[ARM] MVE VCVT lowering for f32->f16 truncs

This adds code to lower f32 to f16 fp_trunc's using a pair of MVE VCVT
instructions. Due to v4f16 not being legal, fp_round are often split up
fairly early. So this reconstructs the vcvt's from a buildvector of
fp_rounds from two vector inputs. Something like:

BUILDVECTOR(FP_ROUND(EXTRACT_ELT(X, 0),
            FP_ROUND(EXTRACT_ELT(Y, 0),
            FP_ROUND(EXTRACT_ELT(X, 1),
            FP_ROUND(EXTRACT_ELT(Y, 1), ...)

It adds a VCVTN node to handle this, which like VMOVN or VQMOVN lowers
into the top/bottom lanes of an MVE instruction.

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

4 years ago[AArch64] Emit warning when disassembling unpredictable LDRAA and LDRAB
Victor Campos [Wed, 24 Jun 2020 13:25:29 +0000 (14:25 +0100)]
[AArch64] Emit warning when disassembling unpredictable LDRAA and LDRAB

Summary:
LDRAA and LDRAB in their writeback variant should softfail when the same
register is used as result and base.

This patch adds a custom decoder that catches such case and emits a
warning when it occurs.

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

4 years ago[MC] Fix PR45805: infinite recursion in assembler
Thomas Preud'homme [Tue, 5 May 2020 18:11:04 +0000 (19:11 +0100)]
[MC] Fix PR45805: infinite recursion in assembler

Give up folding an expression if the fragment of one of the operands
would require laying out a fragment already being laid out. This
prevents hitting an infinite recursion when a fill size expression
refers to a later fragment since computing the offset of that fragment
would require laying out the fill fragment and thus computing its size
expression.

Reviewed By: echristo

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

4 years ago[ObjectYAML][DWARF] Format codes. NFC.
Xing GUO [Thu, 25 Jun 2020 13:51:22 +0000 (21:51 +0800)]
[ObjectYAML][DWARF] Format codes. NFC.

4 years ago[NFC][PPC][AIX] Add stack frame layout diagram to PPCISelLowering.cpp
Zarko Todorovski [Thu, 25 Jun 2020 13:40:44 +0000 (09:40 -0400)]
[NFC][PPC][AIX] Add stack frame layout diagram to PPCISelLowering.cpp

Summary:
This NFC patch adds a diagram of the AIX ABI stack frame layout.

Based on https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/assembler/idalangref_runtime_process.html

Reviewers: sfertile, cebowleratibm, hubert.reinterpretcast, Xiangling_L

Reviewed By: sfertile

Subscribers: wuzish, nemanjai, hiraditya, kbarton, llvm-commits

Tags: #powerpc, #llvm

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

4 years ago[PhaseOrdering] delete test for vectorization; NFC
Sanjay Patel [Thu, 25 Jun 2020 13:34:11 +0000 (09:34 -0400)]
[PhaseOrdering] delete test for vectorization; NFC

As requested in D81416, I'm deleting the file that I added with:
rGdf79443

4 years ago[lldb] Rewrite Scalar::GetBytes
Pavel Labath [Thu, 25 Jun 2020 13:18:02 +0000 (15:18 +0200)]
[lldb] Rewrite Scalar::GetBytes

This function was modifying and returning pointers to static storage,
which meant that any two accesses to different Scalar objects could
potentially race (depending on which types the objects were storing and
the host endianness).

In the new version the user is responsible for providing a buffer into
which this method will store its binary representation. The main caller
(RegisterValue::GetBytes) already has one such buffer handy, so this did
not require any major rewrites.

To make that work, I've needed to mark the RegisterValue value buffer
mutable -- not an ideal solution, but definitely better than modifying
global storage. This could be further improved by changing
RegisterValue::GetBytes to take a buffer too.

4 years ago[Alignment][NFC] Conform X86, ARM and AArch64 TargetTransformInfo backends to the...
Guillaume Chatelet [Thu, 25 Jun 2020 13:23:12 +0000 (13:23 +0000)]
[Alignment][NFC] Conform X86, ARM and AArch64 TargetTransformInfo backends to the public API

The main interface has been migrated to Align already but a few backends where broadening the type from Align to MaybeAlign.
This patch makes sure all implementations conform to the public API.

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

4 years agoLiveIntervals.h.h - reduce AliasAnalysis.h include to forward declaration. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 13:06:04 +0000 (14:06 +0100)]
LiveIntervals.h.h - reduce AliasAnalysis.h include to forward declaration. NFC.

Fix implicit include dependencies in source files and replace legacy AliasAnalysis typedef with AAResults where necessary.

4 years agoAttributes.cpp - fix include sorting order. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 11:48:36 +0000 (12:48 +0100)]
Attributes.cpp - fix include sorting order. NFC.

4 years agoIRBuilder.cpp - fix include sorting order. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 11:48:14 +0000 (12:48 +0100)]
IRBuilder.cpp - fix include sorting order. NFC.

4 years agoCodeGenPrepare.cpp - remove unused IntrinsicsX86.h header. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 11:29:52 +0000 (12:29 +0100)]
CodeGenPrepare.cpp - remove unused IntrinsicsX86.h header. NFC.

4 years agoFix typos in CodeGenPrepare::splitLargeGEPOffsets comments.
Simon Pilgrim [Thu, 25 Jun 2020 10:52:55 +0000 (11:52 +0100)]
Fix typos in CodeGenPrepare::splitLargeGEPOffsets comments.

4 years ago[Alignment][NFC] Use Align for TargetCallingConv::OrigAlign
Guillaume Chatelet [Thu, 25 Jun 2020 13:21:07 +0000 (13:21 +0000)]
[Alignment][NFC] Use Align for TargetCallingConv::OrigAlign

This patch replaces D69249.

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

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

4 years ago[openmp] Use Directive_enumSize instead of OMPD_unknown position
Valentin Clement [Thu, 25 Jun 2020 13:17:15 +0000 (09:17 -0400)]
[openmp] Use Directive_enumSize instead of OMPD_unknown position

Summary:
Previously OMPD_unknown was last item in the Directive enumeration and its position was
used in various comparison and assertion. With the new Directive enumeration, this should be
change with  llvm::omp::Directive_enumSize. This patch fix two place where it was not done in
D81736.

Reviewers: vdmitrie, jdoerfert, jdenny

Reviewed By: jdoerfert

Subscribers: yaxunl, guansong, sstefan1, cfe-commits

Tags: #clang

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

4 years ago[DSE,MSSA] Check if Def is removable only wen we try to remove it.
Florian Hahn [Thu, 25 Jun 2020 12:31:11 +0000 (13:31 +0100)]
[DSE,MSSA] Check if Def is removable only wen we try to remove it.

Non-removable MemoryDefs can still eliminate other defs. Update the
isRemovable checks to only candidates for removal.

4 years agoFix a crash with [[clang::acquire_handle]] when written as a type
Aaron Ballman [Thu, 25 Jun 2020 12:44:13 +0000 (08:44 -0400)]
Fix a crash with [[clang::acquire_handle]] when written as a type
attribute with no arguments provided.

4 years ago[MLIR][Shape] Canonicalize subsequent `size_to_index` and `index_to_size`
Frederik Gossen [Thu, 25 Jun 2020 11:59:19 +0000 (11:59 +0000)]
[MLIR][Shape] Canonicalize subsequent `size_to_index` and `index_to_size`

Eliminate the subsequent applications of `size_to_index` and `index_to_size`.

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

4 years ago[OPENMP]Dynamic globalization for parallel target regions.
Alexey Bataev [Mon, 22 Jun 2020 19:04:58 +0000 (15:04 -0400)]
[OPENMP]Dynamic globalization for parallel target regions.

Summary:
Added support for dynamic memory allocation for globalized variables in
case if execution of target regions in parallel is required.

Reviewers: jdoerfert

Subscribers: jholewinski, yaxunl, guansong, sstefan1, cfe-commits, caomhin

Tags: #clang

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

4 years ago[ARM] Split cast cost tests, and add masked load/store tests. NFC
David Green [Thu, 25 Jun 2020 10:10:19 +0000 (11:10 +0100)]
[ARM] Split cast cost tests, and add masked load/store tests. NFC

This file has grown quite large and could do with being split up. This
splits away the load/store + cast tests into a separate file. Some
masked load/store + cast tests have been added too, along with some
extra load/store + fpcast tests.

4 years ago[MLIR][Shape] Canonicalize subsequent `index_to_size` and `size_to_index`
Frederik Gossen [Fri, 19 Jun 2020 14:25:10 +0000 (14:25 +0000)]
[MLIR][Shape] Canonicalize subsequent `index_to_size` and `size_to_index`

Eliminate the subsequent applications of `index_to_size` and `size_to_index`.

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

4 years ago[llvm-readelf] - Report a warning instead of an error when dumping a broken section...
Georgii Rymar [Wed, 24 Jun 2020 13:51:42 +0000 (16:51 +0300)]
[llvm-readelf] - Report a warning instead of an error when dumping a broken section header.

There is no reason to report an error in `printSectionHeaders()`, we can report
a warning and continue dumping. This is what the patch does.

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

4 years agoRepair various issues with modernize-avoid-bind
Jeff Trull [Thu, 25 Jun 2020 11:29:53 +0000 (07:29 -0400)]
Repair various issues with modernize-avoid-bind

In the process of running this check on a large codebase I found a
number of limitations, and thought I would pass on my fixes for
possible integration upstream:

* Templated function call operators are not supported
* Function object constructors are always used directly in the lambda
  body, even if their arguments are not captured
* Placeholders with namespace qualifiers (std::placeholders::_1) are
  not detected
* Lambda arguments should be forwarded to the stored function
* Data members from other classes still get captured with this
* Expressions (as opposed to variables) inside std::ref are not captured
  properly
* Function object templates sometimes have their template arguments
  replaced with concrete types

This patch resolves all those issues and adds suitable unit tests.

4 years ago[AssumeBundles] Use operand bundles to encode alignment assumptions
Tyker [Wed, 24 Jun 2020 11:18:21 +0000 (13:18 +0200)]
[AssumeBundles] Use operand bundles to encode alignment assumptions

Summary:
NOTE: There is a mailing list discussion on this: http://lists.llvm.org/pipermail/llvm-dev/2019-December/137632.html

Complemantary to the assumption outliner prototype in D71692, this patch
shows how we could simplify the code emitted for an alignemnt
assumption. The generated code is smaller, less fragile, and it makes it
easier to recognize the additional use as a "assumption use".

As mentioned in D71692 and on the mailing list, we could adopt this
scheme, and similar schemes for other patterns, without adopting the
assumption outlining.

Reviewers: hfinkel, xbolva00, lebedev.ri, nikic, rjmccall, spatel, jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: yamauchi, kuter, fhahn, merge_guards_bot, hiraditya, bollu, rkruppe, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[NFC] update test to make diff of the following commit clear
Tyker [Fri, 19 Jun 2020 13:45:27 +0000 (15:45 +0200)]
[NFC] update test to make diff of the following commit clear

4 years ago[Matrix] Use 1st/2nd instead of first/second in matrix diags.
Florian Hahn [Thu, 25 Jun 2020 10:48:07 +0000 (11:48 +0100)]
[Matrix] Use 1st/2nd instead of first/second in matrix diags.

This was suggested in D72782 and brings the diagnostics more in line
with how argument references are handled elsewhere.

Reviewers: rjmccall, jfb, Bigcheese

Reviewed By: rjmccall

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

4 years ago[ARM] Allow tail predication on sadd_sat and uadd_sat intrinsics
Sam Tebbs [Thu, 25 Jun 2020 10:53:11 +0000 (11:53 +0100)]
[ARM] Allow tail predication on sadd_sat and uadd_sat intrinsics

This patch stops the sadd_sat and uadd_sat intrinsics from blocking tail predication.

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

4 years ago[Matrix] Group matrix diagnostics together (NFC).
Florian Hahn [Wed, 24 Jun 2020 14:29:27 +0000 (15:29 +0100)]
[Matrix] Group matrix diagnostics together (NFC).

4 years agoFPEnv.h - reduce includes to forward declarations. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 10:40:25 +0000 (11:40 +0100)]
FPEnv.h - reduce includes to forward declarations. NFC.

Ensure FPEnv.cpp includes FPEnv.h first to check for hidden dependencies.

4 years agoMachineScheduler.h - reduce AliasAnalysis.h include to forward declaration. NFC.
Simon Pilgrim [Thu, 25 Jun 2020 10:14:12 +0000 (11:14 +0100)]
MachineScheduler.h - reduce AliasAnalysis.h include to forward declaration. NFC.

Replace legacy AliasAnalysis typedef with AAResults where necessary.

4 years ago[AST] Fix a crash on accessing a class without definition in constexpr function context.
Haojian Wu [Thu, 25 Jun 2020 10:11:57 +0000 (12:11 +0200)]
[AST] Fix a crash on accessing a class without definition in constexpr function context.

Reviewed By: rsmith

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

4 years ago[libclang] Get rid of relience on SourceManager member signature
Kadir Cetinkaya [Thu, 25 Jun 2020 08:56:51 +0000 (10:56 +0200)]
[libclang] Get rid of relience on SourceManager member signature

Summary:
Libclang was enforcing a singature on SourceManager::getLocalSLocEntry
which isn't possible to satisfy as pointed out in
https://reviews.llvm.org/D80681#inline-751438.

This patch updates the libclang, hopefully without breaking API stability, to
not rely on member signature. To enable changing the signature in D82498.

Reviewers: sammccall, bkramer

Subscribers: arphaman, cfe-commits

Tags: #clang

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

4 years agoEnsure that CompilerInvocationTest normalizes default target triples
Daniel Grumberg [Thu, 25 Jun 2020 09:36:12 +0000 (10:36 +0100)]
Ensure that CompilerInvocationTest normalizes default target triples

This fixes a build failure. More details at http://lab.llvm.org:8011/builders/llvm-clang-win-x-armv7l/builds/78/steps/test-check-clang/logs/FAIL%3A%20Clang-Unit%3A%3ACC1CommandLineGenerationTest.CanGenerateCC1CommandLineSeparateRequiredAbsent

4 years ago[MLIR][Shape] Fix ambiguous symbol
Frederik Gossen [Thu, 25 Jun 2020 09:39:35 +0000 (09:39 +0000)]
[MLIR][Shape] Fix ambiguous symbol

4 years ago[analyzer] SATest: Use logger in single-threaded mode as well
Valeriy Savchenko [Tue, 9 Jun 2020 09:33:56 +0000 (12:33 +0300)]
[analyzer] SATest: Use logger in single-threaded mode as well

Summary:
It generalizes the way the output looks across any -jN.
Additionally it solves the buffering problems.

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

4 years ago[analyzer] SATest: Fix package versions for test dependencies
Valeriy Savchenko [Mon, 8 Jun 2020 14:08:01 +0000 (17:08 +0300)]
[analyzer] SATest: Fix package versions for test dependencies

Summary:
Another possible difference between various users of the
testing system might be a change in dependencies installed on the
container.  This commit tries to prevent any problem related to
different versions of the libraries/headers used and fixes them to
currently installed versions.

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

4 years ago[analyzer] SATest: Add 5 more projects for testing
Valeriy Savchenko [Mon, 8 Jun 2020 13:27:04 +0000 (16:27 +0300)]
[analyzer] SATest: Add 5 more projects for testing

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

4 years ago[analyzer] SATest: Add an easy option to connect to docker for debugging
Valeriy Savchenko [Mon, 8 Jun 2020 09:49:31 +0000 (12:49 +0300)]
[analyzer] SATest: Add an easy option to connect to docker for debugging

Summary:
Docker on its own has a pretty convenient way to run shell.
This method, however, requires target container to be currently running,
which is not a usual scenario for the test system.  For this purpose,
it is better to have a simple way to run the container, shell it, and
clean up at the end of it all.  New option `--shell` does exactly this.

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

4 years ago[analyzer] SATest: Do not re-run CMake in Docker if not needed
Valeriy Savchenko [Mon, 8 Jun 2020 09:47:21 +0000 (12:47 +0300)]
[analyzer] SATest: Do not re-run CMake in Docker if not needed

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

4 years ago[analyzer] SATest: Make main script Python2 compatible
Valeriy Savchenko [Mon, 8 Jun 2020 09:45:47 +0000 (12:45 +0300)]
[analyzer] SATest: Make main script Python2 compatible

Summary:
If the user has only python2 installed and wants to use
the dockerized testing system, it is now totally OK.

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

4 years ago[analyzer] SATest: Make docker interfaces transparent
Valeriy Savchenko [Fri, 5 Jun 2020 08:47:35 +0000 (11:47 +0300)]
[analyzer] SATest: Make docker interfaces transparent

Summary:
Forward results of every command executed in docker.  The actual commands
and their error codes are more informative than python stacktraces.

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

4 years ago[analyzer] SATest: Add a set of initial projects for testing
Valeriy Savchenko [Thu, 4 Jun 2020 15:40:39 +0000 (18:40 +0300)]
[analyzer] SATest: Add a set of initial projects for testing

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

4 years ago[analyzer] SATest: Add convenience 'docker' command
Valeriy Savchenko [Thu, 4 Jun 2020 15:35:54 +0000 (18:35 +0300)]
[analyzer] SATest: Add convenience 'docker' command

Summary:
It provides a simpler interface for testing within docker.
This way the user is not required to no how to use `docker run` and
its options.

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

4 years ago[analyzer] SATest: Add initial docker infrastructure
Valeriy Savchenko [Thu, 4 Jun 2020 15:34:34 +0000 (18:34 +0300)]
[analyzer] SATest: Add initial docker infrastructure

Summary:
Static analysis is very sensitive to environment.
OS and libraries installed can affect the results.  This fact makes
it extremely hard to have a regression testing system that will
produce stable results.

For this very reason, this commit introduces a new dockerized testing
environment, so that every analyzer developer can check their changes
against previous analysis results.

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

4 years agoUse concrete natural type alignment for masked load/store operations instead of 0.
Guillaume Chatelet [Wed, 24 Jun 2020 21:26:03 +0000 (21:26 +0000)]
Use concrete natural type alignment for masked load/store operations instead of 0.

Summary: Alignment needs to be resolved at this point so we replace the
0 value with the ABI Type Alignment.

4 years ago[docs][llvm-dwarfdump] Fix the warnings during docs-llvm-html buil
Djordje Todorovic [Thu, 25 Jun 2020 08:54:37 +0000 (10:54 +0200)]
[docs][llvm-dwarfdump] Fix the warnings during docs-llvm-html buil

Before the fix the build of docs-llvm-html would fail.
The D80959 introduced options that are not recognized, so we have
warning as:

  llvm-project/llvm/docs/CommandGuide/llvm-dwarfdump.rst:40\
  :unknown option: --debug-info

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

4 years ago[docs][GlobalISel] Fix the warnings during docs-llvm-html build
Djordje Todorovic [Thu, 25 Jun 2020 08:39:39 +0000 (10:39 +0200)]
[docs][GlobalISel] Fix the warnings during docs-llvm-html build

Before the fix the build of docs-llvm-html would fail.
The rG8bc03d216824 introduced a reference to an undefined label,
so we have warning as:

  llvm-project/llvm/docs/GlobalISel/GenericOpcode.rst:295:\
  undefined label: i_intr_llvm_ptrmask (if the link has no\
  caption the label must precede a section header)

4 years ago[MLIR][Shape] Lower `shape_of` for unranked tensors
Frederik Gossen [Thu, 25 Jun 2020 08:50:02 +0000 (08:50 +0000)]
[MLIR][Shape] Lower `shape_of` for unranked tensors

Lower `shape_of` for unranked tensors.
Materializes shape in stack-allocated memory.

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

4 years ago[MLIR][Shape] Lower `shape.rank`
Frederik Gossen [Thu, 25 Jun 2020 08:42:40 +0000 (08:42 +0000)]
[MLIR][Shape] Lower `shape.rank`

Lower `shape.rank` to standard dialect.
A shape's size is the same as the extent of the first and only dimension of the
`tensor<?xindex>` it is represented by.

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

4 years ago[PowerPC] add popcount CodeGen test; NFC
Shawn Landden [Wed, 24 Jun 2020 23:29:32 +0000 (03:29 +0400)]
[PowerPC] add popcount CodeGen test; NFC

4 years ago[MLIR][Shape] Add canonicalization pattern for `shape.rank`
Frederik Gossen [Thu, 25 Jun 2020 08:37:18 +0000 (08:37 +0000)]
[MLIR][Shape] Add canonicalization pattern for `shape.rank`

Replace any `rank(shape_of(tensor))` that relies on a ranked tensor with the
corresponding constant `const_size`.

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

4 years ago[AMDGPU] Select s_cselect
Piotr Sobczak [Wed, 4 Mar 2020 14:13:08 +0000 (15:13 +0100)]
[AMDGPU] Select s_cselect

Summary:
Add patterns to select s_cselect in the isel.

Handle more cases of implicit SCC accesses in si-fix-sgpr-copies
to allow new patterns to work.

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

Tags: #llvm

Re-commit D81925 with a bugfix D82370.

Differential Revision: https://reviews.llvm.org/D81925
Differential Revision: https://reviews.llvm.org/D82370

4 years agoReland "[clang][Driver] Correct tool search path priority"
David Spickett [Wed, 24 Jun 2020 15:45:21 +0000 (16:45 +0100)]
Reland "[clang][Driver] Correct tool search path priority"

This reverts commit f570d5810485fa6fb2e1009f795a899d79bd429f.

The test was failing on MacOS if you set
LLVM_DEFAULT_TARGET_TRIPLE. For example if you set it to
"x86_64-apple-darwin" clang actually uses
"x86_64-apple-darwin<version>".

To fix this get default triple from clang itself during the
test instead of substituting it in via lit.

4 years ago[MLIR][Shape] Add constant folding to `shape.rank`
Frederik Gossen [Thu, 25 Jun 2020 08:31:49 +0000 (08:31 +0000)]
[MLIR][Shape] Add constant folding to `shape.rank`

Add constant folding for the `shape.rank` operation of the shape dialect.

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

4 years ago[lldb][PDB] Constexpr static member values as AST literals
Aleksandr Urakov [Thu, 25 Jun 2020 08:22:05 +0000 (11:22 +0300)]
[lldb][PDB] Constexpr static member values as AST literals

Summary:
When evaluating an expression referencing a constexpr static member variable, an
error is issued because the PDB does not specify a symbol with an address that
can be relocated against.

Rather than attempt to resolve the variable's value within the IR execution, the
values of all constants can be looked up and incorporated into the AST of the
record type as a literal, mirroring the original compiler AST.

This change applies to DIA and native PDB loaders.

Patch By: jackoalan

Reviewers: aleksandr.urakov, jasonmolenda, zturner, jdoerfert, teemperor

Reviewed By: aleksandr.urakov

Subscribers: sstefan1, lldb-commits, llvm-commits, #lldb

Tags: #lldb, #llvm

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

4 years ago[MLIR][Shape] Add `shape.rank` operation
Frederik Gossen [Thu, 25 Jun 2020 08:25:06 +0000 (08:25 +0000)]
[MLIR][Shape] Add `shape.rank` operation

Add `shape.rank` operation to the shape dialect.

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

4 years ago[mlir] parallel loop tiling optimization for loops with static bounds
Tobias Gysi [Thu, 25 Jun 2020 07:03:51 +0000 (09:03 +0200)]
[mlir] parallel loop tiling optimization for loops with static bounds

Summary: The patch optimizes the tiling of parallel loops with static bounds if the number of loop iterations is an integer multiple of the tile size.

Reviewers: herhut, ftynse, bondhugula

Reviewed By: herhut, ftynse

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

Tags: #mlir

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

4 years ago[AArch64][SVE] Enable __ARM_FEATURE_SVE macros.
Sander de Smalen [Wed, 24 Jun 2020 15:52:41 +0000 (16:52 +0100)]
[AArch64][SVE] Enable __ARM_FEATURE_SVE macros.

This patch enables the following macros when their corresponding
target attributes are set:
      __ARM_FEATURE_SVE (+sve)
      __ARM_FEATURE_SVE2 (+sve2)
      __ARM_FEATURE_SVE2_AES (+sve2-aes)
      __ARM_FEATURE_SVE2_BITPERM (+sve2-bitperm)
      __ARM_FEATURE_SVE2_SHA3 (+sve2-sha3)
      __ARM_FEATURE_SVE2_SM4 (+sve2-sm4)

This implies that the base SVE and SVE2 ACLE (00bet2) are now feature
complete, meaning that all intrinsics are implemented in LLVM and Clang.

Disclaimer:

To implement the ACLE we have had to fix up many parts of LLVM to make it
support scalable vectors. We have also used many target-specific intrinsics
to reduce reliance on parts of LLVM where we know scalable vectors may
not yet be handled properly (e.g. some transformation might drop the
'scalable' flag on a vector type). While we've done a best effort with
the limited testing that is available to us, we're still working to improve the
stability of the implementation. Additionally, Clang may print warnings
that code may have miscompiled. We find this often to be a false alarm
where the wrong interfaces have been used in LLVM and where resulting
code is not actually incorrect. However, this warrants a bug report
and investigation. If you find any bugs or issues, please raise them on
bugs.llvm.org and let us know!

Reviewers: rengolin, efriedma, david-arm, SjoerdMeijer

Reviewed By: SjoerdMeijer

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

4 years ago[OpenMP] Upgrade default version of OpenMP to 5.0
Saiyedul Islam [Thu, 25 Jun 2020 07:01:15 +0000 (07:01 +0000)]
[OpenMP] Upgrade default version of OpenMP to 5.0

Summary:
When -fopenmp option is specified then version 5.0 will be set as
default.

Reviewers: gregrodgers, jdoerfert, ABataev

Reviewed By: ABataev

Subscribers: pdhaliwal, yaxunl, guansong, sstefan1, cfe-commits

Tags: #clang

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

4 years ago[SVE] Make ConstantFoldGetElementPtr work for scalable vectors of indices
David Sherwood [Fri, 19 Jun 2020 13:33:20 +0000 (14:33 +0100)]
[SVE] Make ConstantFoldGetElementPtr work for scalable vectors of indices

This patch fixes a compiler crash that was hit when trying to simplify
the following code:

getelementptr [2 x i64], [2 x i64]* null, i64 0, <vscale x 2 x i64> zeroinitializer

For the case where we have a null pointer value like above, we just
need to ensure we don't assume the indices are always fixed width.

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

4 years ago[Test] Add more tests for selects & phis
Max Kazantsev [Thu, 25 Jun 2020 03:54:07 +0000 (10:54 +0700)]
[Test] Add more tests for selects & phis

4 years ago[InstCombine] Combine select & Phi by same condition
Max Kazantsev [Thu, 25 Jun 2020 03:42:16 +0000 (10:42 +0700)]
[InstCombine] Combine select & Phi by same condition

This patch transforms
```
p = phi [x, y]
s = select cond, z, p
```
with
```
s = phi[x, z]
```
if we can prove that the Phi node takes values basing on select's condition.

Differential Revision: https://reviews.llvm.org/D82072
Reviewed By: nikic

4 years ago[X86] Emit a reg-reg copy for fast isel of vector bitcasts.
Craig Topper [Thu, 25 Jun 2020 02:46:31 +0000 (19:46 -0700)]
[X86] Emit a reg-reg copy for fast isel of vector bitcasts.

Previously we just updated a map and moved on. But it possible
we cached known bits information with the vreg that can be used by
another basic block. If the other basic block has a different view
of the VT these known bits won't make sense.

By emitting a copy we ensure we have different vregs before and
after the bitcast. This prevents the known bits from being used
with the wrong type.

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

4 years ago[VE] Add clang tests for VE
Kazushi (Jam) Marukawa [Thu, 25 Jun 2020 01:13:31 +0000 (10:13 +0900)]
[VE] Add clang tests for VE

Summary:
Add a preprocessor test to check VE predefinitions.  Add a driver test
to check VE toolchain behavior.

Reviewers: simoll, k-ishizaka

Reviewed By: simoll

Subscribers: krytarowski, jfb, ormris, cfe-commits

Tags: #llvm, #ve, #clang

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

4 years ago[X86] Fix a typo error.
Wang, Pengfei [Wed, 24 Jun 2020 15:37:06 +0000 (23:37 +0800)]
[X86] Fix a typo error.

Summary: This will result opcode MULX32Hrm been emitted to MULX32Hrr.

Reviewed by: craig.topper

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

4 years agoMove explicit template class specialization out of the class to fix gcc builds (NFC)
Mehdi Amini [Thu, 25 Jun 2020 01:40:53 +0000 (01:40 +0000)]
Move explicit template class specialization out of the class to fix gcc builds (NFC)

gcc fails with:

   explicit specialization in non-namespace scope

4 years ago[X86][NFC] Pre-commit test case for the following patch.
Pengfei Wang [Thu, 25 Jun 2020 01:37:01 +0000 (18:37 -0700)]
[X86][NFC] Pre-commit test case for the following patch.

4 years ago[NewPM][opt] Assert PassPipeline and Passes don't both contain passes
Arthur Eubanks [Thu, 25 Jun 2020 00:07:13 +0000 (17:07 -0700)]
[NewPM][opt] Assert PassPipeline and Passes don't both contain passes

Reviewers: asbirlea

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[Hexagon][llvm-objcopy] Add missing check for SHN_HEXAGON_SCOMMON_1
Sid Manning [Wed, 24 Jun 2020 14:36:03 +0000 (09:36 -0500)]
[Hexagon][llvm-objcopy] Add missing check for SHN_HEXAGON_SCOMMON_1

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

4 years ago[Inliner] Handle 'no-signed-zeros-fp-math' function attribute.
Michele Scandale [Thu, 25 Jun 2020 00:47:03 +0000 (17:47 -0700)]
[Inliner] Handle 'no-signed-zeros-fp-math' function attribute.

All other floating point math optimization related attribute are merged
in a conservative way during function inlining. This commit adds the
merge rule for the 'no-signed-zeros-fp-math' attribute.

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

4 years ago[lldb] Use std::make_unique<> (NFC)
Jonas Devlieghere [Thu, 25 Jun 2020 00:44:33 +0000 (17:44 -0700)]
[lldb] Use std::make_unique<> (NFC)

Update the rest of lldb to use std::make_unique<>. I used clang-tidy to
automate this, which probably missed cases that are wrapped in ifdefs.

4 years ago[MLIR][SPIRVToLLVM] Implementation of SPIR-V module conversion pattern
George Mitenkov [Thu, 25 Jun 2020 00:42:39 +0000 (20:42 -0400)]
[MLIR][SPIRVToLLVM] Implementation of SPIR-V module conversion pattern

This patch introduces conversion patterns for `spv.module` and `spv._module_end`.
SPIR-V module is converted into `ModuleOp`. This will play a role of enclosing
scope to LLVM ops. At the moment, SPIR-V module attributes (such as memory model,
etc) are ignored.

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