2 years ago[libc++] Mark the shared_future.wait_for test as being flaky
Louis Dionne [Wed, 4 Mar 2020 15:10:02 +0000 (10:10 -0500)]
[libc++] Mark the shared_future.wait_for test as being flaky

It is timing sensitive and it fails from time to time. If marking it as
flaky doesn't help, we can try tweaking the time outs.

2 years agoHandle PluginAttrInstances using ManagedStatic
John Brawn [Wed, 4 Mar 2020 13:25:06 +0000 (13:25 +0000)]
Handle PluginAttrInstances using ManagedStatic

We need to make sure that PluginAttrInstances is deleted before shared libraries
are unloaded, because otherwise when deleting its contents we'll try to access
a virtual destructor which no longer exists.

As shared libraries are managed using ManagedStatic we can do this by also using
ManagedStatic for PluginAttrInstances as ManagedStatics are deleted in reverse
order of construction and we know that PluginAttrInstances will only be
accessed, and thus constructed, after shared libraries have been loaded.

2 years agoRevert "Promote nameless lambda used by dl_iterate_phdr to named function to clean...
Mikhail Maltsev [Wed, 4 Mar 2020 14:54:24 +0000 (14:54 +0000)]
Revert "Promote nameless lambda used by dl_iterate_phdr to named function to clean up control flow inside findUnwindSections. Also, expose the data structure"

This reverts commit d93371238e7f5d5f9c506a88cf4f05f8dea9d008.

The commit broke the build in several configurations (including
Windows and bare-metal). For details see comments in

2 years ago[MLIR] Add a comment to `requiredOperandCount` arg in LoopOps.cpp.
Alexander Belyaev [Tue, 3 Mar 2020 23:45:45 +0000 (00:45 +0100)]
[MLIR] Add a comment to `requiredOperandCount` arg in LoopOps.cpp.

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

2 years ago[lldb][NFC] Move local variables near to their usage
Tatyana Krasnukha [Wed, 12 Feb 2020 10:50:34 +0000 (13:50 +0300)]
[lldb][NFC] Move local variables near to their usage

2 years ago[lldb] Make BreakpointResolver hold weak_ptr instead of raw pointer to breakpoint
Tatyana Krasnukha [Tue, 3 Mar 2020 10:29:12 +0000 (13:29 +0300)]
[lldb] Make BreakpointResolver hold weak_ptr instead of raw pointer to breakpoint

This prevents calling Breakpoint::shared_from_this of an object that is not owned by any shared_ptr.

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

2 years ago[ARM] Change all tests from "thumbv8.1-m.main" to "thumbv8.1m.main". NFC
David Green [Wed, 4 Mar 2020 12:56:42 +0000 (12:56 +0000)]
[ARM] Change all tests from "thumbv8.1-m.main" to "thumbv8.1m.main". NFC

2 years ago[lld] Avoid creating files outside of work directory.
Stephan Herhut [Wed, 4 Mar 2020 13:39:58 +0000 (14:39 +0100)]
[lld] Avoid creating files outside of work directory.

A test is passing `-o -` to lld in the hope of writing the output to
standard out but that is not the case. Instead it creates a file named
`-.lto.o`. This fixes it by creating a temporary file in the work

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

2 years agoLost regression test from commit 5a63813dc7f.
Evgeniy Brevnov [Wed, 4 Mar 2020 12:49:53 +0000 (19:49 +0700)]
Lost regression test from commit 5a63813dc7f.

2 years ago[lldb] Reduce duplication in CommandObjectDisassemble
Pavel Labath [Tue, 3 Mar 2020 16:03:55 +0000 (17:03 +0100)]
[lldb] Reduce duplication in CommandObjectDisassemble

This command had nearly identical code for the "then" and "else"
branches of the "if (m_options.num_instructions != 0)" condition.

This patch factors out the common parts of the two blocks to reduce

2 years ago[clang-format] parse C# object initialisers
Jonathan Coe [Wed, 4 Mar 2020 12:13:33 +0000 (12:13 +0000)]
[clang-format] parse C# object initialisers

Treat C# object initializers as braced lists.

Allow lambdas inside C# braced lists.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

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

2 years agoAdd rsqrt op to Standard dialect and lower it to LLVM dialect.
Adrian Kuegel [Fri, 28 Feb 2020 14:57:38 +0000 (15:57 +0100)]
Add rsqrt op to Standard dialect and lower it to LLVM dialect.

This adds an rsqrt op to the standard dialect, and lowers
it as 1 / sqrt to the LLVM dialect.

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

2 years agoUse new DWARFDataExtractor::getInitialLength in DWARFDebugFrame
Pavel Labath [Tue, 3 Mar 2020 17:27:39 +0000 (18:27 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFDebugFrame

2 years agoUse new DWARFDataExtractor::getInitialLength in DWARFDebugPubTable
Pavel Labath [Tue, 3 Mar 2020 17:51:12 +0000 (18:51 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFDebugPubTable

2 years agoUse new DWARFDataExtractor::getInitialLength in DWARFUnit
Pavel Labath [Tue, 3 Mar 2020 17:52:56 +0000 (18:52 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFUnit

2 years agoUse new DWARFDataExtractor::getInitialLength in DWARFVerifier
Pavel Labath [Tue, 3 Mar 2020 17:57:18 +0000 (18:57 +0100)]
Use new DWARFDataExtractor::getInitialLength in DWARFVerifier

2 years agoUse DWARFDataExtractor::getInitialLength in debug_aranges
Pavel Labath [Mon, 2 Mar 2020 11:48:59 +0000 (12:48 +0100)]
Use DWARFDataExtractor::getInitialLength in debug_aranges

getInitialLength is a *DWARF*DataExtractor method so I had to "upgrade"
some DataExtractors to be able to make use of it.

Reviewers: ikudrin, jhenderson, probinson

Subscribers: aprantl, hiraditya, llvm-commits, dblaikie

Tags: #llvm

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

2 years agoUse DWARFDataExtractor::getInitialLength in DWARFDebugAddr
Pavel Labath [Fri, 28 Feb 2020 09:03:00 +0000 (10:03 +0100)]
Use DWARFDataExtractor::getInitialLength in DWARFDebugAddr

Reviewers: ikudrin, jhenderson, probinson

Subscribers: hiraditya, dblaikie, llvm-commits

Tags: #llvm

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

2 years ago[AArch64][SVE] Add SVE2 intrinsic for xar
Kerry McLaughlin [Wed, 4 Mar 2020 11:30:20 +0000 (11:30 +0000)]
[AArch64][SVE] Add SVE2 intrinsic for xar

Summary: Implements the @llvm.aarch64.sve.xar intrinsic

Reviewers: andwar, c-rhodes, dancgr, efriedma, rengolin

Reviewed By: andwar

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

Tags: #llvm

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

2 years ago[clangd] Fix buildbots
Kadir Cetinkaya [Wed, 4 Mar 2020 11:41:18 +0000 (12:41 +0100)]
[clangd] Fix buildbots

2 years ago[DependenceAnalysis] Dependecies for loads marked with "ivnariant.load" should not...
Evgeniy Brevnov [Wed, 4 Mar 2020 08:36:51 +0000 (15:36 +0700)]
[DependenceAnalysis] Dependecies for loads marked with "ivnariant.load" should not be shared with general accesses(PR42151).

This is second attempt to fix the problem with incorrect dependencies reported in presence of invariant load. Initial fix (https://reviews.llvm.org/D64405) was reverted due to a regression reported in https://reviews.llvm.org/D70516.

The original fix changed caching behavior for invariant loads. Namely such loads are not put into the second level cache (NonLocalDepInfo). The problem with that fix is the first level cache  (CachedNonLocalPointerInfo) still works as if invariant loads were in the second level cache. The solution is in addition to not putting dependence results into the second level cache avoid putting info about invariant loads into the first level cache as well.

Reviewers: jdoerfert, reames, hfinkel, efriedma

Reviewed By: jdoerfert

Subscribers: DaniilSuchkov, hiraditya, bmahjour, llvm-commits

Tags: #llvm

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

2 years agoFix some getAs/castAs null dereference static analyzer warnings.
Simon Pilgrim [Wed, 4 Mar 2020 11:25:34 +0000 (11:25 +0000)]
Fix some getAs/castAs null dereference static analyzer warnings.

Use castAs if we know the cast should succeed (or we're dereferencing without check), the castAs will assert as well so we can remove local non-null asserts.

2 years ago[AMDGPU] performCvtF32UByteNCombine - revisit node after src operand simplification.
Simon Pilgrim [Wed, 4 Mar 2020 10:53:27 +0000 (10:53 +0000)]
[AMDGPU] performCvtF32UByteNCombine - revisit node after src operand simplification.

If SimplifyDemandedBits succeeds in simplifying the byte src, add the CVT_F32_UBYTE node back to the worklist as we might be able to simplify further.

Yet another step towards removing SelectionDAG::GetDemandedBits.

2 years ago[Matrix] Add IR MatrixBuilder.
Florian Hahn [Wed, 4 Mar 2020 11:13:48 +0000 (11:13 +0000)]
[Matrix] Add IR MatrixBuilder.

This builder provides a convenient way for targets to lower various matrix
operations to LLVM IR, making use of matrix intrinsics where available.

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

Reviewed By: anemet

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

2 years ago[clangd] Fix windows buildbots
Kadir Cetinkaya [Wed, 4 Mar 2020 11:07:13 +0000 (12:07 +0100)]
[clangd] Fix windows buildbots

2 years ago[llvm-ar][test] Add to llvm-ar test coverage
gbreynoo [Wed, 4 Mar 2020 10:56:48 +0000 (10:56 +0000)]
[llvm-ar][test] Add to llvm-ar test coverage

- Added handling of thin archives to symtab.test.
- Added handling of newlines to response.test.
62fa3332c9c1af1e66dfecd40f5b4e78882998b2 exposed behaviour
  regarding the use of -- on the command line. Added
  double-hyphen.test to cover this.

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

2 years ago[AST] Refactor propagation of dependency bits. NFC
Ilya Biryukov [Mon, 2 Mar 2020 15:07:09 +0000 (16:07 +0100)]
[AST] Refactor propagation of dependency bits. NFC

This changes introduces an enum to represent dependencies as a bitmask
and extract common patterns from code that computes dependency bits into
helper functions.

Reviewers: rsmith, martong, shafik, ilya-biryukov, hokein

Subscribers: hokein, sammccall, Mordante, riccibruno, merge_guards_bot, rnkovacs, cfe-commits

Tags: #clang

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

2 years agoAttempt to fix buildbot after 497c110e
evgeny [Wed, 4 Mar 2020 10:05:02 +0000 (13:05 +0300)]
Attempt to fix buildbot after 497c110e

2 years ago[clangd] Make use of syntax tokens in ReplayPreamble
Kadir Cetinkaya [Wed, 19 Feb 2020 16:36:41 +0000 (17:36 +0100)]
[clangd] Make use of syntax tokens in ReplayPreamble

Summary: Replace usage of RawLexer with syntax tokens inside ReplayPreamble.

Reviewers: sammccall

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

Tags: #clang

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

2 years ago[clangd] Fix early selection for non-vardecl declarators
Kadir Cetinkaya [Tue, 25 Feb 2020 08:33:52 +0000 (09:33 +0100)]
[clangd] Fix early selection for non-vardecl declarators

Selection tree was performing an early claim only for VarDecls, but
there are other cases where we can have declarators, e.g. FieldDecls. This patch
extends the early claim logic to all types of declarators.

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

Reviewers: sammccall

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

Tags: #clang

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

2 years ago[lld][ELF][COFF] Fix archived bitcode files naming
evgeny [Wed, 4 Mar 2020 09:46:31 +0000 (12:46 +0300)]
[lld][ELF][COFF] Fix archived bitcode files naming

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

2 years ago[Object/ELF] - Fix the offset type used in ELFFile<ELFT>::getEntry().
Georgii Rymar [Wed, 4 Mar 2020 09:33:10 +0000 (12:33 +0300)]
[Object/ELF] - Fix the offset type used in ELFFile<ELFT>::getEntry().

We use size_t for a file offset what is wrong, because size_t is 32-bit
value on 32-bit platforms.

I was reported that after my 0b511c23021
"[llvm-readobj] - Report warnings instead of errors for broken relocations."

The following error is observed on 32-bit Arch Linux:

[100%] Running all regression tests
FAIL: LLVM :: tools/llvm-readobj/ELF/relocation-errors.test (52954 of 54768)
******************** TEST 'LLVM :: tools/llvm-readobj/ELF/relocation-errors.test' FAILED ***

llvm-project/llvm/test/tools/llvm-readobj/ELF/relocation-errors.test:9:14:error: LLVM-NEXT: expected string not found in input
# LLVM-NEXT: warning: '[[FILE]]': unable to print relocation 1 in section 3: unable to access section [index 6] data at 0x17e7e7e8b0: offset goes past the end of file
<stdin>:9:1: note: scanning from here
/llvm-project/build/bin/llvm-readobj: warning: 'llvm-project/build/test/tools/llvm-readobj/ELF/Output/relocation-errors.test.tmp64': unable to print relocation 1 in section 3: unable to access section [index 6] data at 0xe7e7e8b0: offset goes past the end of file

This patch should fix the issue.

2 years ago[ARM,MVE] Add the `vshlcq` intrinsics.
Simon Tatham [Tue, 3 Mar 2020 17:37:14 +0000 (17:37 +0000)]
[ARM,MVE] Add the `vshlcq` intrinsics.

The VSHLC instruction performs a left shift of a whole vector register
by an immediate shift count up to 32, shifting in new bits at the low
end from a GPR and delivering the shifted-out bits from the high end
back into the same GPR.

Since the instruction produces two outputs (the shifted vector
register and the output GPR of shifted-out bits), it has to be
instruction-selected in C++ rather than Tablegen.

Reviewers: MarkMurrayARM, dmgreen, miyuki, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

2 years ago[ARM,MVE] Add the `vsbciq` intrinsics.
Simon Tatham [Tue, 3 Mar 2020 17:37:05 +0000 (17:37 +0000)]
[ARM,MVE] Add the `vsbciq` intrinsics.

These are exactly parallel to the existing `vadciq` intrinsics, which
we implemented last year as part of the original MVE intrinsics
framework setup.

Just like VADC/VADCI, the MVE VSBC/VSBCI instructions deliver two
outputs, both of which the intrinsic exposes: a modified vector
register and a carry flag. So they have to be instruction-selected in
C++ rather than Tablegen. However, in this case, that's trivial: the
same C++ isel routine we already have for VADC works unchanged, and
all we have to do is to pass it a different instruction id.

Reviewers: MarkMurrayARM, dmgreen, miyuki, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

2 years ago[X86] Directly form VBROADCAST_LOAD for BUILD_VECTOR of splat loads in lowerBuildVect...
Craig Topper [Tue, 3 Mar 2020 05:59:44 +0000 (21:59 -0800)]
[X86] Directly form VBROADCAST_LOAD for BUILD_VECTOR of splat loads in lowerBuildVectorAsBroadcast.

2 years ago[analyzer] AnalysisDeclContext: Refactor and documentation
Charusso [Wed, 4 Mar 2020 06:06:35 +0000 (07:06 +0100)]
[analyzer] AnalysisDeclContext: Refactor and documentation

`ScopeContext` wanted to be a thing, but sadly it is dead code.

If you wish to continue the work in D19979, here was a tiny code which
could be reused, but that tiny and that dead, I felt that it is unneded.

Note: Other changes are truly uninteresting.

Reviewed By: NoQ

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

2 years ago[analyzer] AnalyzerOptions: Remove 'fixits-as-remarks'
Charusso [Wed, 4 Mar 2020 05:55:50 +0000 (06:55 +0100)]
[analyzer] AnalyzerOptions: Remove 'fixits-as-remarks'

Summary: The new way of checking fix-its is `%check_analyzer_fixit`.

Reviewed By: NoQ, Szelethus, xazax.hun

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

2 years ago[analyzer] FixItHint: Apply and test hints with the Clang-Tidy's script
Charusso [Wed, 4 Mar 2020 05:24:52 +0000 (06:24 +0100)]
[analyzer] FixItHint: Apply and test hints with the Clang-Tidy's script

This patch introduces a way to apply the fix-its by the Analyzer:
`-analyzer-config apply-fixits=true`.

The fix-its should be testable, therefore I have copied the well-tested
`check_clang_tidy.py` script. The idea is that the Analyzer's workflow
is different so it would be very difficult to use only one script for
both Tidy and the Analyzer, the script would diverge a lot.
Example test: `// RUN: %check-analyzer-fixit %s %t -analyzer-checker=core`

When the copy-paste happened the original authors were:
@alexfh, @zinovy.nis, @JonasToth, @hokein, @gribozavr, @lebedev.ri

Reviewed By: NoQ, alexfh, zinovy.nis

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

2 years ago[HIP] Make sure, unused hip-pinned-shadow global var is kept within device code
hsmahesha [Wed, 4 Mar 2020 05:23:32 +0000 (10:53 +0530)]
[HIP] Make sure, unused hip-pinned-shadow global var is kept within device code

hip-pinned-shadow global var should remain in the final code object irrespective
of whether it is used or not within the code. Add it to used list, so that it
will not get eliminated when it is unused.

Reviewers: yaxunl, tra, hliao

Reviewed By: yaxunl

Subscribers: hliao, cfe-commits

Tags: #clang

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

2 years ago[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison look into branch conditions...
Juneyoung Lee [Sat, 29 Feb 2020 06:45:04 +0000 (15:45 +0900)]
[ValueTracking] Let isGuaranteedNotToBeUndefOrPoison look into branch conditions of dominating blocks' terminators

  br i1 c, BB1, BB2:

In BB1 and BB2, c is never undef or poison because otherwise the branch would have triggered UB.

Checked with Alive2

Reviewers: xbolva00, spatel, lebedev.ri, reames, jdoerfert, nlopes, sanjoy

Reviewed By: reames

Subscribers: jdoerfert, hiraditya, llvm-commits

Tags: #llvm

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

2 years ago[GlobalISel][Localizer] Enable intra-block localization of already-local uses.
Amara Emerson [Tue, 3 Mar 2020 19:36:47 +0000 (11:36 -0800)]
[GlobalISel][Localizer] Enable intra-block localization of already-local uses.

This changes the localizer to attempt intra-block localizer of instructions
that have local uses. This is useful because sometimes the entry block itself
has many uses of constant-like instructions, which would benefit from shortening
live ranges. Previously if an inst had no non-local uses, we wouldn't add it to
the list of instructions to attempt further intra-block localization.

This gives a 0.7% geomean code size improvement on CTMark.

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

2 years ago[MC][test] Improve some llvm-objdump -t tests
Fangrui Song [Wed, 4 Mar 2020 01:14:25 +0000 (17:14 -0800)]
[MC][test] Improve some llvm-objdump -t tests

Delete two redundant tests.

2 years ago[MLIR][NFC] Fix for VS2017 bug.
Frank Laub [Wed, 4 Mar 2020 00:24:03 +0000 (16:24 -0800)]
[MLIR][NFC] Fix for VS2017 bug.

Apparently there is a bug in VS2017 concerning compile-time constant

This change works with any C++11 compiler (including VS2017) and is a little bit
easier to read.

Reviewers: stella.stamenova, nicolasvasilache

Tags: #llvm

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

2 years ago[gn build] Fix llvm-gsymutil after D75291
Fangrui Song [Wed, 4 Mar 2020 00:37:52 +0000 (16:37 -0800)]
[gn build] Fix llvm-gsymutil after D75291

2 years ago[MCDwarf] Change emitListsTableHeaderStart to use a reference and fold Start/End...
Fangrui Song [Tue, 3 Mar 2020 21:58:02 +0000 (13:58 -0800)]
[MCDwarf] Change emitListsTableHeaderStart to use a reference and fold Start/End symbols generation into it

Apply @dblaikie's suggestions in a post-commit review for D75375

Reviewed By: dblaikie

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

2 years ago[ORC] Skip ST_File symbols in MaterializationUnit interfaces / resolution.
Lang Hames [Wed, 4 Mar 2020 00:02:46 +0000 (16:02 -0800)]
[ORC] Skip ST_File symbols in MaterializationUnit interfaces / resolution.

ST_File symbols aren't relevant for linking purposes, but can end up shadowing
real symbols if they're not filtered.

No test case yet: The ideal testcase for this would be an ELF llvm-jitlink test,
but llvm-jitlink support for ELF is still under development. We should add a
testcase for this once support lands in tree.

2 years ago[LoopTerminology][NFC] Fix typo
Stefanos Baziotis [Wed, 4 Mar 2020 00:12:33 +0000 (02:12 +0200)]
[LoopTerminology][NFC] Fix typo

2 years agoPR45087: Fix check for emptiness when determining whether a trivial copy
Richard Smith [Tue, 3 Mar 2020 23:56:08 +0000 (15:56 -0800)]
PR45087: Fix check for emptiness when determining whether a trivial copy
operation needs to read from its operand.

2 years agoFix buildbots by including MC for StringTableBuilder.
Greg Clayton [Tue, 3 Mar 2020 23:51:58 +0000 (15:51 -0800)]
Fix buildbots by including MC for StringTableBuilder.

2 years ago[MLIR] Expose makeCanonicalStridedLayoutExpr in StandardTypes.h.
Alexander Belyaev [Tue, 3 Mar 2020 23:37:50 +0000 (00:37 +0100)]
[MLIR] Expose makeCanonicalStridedLayoutExpr in StandardTypes.h.

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

2 years agoPR45083: Mark statement expressions as being dependent if they appear in
Richard Smith [Tue, 3 Mar 2020 23:19:13 +0000 (15:19 -0800)]
PR45083: Mark statement expressions as being dependent if they appear in
dependent contexts.

We previously assumed they were neither value- nor
instantiation-dependent under any circumstances, which would lead to
crashes and other misbehavior.

2 years agoPartially inline basic_string copy constructor in UNSTABLE
Martijn Vels [Tue, 3 Mar 2020 22:47:23 +0000 (17:47 -0500)]
Partially inline basic_string copy constructor in UNSTABLE
his change splits the copy constructor up inlining short initialization, and explicitly outlining long initialization into __init_copy_ctor_external() which is the externally instantiated slow path.

For unstable ABI, this has the following changes:

remove basic_string(const basic_string&)
remove basic_string(const basic_string&, const Allocator&)
add __init_copy_ctor_external(const value_type*, size_type)
Quick local benchmark for Copy:

Benchmark                    Time             CPU   Iterations
BM_StringCopy_Empty       3.50 ns         3.51 ns    199326720
BM_StringCopy_Small       3.50 ns         3.51 ns    199510016
BM_StringCopy_Large       15.7 ns         15.7 ns     45230080
BM_StringCopy_Huge        1503 ns         1503 ns       464896

Benchmark                    Time             CPU   Iterations
BM_StringCopy_Empty       1.99 ns         2.00 ns    356471808
BM_StringCopy_Small       3.29 ns         3.30 ns    203425792
BM_StringCopy_Large       13.3 ns         13.3 ns     52948992
BM_StringCopy_Huge        1472 ns         1472 ns       475136

Author: Martijn Vels <martijn.vels@gmail.com>

Reviewers: EricWF, mclow.list

Tags: #llvm

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

2 years ago[JITLink] Add a -slab-address option to llvm-jitlink.
Lang Hames [Tue, 3 Mar 2020 22:18:12 +0000 (14:18 -0800)]
[JITLink] Add a -slab-address option to llvm-jitlink.

This option can be used to for JITLink to link as-if the target memory slab were
allocated at a specific start address. This can be used to both verify that
cross-address space linking is working correctly, and to ensure that certain
address-sensitive optimizations (e.g. GOT and stub elimination) either do or do
not fire, depending on the requirements of the test case.

This argument is only valid for testing in conjunction with -noexec -slab-alloc,
and will produce an error if used without those arguments.

2 years ago[clang-format] Do not format C# array subscript operators as attributes
Jonathan Coe [Tue, 3 Mar 2020 22:21:33 +0000 (22:21 +0000)]
[clang-format] Do not format C# array subscript operators as attributes

Fix misidentification of C# array subscript operators.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

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

2 years ago[clang-format] Do not merge target-name and : for C# attributes
Jonathan Coe [Tue, 3 Mar 2020 22:17:25 +0000 (22:17 +0000)]
[clang-format] Do not merge target-name and : for C# attributes

Re-use token type `TT_AttributeColon` for C# attribute target colons.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: MyDeveloperDay, cfe-commits

Tags: #clang-format, #clang

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

2 years agoLICM: Reorder condition checks
Matt Arsenault [Tue, 3 Mar 2020 21:59:41 +0000 (16:59 -0500)]
LICM: Reorder condition checks

Check the fast math flag before the more expensive loop check.

2 years agoAMDGPU: Fix computation for getOccupancyWithLocalMemSize
Matt Arsenault [Mon, 2 Mar 2020 14:43:06 +0000 (09:43 -0500)]
AMDGPU: Fix computation for getOccupancyWithLocalMemSize

The computation here didn't really make sense to me, and reported
wildy different results depending on the flat work group size

I think this should really report a range derived from the possible
work group size bounds, and only allow an occupancy that is a multiple
of the group size.

2 years ago[clang][Modules] Add -fsystem-module flag
Michael Spencer [Sat, 29 Feb 2020 01:31:52 +0000 (17:31 -0800)]
[clang][Modules] Add -fsystem-module flag

The -fsystem-module flag is used when explicitly building a module. It
forces the module to be treated as a system module. This is used when
converting an implicit build to an explicit build to match the
systemness the implicit build would have had for a given module.

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

2 years ago[Coroutines] Use dbg.declare for frame variables
Brian Gesiak [Wed, 26 Feb 2020 23:08:00 +0000 (18:08 -0500)]
[Coroutines] Use dbg.declare for frame variables

is an example of a small C++ program that uses C++20 coroutines that
is difficult to debug, due to the loss of debug info for variables that
"spill" across coroutine suspension boundaries. This patch addresses
that issue by inserting 'llvm.dbg.declare' intrinsics that point the
debugger to the variables' location at an offset to the coroutine frame.

With this patch, I confirmed that running the 'frame variable' commands in
https://gist.github.com/modocache/ed7c62f6e570766c0f39b35dad675c2f at
the specified breakpoints results in the correct values being printed
for coroutine frame variables 'i' and 'j' when using an lldb built from
trunk, as well as with gdb 8.3 (lldb 9.0.1, however, could not print the
values). The added test case also verifies this improved behavior.

The existing coro-debug.ll test case is also modified to reflect the
locations at which Clang actually places calls to 'dbg.declare', and
additional checks are added to ensure this patch works as intended in that
example as well.

Reviewers: vsk, jmorse, GorNishanov, lewissbaker, wenlei

Subscribers: EricWF, aprantl, hiraditya, llvm-commits

Tags: #llvm

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

2 years agoRename "llvm-gsym" to "llvm-gsymutil" and fix dependencies.
Greg Clayton [Thu, 27 Feb 2020 20:32:55 +0000 (12:32 -0800)]
Rename "llvm-gsym" to "llvm-gsymutil" and fix dependencies.

Summary: This patch renames the "llvm-gsym" tool directory to "llvm-gsymutil". Dependencies are also reduced to the bare minimum for llvm-gsymutil.

Reviewers: aprantl, thakis

Subscribers: mgorny, llvm-commits

Tags: #llvm

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

2 years ago[DebugInfo] Fix for adding "returns cxx udt" option to functions in CodeView.
Amy Huang [Tue, 4 Feb 2020 21:20:13 +0000 (13:20 -0800)]
[DebugInfo] Fix for adding "returns cxx udt" option to functions in CodeView.

This change checks for the return type in the frontend and adds a flag
to the DISubroutineType to indicate that the option should be added in

Previously function types sometimes appeared twice in the PDB: once with
"returns cxx udt" and once without.
See https://bugs.llvm.org/show_bug.cgi?id=44785.

Reviewers: rnk, asmith

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

2 years ago[JITLink] Fix a pointer-to-integer cast in jitlink::InProcessMemoryManager.
Lang Hames [Tue, 3 Mar 2020 21:51:05 +0000 (13:51 -0800)]
[JITLink] Fix a pointer-to-integer cast in jitlink::InProcessMemoryManager.

reinterpret_cast'ing the block base address directly to a uint64_t leaves the
high bits in an implementation-defined state, but JITLink expects them to be
zero. Switching to pointerToJITTargetAddress for the cast should fix this.

This should fix the jitlink test failures that we have seen on some of the
32-bit testers.

2 years agoDoxygenify CompilerType.h (NFC)
Adrian Prantl [Tue, 3 Mar 2020 21:42:45 +0000 (13:42 -0800)]
Doxygenify CompilerType.h (NFC)

2 years ago[AArch64] add tests for nnan/ninf/undef FP simplifications; NFC
Sanjay Patel [Tue, 3 Mar 2020 21:28:57 +0000 (16:28 -0500)]
[AArch64] add tests for nnan/ninf/undef FP simplifications; NFC

2 years agotest: Adjust no-dbg-value-after-terminator.mir to use `not --crash`
Vedant Kumar [Tue, 3 Mar 2020 21:30:27 +0000 (13:30 -0800)]
test: Adjust no-dbg-value-after-terminator.mir to use `not --crash`

2 years ago[mlir][Tutorial] Make parsing an empty file print a better error.
Matthias Kramm [Tue, 3 Mar 2020 21:20:48 +0000 (13:20 -0800)]
[mlir][Tutorial] Make parsing an empty file print a better error.

Previously, we would, for an empty file, print the somewhat confusing
  Assertion `tok == curTok [...]' failed.
With this change, we now print
  Parse error [...]: expected 'def' [...]

This only affects the parser from chapters 1-6, since the more advanced
chapter 7 parser is actually able to generate an empty module from an
empty file.  Nonetheless, this commit also adds the additional check to
the chapter 7 parser, for consistency.

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

2 years ago[mlir] Generate CmpFPredicate as an EnumAttr in tablegen
River Riddle [Tue, 3 Mar 2020 21:02:02 +0000 (13:02 -0800)]
[mlir] Generate CmpFPredicate as an EnumAttr in tablegen

Summary: This allows for attaching the attribute to CmpF as a proper argument, and thus enables the removal of a bunch of c++ code.

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

2 years agoPort ubsan nullability.c test to Windows
Reid Kleckner [Tue, 3 Mar 2020 21:17:47 +0000 (13:17 -0800)]
Port ubsan nullability.c test to Windows

Two issues:
- Need to add env prefix to be compatible with the lit internal shell
- Need to quote the colon in Windows paths with '"%t.supp"'

2 years ago[lldb] Delete some commented out code in ClangASTSource.cpp
Alex Langford [Tue, 3 Mar 2020 21:14:18 +0000 (13:14 -0800)]
[lldb] Delete some commented out code in ClangASTSource.cpp

2 years ago[PowerPC] adjust test to avoid getting zapped completely; NFC
Sanjay Patel [Tue, 3 Mar 2020 21:14:10 +0000 (16:14 -0500)]
[PowerPC] adjust test to avoid getting zapped completely; NFC

div-by-0 -> Inf
The math ops are 'fast' so 'ninf' applies and the whole thing is undef.

2 years ago[MachineVerifier] Remove placement rule exception for debug entry values
Vedant Kumar [Tue, 3 Mar 2020 19:27:09 +0000 (11:27 -0800)]
[MachineVerifier] Remove placement rule exception for debug entry values

There should not be an exception allowing debug entry values to be
placed after a terminator.

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

2 years ago[LiveDebugValues] Do not insert DBG_VALUEs after a MBB terminator
Vedant Kumar [Tue, 3 Mar 2020 19:08:48 +0000 (11:08 -0800)]
[LiveDebugValues] Do not insert DBG_VALUEs after a MBB terminator

This fixes a miscompile that happened because a DBG_VALUE interfered
with the MachineOutliner's liveness analysis.

Inserting a DBG_VALUE after a terminator breaks predicates on MBB such
as isReturnBlock(). And the resulting DBG_VALUE cannot be "live".

I plan to introduce a MachineVerifier check for this situation in a
follow up.


Testing: check-llvm, LNT build with a stage2 compiler & entry values

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

2 years ago[clangd] Handle go-to-definition in macro invocations where the target appears in...
Nathan Ridge [Mon, 23 Dec 2019 18:38:04 +0000 (13:38 -0500)]
[clangd] Handle go-to-definition in macro invocations where the target appears in the expansion multiple times

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

Reviewers: sammccall

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

Tags: #clang

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

2 years ago[clang-offload-wrapper] Lower priority of __tgt_register_lib in favor of __tgt_regist...
George Rokos [Tue, 3 Mar 2020 20:26:40 +0000 (12:26 -0800)]
[clang-offload-wrapper] Lower priority of __tgt_register_lib in favor of __tgt_register_requires

Lower priority of __tgt_register_lib in order to make sure that __tgt_register_requires is called before loading a libomptarget plugin.
We want to know beforehand which requirements the user has asked for so that upon loading the plugin libomptarget can report how many devices there are that can satisfy these requirements.

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

2 years ago[mlir] Format AffineOps.td. NFC
Alex Zinenko [Tue, 3 Mar 2020 20:26:00 +0000 (21:26 +0100)]
[mlir] Format AffineOps.td. NFC

Drop trailing spaces and reflow text to fit 80 columns.

2 years ago[X86] Match vpmullq latency to uops.info. Correct port usage for 512-bit memory form
Craig Topper [Tue, 3 Mar 2020 20:16:01 +0000 (12:16 -0800)]
[X86] Match vpmullq latency to uops.info. Correct port usage for 512-bit memory form

uops.info says these should be 15 cycle instructions. Uops.info also shows the 512-bit form uses port 0 and 5 for both register and memory. We had memory using 0 and 1.

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

2 years ago[mlir][ods] Add query for derived attribute
Jacques Pienaar [Tue, 3 Mar 2020 20:01:54 +0000 (12:01 -0800)]
[mlir][ods] Add query for derived attribute

For ODS generated operations enable querying whether there is a derived
attribute with a given name.

Rollforward of commit 5aa57c2 without using llvm::is_contained.

2 years agoRevert "Revert "[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows""
Stefan Stipanovic [Tue, 3 Mar 2020 19:43:16 +0000 (20:43 +0100)]
Revert "Revert "[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows""

This reverts commit 78a734e2792061921ab7fb8f9059d1fb673e158f.

2 years agoRevert "[OpenMP] Adding InaccessibleMemOnly and InaccessibleMemOrArgMemOnly for runti...
Stefan Stipanovic [Tue, 3 Mar 2020 19:42:05 +0000 (20:42 +0100)]
Revert "[OpenMP] Adding InaccessibleMemOnly and InaccessibleMemOrArgMemOnly for runtime calls."

This reverts commit 9989b859efccafacb0cc1f8d393d8b9fc49f4037.

2 years agoRevert "[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows"
Stefan Stipanovic [Tue, 3 Mar 2020 19:41:18 +0000 (20:41 +0100)]
Revert "[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows"

This reverts commit 3270ea9042eaa2bf9ab12d4a6ceefaae73c5152a.

2 years ago[OpenMP] Adding InaccessibleMemOnly and InaccessibleMemOrArgMemOnly for runtime calls.
Stefan Stipanovic [Tue, 3 Mar 2020 19:32:22 +0000 (20:32 +0100)]
[OpenMP] Adding InaccessibleMemOnly and InaccessibleMemOrArgMemOnly for runtime calls.

Summary: Attempt to add more attributes for runtime calls.

Reviewers: jdoerfertA, ggeorgakoudis, lebedev.ri, dreachem


2 years ago[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows
Jonas Devlieghere [Tue, 3 Mar 2020 19:24:11 +0000 (11:24 -0800)]
[lldb/Docs] Mark both Python 3.6 and 3.8 as supported on Windows

Haibo told me he didn't have any issues with Python 3.8 and I was able
to confirm that. Even though we don't have bot running with 3.8, I think
it safe to mark it as supported in the docs.

2 years ago[OPENMP50]Support 'update' clause for 'depobj' directive.
Alexey Bataev [Tue, 3 Mar 2020 18:22:35 +0000 (13:22 -0500)]
[OPENMP50]Support 'update' clause for 'depobj' directive.

Added basic support (parsing/sema/serialization) for 'update' clause in
'depobj' directive.

2 years ago[lldb][NFC] Remove some commented out code in TypeSystemClang
Raphael Isemann [Tue, 3 Mar 2020 18:30:20 +0000 (10:30 -0800)]
[lldb][NFC] Remove some commented out code in TypeSystemClang

Summary: I don't see why we want to keep that code around.

Reviewers: #lldb, JDevlieghere

Reviewed By: #lldb, JDevlieghere

Subscribers: davide

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

2 years ago[X86] Always emit an integer vbroadcast_load from lowerBuildVectorAsBroadcast regardl...
Craig Topper [Tue, 3 Mar 2020 18:17:18 +0000 (10:17 -0800)]
[X86] Always emit an integer vbroadcast_load from lowerBuildVectorAsBroadcast regardless of AVX vs AVX2

If we go with D75412, we no longer depend on the scalar type directly. So we don't need to avoid using i64. We already have AVX1 fallback patterns with i32 and i64 scalar types so we don't need to avoid using integer types on AVX1.

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

2 years ago[X86] Directly emit VBROADCAST_LOAD from constant pool in lowerBuildVectorAsBroadcast
Craig Topper [Tue, 3 Mar 2020 18:14:47 +0000 (10:14 -0800)]
[X86] Directly emit VBROADCAST_LOAD from constant pool in lowerBuildVectorAsBroadcast

Also add a DAG combine to combine different sized broadcasts from
constant pool to avoid a regression.

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

2 years ago[gn build] Port c84532a70aa
LLVM GN Syncbot [Tue, 3 Mar 2020 18:25:30 +0000 (18:25 +0000)]
[gn build] Port c84532a70aa

2 years ago[LoopNest]: Analysis to discover properties of a loop nest.
Whitney Tsang [Tue, 3 Mar 2020 17:38:19 +0000 (17:38 +0000)]
[LoopNest]: Analysis to discover properties of a loop nest.

Summary: This patch adds an analysis pass to collect loop nests and
summarize properties of the nest (e.g the nest depth, whether the nest
is perfect, what's the innermost loop, etc...).

The motivation for this patch was discussed at the latest meeting of the
LLVM loop group (https://ibm.box.com/v/llvm-loop-nest-analysis) where we
the unimodular loop transformation framework ( “A Loop Transformation
Theory and an Algorithm to Maximize Parallelism”, Michael E. Wolf and
Monica S. Lam, IEEE TPDS, October 1991). The unimodular framework
provides a convenient way to unify legality checking and code generation
for several loop nest transformations (e.g. loop reversal, loop
interchange, loop skewing) and their compositions. Given that the
unimodular framework is applicable to perfect loop nests this is one
property of interest we expose in this analysis. Several other utility
functions are also provided. In the future other properties of interest
can be added in a centralized place.
Authored By: etiotto
Reviewer: Meinersbur, bmahjour, kbarton, Whitney, dmgreen, fhahn,
reames, hfinkel, jdoerfert, ppc-slack
Reviewed By: Meinersbur
Subscribers: bryanpkc, ppc-slack, mgorny, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D68789

2 years ago[libomptarget][nfc][amdgcn] Simplify assert_fail implementation
Jon Chesterfield [Tue, 3 Mar 2020 18:24:51 +0000 (18:24 +0000)]
[libomptarget][nfc][amdgcn] Simplify assert_fail implementation

2 years ago[Bitcode] Fix -Wswitch after c5ec8890c95bf9f56beff285efbcc7b797ffb15a
Fangrui Song [Tue, 3 Mar 2020 18:01:51 +0000 (10:01 -0800)]
[Bitcode] Fix -Wswitch after c5ec8890c95bf9f56beff285efbcc7b797ffb15a

2 years ago[X86] Connect accidentally dead code in a avx512 fmadd intrinsic test case.
Craig Topper [Tue, 3 Mar 2020 17:54:14 +0000 (09:54 -0800)]
[X86] Connect accidentally dead code in a avx512 fmadd intrinsic test case.

2 years agoRestore `REQUIRES: default_triple` to a test
Justin Bogner [Tue, 3 Mar 2020 17:43:36 +0000 (09:43 -0800)]
Restore `REQUIRES: default_triple` to a test

This was accidentally removed as part of 7683a084de6 "Remove lit
feature object-emission"

7683a084de6 Remove lit feature object-emission

2 years ago[clang-format] Allow nested [] in C# attributes
Jonathan Coe [Tue, 3 Mar 2020 17:15:56 +0000 (17:15 +0000)]
[clang-format] Allow nested [] in C# attributes

Summary: Keep track of unpaired [] when identifying C# attribute lines

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits

Tags: #clang-format, #clang

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

2 years ago[ORC] Make sure we add initializers to the SymbolFlags map for objects.
Lang Hames [Tue, 3 Mar 2020 17:32:49 +0000 (09:32 -0800)]
[ORC] Make sure we add initializers to the SymbolFlags map for objects.

2 years ago[ORC] Remove an out-of-date FIXME
Lang Hames [Tue, 3 Mar 2020 16:27:56 +0000 (08:27 -0800)]
[ORC] Remove an out-of-date FIXME

2 years ago[mlir] support reductions in loop to std conversion
Alex Zinenko [Tue, 3 Mar 2020 12:21:51 +0000 (13:21 +0100)]
[mlir] support reductions in loop to std conversion

Introduce support for converting loop.for operations with loop-carried values
to a CFG in the standard dialect. This is achieved by passing loop-carried
values as block arguments to the loop condition block. This block dominates
both the loop body and the block immediately following the loop, so the
arguments of this block are remain visible there.

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

2 years agoPromote nameless lambda used by dl_iterate_phdr to named function to clean up control...
Sterling Augustine [Mon, 2 Mar 2020 22:09:33 +0000 (14:09 -0800)]
Promote nameless lambda used by dl_iterate_phdr to named function to clean up control flow inside findUnwindSections. Also, expose the data structure
to allow use by a future replacment function.

Summary: [Refactor] Promote nameless lambda to fully named function, allowing easy replacement in following patch.

Subscribers: krytarowski, libcxx-commits

Tags: #libc

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

2 years ago[MCDwarf] Generate DWARF v5 .debug_rnglists for assembly files
Fangrui Song [Fri, 28 Feb 2020 05:57:40 +0000 (21:57 -0800)]
[MCDwarf] Generate DWARF v5 .debug_rnglists for assembly files

// clang -c -gdwarf-5 a.s -o a.o
.section .init; ret
.text; ret

.debug_info contains DW_AT_ranges and llvm-dwarfdump will report
a verification error because .debug_rnglists does not exist (not

This patch generates .debug_rnglists for assembly files.
emitListsTableHeaderStart() in DwarfDebug.cpp can be shared with
MCDwarf.cpp. Because CodeGen depends on MC, I move the function to

Reviewed By: probinson

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

2 years ago[NFC] Try fix ubsan buildbot after 876d13378931bee3dcefafff8729c40d5457ff31
Tyker [Tue, 3 Mar 2020 16:42:57 +0000 (17:42 +0100)]
[NFC] Try fix ubsan buildbot after 876d13378931bee3dcefafff8729c40d5457ff31

2 years agoAdd module for llvm/Bitstream
Joerg Sonnenberger [Tue, 3 Mar 2020 15:13:52 +0000 (16:13 +0100)]
Add module for llvm/Bitstream