platform/upstream/llvm.git
4 years ago[clang-tidy] Add check to find calls to NSInvocation methods under ARC that don't...
Michael Wyman [Sun, 5 Apr 2020 07:28:34 +0000 (00:28 -0700)]
[clang-tidy] Add check to find calls to NSInvocation methods under ARC that don't have proper object argument lifetimes.

Summary: This check is similar to an ARC Migration check that warned about this incorrect usage under ARC, but most projects are no longer undergoing migration from pre-ARC code. The documentation for NSInvocation is not explicit about these requirements and incorrect usage has been found in many of our projects.

Reviewers: stephanemoore, benhamilton, dmaclach, alexfh, aaron.ballman, hokein, njames93

Reviewed By: stephanemoore, benhamilton, aaron.ballman

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

Tags: #clang, #clang-tools-extra

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Fri, 10 Apr 2020 14:53:02 +0000 (07:53 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: sdesmalen, efriedma, jonpa

Reviewed By: sdesmalen

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoProfileSummaryInfo.h - remove unnecessary includes. NFC
Simon Pilgrim [Fri, 10 Apr 2020 15:23:55 +0000 (16:23 +0100)]
ProfileSummaryInfo.h - remove unnecessary includes. NFC

Remove a number of includes that aren't necessary (nor are we relying on the remaining includes to provide the declarations), we just needed a llvm::Instruction forward declaration.

This exposed a couple of source files that were implicitly replying on the includes for their use of llvm::SmallSet or std::set, requiring local includes to be added there instead.

4 years ago[AMDGPU] Disable sub-dword scralar loads IR widening
Stanislav Mekhanoshin [Thu, 9 Apr 2020 22:22:33 +0000 (15:22 -0700)]
[AMDGPU] Disable sub-dword scralar loads IR widening

These will be widened in the DAG. In the meanwhile early
widening prevents otherwise possible vectorization of
such loads.

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

4 years ago[llvm][NFC] Style fixes in Inliner.cpp
Mircea Trofin [Thu, 9 Apr 2020 22:26:46 +0000 (15:26 -0700)]
[llvm][NFC] Style fixes in Inliner.cpp

Summary:
Function names: camel case, lower case first letter.
Variable names: start with upper letter. For iterators that were 'i',
renamed with a descriptive name, as 'I' is 'Instruction&'.

Lambda captures simplification.

Opportunistic boolean return simplification.

Reviewers: davidxl, dblaikie

Subscribers: eraman, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[NFC][UpdateTestChecks] Fix typos in comments
Jinsong Ji [Fri, 10 Apr 2020 15:03:16 +0000 (15:03 +0000)]
[NFC][UpdateTestChecks] Fix typos in comments

4 years ago[MSan] Add instrumentation for SystemZ
Ilya Leoshkevich [Thu, 9 Apr 2020 20:06:01 +0000 (22:06 +0200)]
[MSan] Add instrumentation for SystemZ

Summary:
This patch establishes memory layout and adds instrumentation. It does
not add runtime support and does not enable MSan, which will be done
separately.

Memory layout is based on PPC64, with the exception that XorMask
is not used - low and high memory addresses are chosen in a way that
applying AndMask to low and high memory produces non-overlapping
results.

VarArgHelper is based on AMD64. It might be tempting to share some
code between the two implementations, but we need to keep in mind that
all the ABI similarities are coincidental, and therefore any such
sharing might backfire.

copyRegSaveArea() indiscriminately copies the entire register save area
shadow, however, fragments thereof not filled by the corresponding
visitCallSite() invocation contain irrelevant data. Whether or not this
can lead to practical problems is unclear, hence a simple TODO comment.
Note that the behavior of the related copyOverflowArea() is correct: it
copies only the vararg-related fragment of the overflow area shadow.

VarArgHelper test is based on the AArch64 one.

s390x ABI requires that arguments are zero-extended to 64 bits. This is
particularly important for __msan_maybe_warning_*() and
__msan_maybe_store_origin_*() shadow and origin arguments, since non
zeroed upper parts thereof confuse these functions. Therefore, add ZExt
attribute to the corresponding parameters.

Add ZExt attribute checks to msan-basic.ll. Since with
-msan-instrumentation-with-call-threshold=0 instrumentation looks quite
different, introduce the new CHECK-CALLS check prefix.

Reviewers: eugenis, vitalybuka, uweigand, jonpa

Reviewed By: eugenis

Subscribers: kristof.beyls, hiraditya, danielkiss, llvm-commits, stefansf, Andreas-Krebbel

Tags: #llvm

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

4 years agoPromoteMemToReg.h - remove unused llvm::AliasSetTracker forward declaration. NFC.
Simon Pilgrim [Fri, 10 Apr 2020 14:46:42 +0000 (15:46 +0100)]
PromoteMemToReg.h - remove unused llvm::AliasSetTracker forward declaration. NFC.

4 years agoSimplifyLibCalls.h - remove unused llvm::BasicBlock forward declaration. NFC.
Simon Pilgrim [Fri, 10 Apr 2020 14:37:53 +0000 (15:37 +0100)]
SimplifyLibCalls.h - remove unused llvm::BasicBlock forward declaration. NFC.

4 years agoVNCoercion.h - remove unused llvm::Function forward declaration. NFC.
Simon Pilgrim [Fri, 10 Apr 2020 14:30:14 +0000 (15:30 +0100)]
VNCoercion.h - remove unused llvm::Function forward declaration. NFC.

4 years agoSizeOpts.h - remove ProfileSummaryInfo forward declaration. NFC.
Simon Pilgrim [Fri, 10 Apr 2020 14:27:18 +0000 (15:27 +0100)]
SizeOpts.h - remove ProfileSummaryInfo forward declaration. NFC.

We're include the entire ProfileSummaryInfo.h as inline functions use it in the header.

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Fri, 10 Apr 2020 14:35:06 +0000 (07:35 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: sdesmalen, rriddle, efriedma

Reviewed By: sdesmalen

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[RISCV] Consume error from parsing attributes section
Jessica Clarke [Fri, 10 Apr 2020 00:30:48 +0000 (01:30 +0100)]
[RISCV] Consume error from parsing attributes section

Summary:
We don't consume the error from getBuildAttributes, so an assertions
build crashes with "Program aborted due to an unhandled Error:".
Explicitly consume it like the ARM version in that case.

Reviewers: asb, jhenderson, MaskRay, HsiangKai

Reviewed By: MaskRay

Subscribers: kristof.beyls, hiraditya, simoncook, kito-cheng, shiva0217, rogfer01, rkruppe, psnobl, benna, Jim, lenary, s.egerton, sameer.abuasal, luismarques, evandro, danielkiss, llvm-commits

Tags: #llvm

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

4 years ago[CostModel][X86] Improve InsertElement costs for sub-128bit vectors
Simon Pilgrim [Fri, 10 Apr 2020 10:22:13 +0000 (11:22 +0100)]
[CostModel][X86] Improve InsertElement costs for sub-128bit vectors

If we're inserting into v2i8/v4i8/v8i8/v2i16/v4i16 style sub-128bit vectors ensure we don't use the SK_PermuteTwoSrc cost of the legalized value type - this is a followup to rG12c629ec6c59 which added equivalent sub-128bit shuffle costs

4 years ago[MLIR][NFC] fix doc comment for isKnownIsolatedFromAbove
Uday Bondhugula [Fri, 10 Apr 2020 13:43:49 +0000 (19:13 +0530)]
[MLIR][NFC] fix doc comment for isKnownIsolatedFromAbove

Fix doc comment for Operation::isKnownIsolatedFromAbove().

4 years ago[InstSimplify] add tests for folding bool select to logic; NFC
Sanjay Patel [Fri, 10 Apr 2020 12:21:52 +0000 (08:21 -0400)]
[InstSimplify] add tests for folding bool select to logic; NFC

4 years ago[mlir][spirv] Update doc regarding availability and type conversion
Lei Zhang [Thu, 9 Apr 2020 14:12:46 +0000 (10:12 -0400)]
[mlir][spirv] Update doc regarding availability and type conversion

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

4 years ago[lldb] Refactor TestFixIts so that most of it can run on aarch64-linux
Raphael Isemann [Fri, 10 Apr 2020 10:45:30 +0000 (12:45 +0200)]
[lldb] Refactor TestFixIts so that most of it can run on aarch64-linux

The final function call to `test_X` is failing on aarch64-linux with SIGILL.
Function calls to previous expressions seem to just not work on aarch64-linux
but I don't see another way to test the multiple-run Fix-Its.

This patch refactors the test that the skipIf for aarch64 Linux only covers
the part of the test that was added D77214.

4 years ago[Driver] Improve help message for -ffixed-xX flags
Simon Cook [Fri, 10 Apr 2020 10:30:24 +0000 (11:30 +0100)]
[Driver] Improve help message for -ffixed-xX flags

This improves the message by adding the missing 'x' prefix in register
names, such that the messages say for example 'Reserve the x10 register',
instead of 'Reserve the 10 register'.

4 years ago[gn build] add scan-build target
Nico Weber [Fri, 10 Apr 2020 10:16:59 +0000 (06:16 -0400)]
[gn build] add scan-build target

4 years ago[compiler-rt] Try to disable failing test on Darwin.
Florian Hahn [Fri, 10 Apr 2020 10:08:49 +0000 (11:08 +0100)]
[compiler-rt] Try to disable failing test on Darwin.

Looks like this test fails on Darwin x86_64 as well:

http://green.lab.llvm.org/green/job/clang-stage1-RA/8593/

Command Output (stderr):
--
fatal error: error in backend: Global variable '__sancov_gen_' has an invalid section specifier '__DATA,__sancov_bool_flag': mach-o section specifier requires a section whose length is between 1 and 16 characters.

4 years ago[SCCP] Use SimplifyBinOp for non-integer constant/expressions & overdef.
Florian Hahn [Fri, 10 Apr 2020 09:57:43 +0000 (10:57 +0100)]
[SCCP] Use SimplifyBinOp for non-integer constant/expressions & overdef.

For non-integer constants/expressions and overdefined, I think we can
just use SimplifyBinOp to do common folds. By just passing a context
with the DL, SimplifyBinOp should not try to get additional information
from looking at definitions.

For overdefined values, it should be enough to just pass the original
operand.

Note: The comment before the `if (isconstant(V1State)...` was wrong
originally: isConstant() also matches integer ranges with a single
element. It is correct now.

Reviewers: efriedma, davide, mssimpso, aartbik

Reviewed By: efriedma

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

4 years ago[libunwind] add hexagon support
Brian Cain [Thu, 9 Apr 2020 05:14:02 +0000 (00:14 -0500)]
[libunwind] add hexagon support

4 years agotsan: don't check libc dependency on NetBSD
Dmitry Vyukov [Fri, 10 Apr 2020 07:35:06 +0000 (09:35 +0200)]
tsan: don't check libc dependency on NetBSD

This new check fails on NetBSD as well.
It is meant to prevent regressions, so disable it on NetBSD.

Reported-by: Keith Randall (khr)
4 years ago[docs][llvm-dwarfdump] Add the release notes about --show-section-sizes
Djordje Todorovic [Fri, 10 Apr 2020 08:33:33 +0000 (10:33 +0200)]
[docs][llvm-dwarfdump] Add the release notes about --show-section-sizes

Note that the llvm-dwarfdump has the new option.

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

4 years agoRevert "[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff."
Mehdi Amini [Fri, 10 Apr 2020 07:44:06 +0000 (07:44 +0000)]
Revert "[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff."

This reverts commit 0445c64998d14b81f0d3a3182011fc5eae47fa71.

MLIR Build is broken by this change at the moment.

4 years ago[MLIR] Support for taskwait and taskyield operations, and translating the same to...
Kiran Kumar T P [Fri, 10 Apr 2020 07:41:04 +0000 (07:41 +0000)]
[MLIR] Support for taskwait and taskyield operations, and translating the same to LLVM IR

This patch adds support for taskwait and taskyield operations in OpenMP dialect and translation of the these constructs to LLVM IR. The OpenMP IRBuilder is used for this translation.
The patch includes code changes and a testcase modifications.

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

4 years ago[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff.
Alina Sbirlea [Fri, 10 Apr 2020 07:34:04 +0000 (07:34 +0000)]
[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff.

This replaces the ChildrenGetter inside the DominatorTree with
GraphTraits over a GraphDiff object, an object which encapsulated the
view of the previous CFG.
This also simplifies the extentions in clang which use DominatorTree, as
GraphDiff also filters nullptrs.

Re-land a90374988e4eb8c50d91e11f4e61cdbd5debb235 after moving CFGDiff.h
to Support.

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

4 years ago[MLIR][NFC] applyPatternsGreedily -> applyPatternsAndFoldGreedily
Uday Bondhugula [Sun, 5 Apr 2020 01:24:16 +0000 (06:54 +0530)]
[MLIR][NFC] applyPatternsGreedily -> applyPatternsAndFoldGreedily

Rename mlir::applyPatternsGreedily -> applyPatternsAndFoldGreedily. The
new name is a more accurate description of the method - it performs
both, application of the specified patterns and folding of all ops in
the op's region irrespective of whether any patterns have been supplied.

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

4 years agoFix `-Wextra` warning. NFC.
Michael Liao [Fri, 10 Apr 2020 07:21:14 +0000 (03:21 -0400)]
Fix `-Wextra` warning. NFC.

4 years agoRemove extra whitespace. NFC.
Michael Liao [Wed, 8 Apr 2020 19:02:52 +0000 (15:02 -0400)]
Remove extra whitespace. NFC.

4 years agoMove CFGDiff.h from IR to Support
David Blaikie [Fri, 10 Apr 2020 07:14:10 +0000 (00:14 -0700)]
Move CFGDiff.h from IR to Support

Now that it's generalized to use graph traits, it's no longer dependent
on IR.

4 years ago[lldb/Reproducers] Fix typo introduced when disabling register failing tests
Med Ismail Bennani [Fri, 10 Apr 2020 06:36:43 +0000 (08:36 +0200)]
[lldb/Reproducers] Fix typo introduced when disabling register failing tests

4 years ago[MLIR] Introduce an op trait that defines a new scope for auto allocation
Uday Bondhugula [Thu, 9 Apr 2020 09:46:24 +0000 (15:16 +0530)]
[MLIR] Introduce an op trait that defines a new scope for auto allocation

Introduce a new operation property / trait (AutomaticAllocationScope)
for operations with regions that define a new scope for automatic allocations;
such allocations (typically realized on stack) are automatically freed when
control leaves such ops' regions. std.alloca's are freed at the closest
surrounding op that has this trait. All FunctionLike operations should normally
have this trait.

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

4 years agoRevert "[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff."
Mehdi Amini [Fri, 10 Apr 2020 06:25:06 +0000 (06:25 +0000)]
Revert "[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff."

This reverts commit a90374988e4eb8c50d91e11f4e61cdbd5debb235 and 5da1671bf82306b7fa8dca48f495896c2b29e909.

A new dependency is introduced here from Support to IR which seems like
a layering violation. It also breaks the MLIR build at the moment.

4 years ago[PowerPC][UpdateTestChecks] Remove the extra # when scrubbing loop comments
Kang Zhang [Fri, 10 Apr 2020 06:09:01 +0000 (06:09 +0000)]
[PowerPC][UpdateTestChecks] Remove the extra # when scrubbing loop comments

Summary:
The patch D63957 is to avoid empty string when scrubbing loop comments,
it will replace loop comments to a `#`, that's correct.
But if the line has something else not only loop comments, we will get
a extra `#`.
The patch is to remove the extra `#`.

Reviewed By: jsji

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

4 years ago[PowerPC] Update alignment for ReuseLoadInfo in LowerFP_TO_INTForReuse
Kai Luo [Fri, 10 Apr 2020 05:34:05 +0000 (05:34 +0000)]
[PowerPC] Update alignment for ReuseLoadInfo in LowerFP_TO_INTForReuse

In LowerFP_TO_INTForReuse, when emitting `stfiwx`, alignment of 4 is
set for the `MachineMemOperand`, but RLI(ReuseLoadInfo)'s alignment is
not updated for following loads.

It's related to failed alignment check reported in
https://bugs.llvm.org/show_bug.cgi?id=45297

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

4 years agoRename OptimalLayout to OptimizedStructLayout at Chris's request.
John McCall [Fri, 10 Apr 2020 04:13:49 +0000 (00:13 -0400)]
Rename OptimalLayout to OptimizedStructLayout at Chris's request.

4 years agollvm-dwarfdump: Return non-zero on error
David Blaikie [Fri, 10 Apr 2020 03:53:58 +0000 (20:53 -0700)]
llvm-dwarfdump: Return non-zero on error

Makes it easier to test "this doesn't produce an error" (& indeed makes
that the implied default so we don't accidentally write tests that have
silent/sneaky errors as well as the positive behavior we're testing for)

Though the support for applying relocations is patchy enough that a
bunch of tests treat lack of relocation application as more of a warning
than an error - so rather than me trying to figure out how to add
support for a bunch of relocation types, let's degrade that to a warning
to match the usage (& indeed, it's sort of more of a tool warning anyway
- it's not that the DWARF is wrong, just that the tool can't fully cope
with it - and it's not like the tool won't dump the DWARF, it just won't
follow/render certain relocations - I guess in the most general case it
might try to render an unrelocated value & instead render something
bogus... but mostly seems to be about interesting relocations used in
eh_frame (& honestly it might be nice if we were lazier about doing this
relocation resolution anyway - if you're not dumping eh_frame, should we
really be erroring about the relocations in it?))

4 years ago[libc] Change minimum cmake requirement.
Paula Toth [Fri, 10 Apr 2020 03:41:22 +0000 (20:41 -0700)]
[libc] Change minimum cmake requirement.

Summary: As per this thread: http://lists.llvm.org/pipermail/llvm-dev/2020-April/140744.html, changed the minimum requirement to reflect the decision made to upgrade to cmake 3.13.4.

Reviewers: sivachandra

Reviewed By: sivachandra

Subscribers: mgorny, tschuett, libc-commits

Tags: #libc-project

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

4 years ago[gn build] Port 4275eb13315
LLVM GN Syncbot [Fri, 10 Apr 2020 03:20:36 +0000 (03:20 +0000)]
[gn build] Port 4275eb13315

4 years ago[PowerPC] Bail out of redundant LI elimination on an implicit kill
Nemanja Ivanovic [Fri, 10 Apr 2020 02:34:30 +0000 (21:34 -0500)]
[PowerPC] Bail out of redundant LI elimination on an implicit kill

The transformation currently does not differentiate between explicit
and implicit kills. However, it is not valid to later simply clear
an implicit kill flag since the kill could be due to a call or return.

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

4 years agoRe-land [Codegen/Statepoint] Allow usage of registers for non gc deopt values.
Serguei Katkov [Thu, 9 Apr 2020 11:40:53 +0000 (18:40 +0700)]
Re-land [Codegen/Statepoint] Allow usage of registers for non gc deopt values.

The change introduces the usage of physical registers for non-gc deopt values.
This require runtime support to know how to take a value from register.
By default usage is off and can be switched on by option.

The change also introduces additional fix-up patch which forces the spilling
of caller saved registers (clobbered after the call) and re-writes statepoint
to use spill slots instead of caller saved registers.

Reviewers: reames, danstrushin
Reviewed By: dantrushin
Subscribers: mgorny, hiraditya, mgrang, llvm-commits
Differential Revision: https://reviews.llvm.org/D77797

4 years ago[OpenMP] Allow <math.h> to go first in C++-mode in target regions
Johannes Doerfert [Fri, 10 Apr 2020 03:10:16 +0000 (22:10 -0500)]
[OpenMP] Allow <math.h> to go first in C++-mode in target regions

If we are in C++ mode and include <math.h> (not <cmath>) first, we still
need to make sure <cmath> is read first. The problem otherwise is that
we haven't seen the declarations of the math.h functions when the system
math.h includes our cmath overlay. However, our cmath overlay, or better
the underlying overlay, e.g. CUDA, uses the math.h functions. Since we
haven't declared them yet we get errors. CUDA avoids this by eagerly
declaring all math functions (in the __device__ space) but we cannot do
this. Instead we break the dependence by forcing cmath to go first.

Reviewed By: JonChesterfield

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

4 years ago[OpenMP] Put old APIs back and added new _async series for backward compatibility
Shilei Tian [Fri, 10 Apr 2020 02:40:30 +0000 (22:40 -0400)]
[OpenMP] Put old APIs back and added new _async series for backward compatibility

Summary: According to comments on bi-weekly meeting, this patch put back old APIs and added new `_async` series

Reviewers: jdoerfert

Reviewed By: jdoerfert

Subscribers: yaxunl, guansong, openmp-commits

Tags: #openmp

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

4 years ago[LoopLoadElim] Fix crash by always checking simplify form
Max Kazantsev [Fri, 10 Apr 2020 01:48:29 +0000 (08:48 +0700)]
[LoopLoadElim] Fix crash by always checking simplify form

Loop simplify form should always be checked because logic of
propagateStoredValueToLoadUsers relies on it (in particular, it
requires preheader).

Reviewed By: Fedor Sergeev, Florian Hahn
Differential Revision: https://reviews.llvm.org/D77775

4 years ago[WebAssembly] Use dummy debug info in Emscripten SjLj
Heejin Ahn [Wed, 8 Apr 2020 23:02:25 +0000 (16:02 -0700)]
[WebAssembly] Use dummy debug info in Emscripten SjLj

Summary:
D74269 added debug info to newly created instructions, including calls
to `malloc` and `free`, by taking debug info from existing instructions
around, whose debug info may or may not be empty.

But there are cases debug info is required by the IR verifier: when both
the caller and the callee functions have DISubprograms, meaning we
already have declarations to `malloc` or `free` with a DISubprogram
attached, newly created calls to `malloc` and `free` should have
non-empty debug info. This patch creates a non-empty dummy debug info in
this case to those calls to make the IR verifier pass.

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

Reviewers: dschuff

Subscribers: aprantl, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm

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

4 years agoUpdate empty() call with namespace to clear ambiguity.
Alina Sbirlea [Fri, 10 Apr 2020 01:37:13 +0000 (18:37 -0700)]
Update empty() call with namespace to clear ambiguity.

4 years agoMake BitVector::operator== return false for different-sized vectors.
Brad Moody [Fri, 10 Apr 2020 01:15:49 +0000 (20:15 -0500)]
Make BitVector::operator== return false for different-sized vectors.

This behaviour is in line with SmallBitVector and other vector-like
types.

Reviewed By: dblaikie

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

4 years ago[TLI] Per-function fveclib for math library used for vectorization
Wenlei He [Tue, 7 Apr 2020 06:54:14 +0000 (23:54 -0700)]
[TLI] Per-function fveclib for math library used for vectorization

Summary:
Encode `-fveclib` setting as per-function attribute so it can threaded through to LTO backends. Accordingly per-function TLI now reads
the attributes and select available vector function list based on that. Now we also populate function list for all supported vector
libraries for the shared per-module `TargetLibraryInfoImpl`, so each function can select its available vector list independently but without
duplicating the vector function lists. Inlining between incompatbile vectlib attributed is also prohibited now.

Subscribers: hiraditya, dexonsmith, cfe-commits

Tags: #clang

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

4 years ago[PowerPC][Future] Fix for 6c4b40def77622a5cf62a219ef4af63dc876e144
Stefan Pintilie [Fri, 10 Apr 2020 01:04:13 +0000 (01:04 +0000)]
[PowerPC][Future] Fix for 6c4b40def77622a5cf62a219ef4af63dc876e144

This is a fix for the previous patch 6c4b40def77622a5cf62a219ef4af63dc876e144.
In some cases it may be possible to have the compiler produce st_other=1 without
the compiler using mcpu=future which should not be the case. This patch adds a
guard to make sure that if we are using st_other=1 then we are also compiling
for future CPU.

4 years ago[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff.
Alina Sbirlea [Thu, 27 Feb 2020 00:53:12 +0000 (16:53 -0800)]
[DomTree] Replace ChildrenGetter with GraphTraits over GraphDiff.

Summary:
This replaces the ChildrenGetter inside the DominatorTree with
GraphTraits over a GraphDiff object, an object which encapsulated the
view of the previous CFG.
This also simplifies the extentions in clang which use DominatorTree, as
GraphDiff also filters nullptrs.

Reviewers: kuhar, dblaikie, NutshellySima

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang

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

4 years ago[ORC] Require JITDylib to be specified when adding IR and objects in the C API.
Lang Hames [Fri, 10 Apr 2020 00:54:59 +0000 (17:54 -0700)]
[ORC] Require JITDylib to be specified when adding IR and objects in the C API.

4 years ago[gn build] Port 1229245df7c
LLVM GN Syncbot [Fri, 10 Apr 2020 00:51:20 +0000 (00:51 +0000)]
[gn build] Port 1229245df7c

4 years ago[clangd] Set up machinery for gtests of ClangdLSPServer.
Sam McCall [Thu, 9 Apr 2020 00:02:29 +0000 (02:02 +0200)]
[clangd] Set up machinery for gtests of ClangdLSPServer.

Summary:
This is going to be needed to test e.g. diagnostics regeneration on
didSave where files changed on disk. Coordinating such changes is too
hard in lit tests.

Reviewers: kadircet

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

Tags: #clang

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

4 years ago[X86] Improve min/max reduction costs.
Craig Topper [Thu, 9 Apr 2020 23:58:28 +0000 (16:58 -0700)]
[X86] Improve min/max reduction costs.

This is similar to what I recently did for getArithmeticReductionCost.

I'm trying to account for the narrowing from 512->256->128 as we go.

I've also added a new helper method getMinMaxCost that tries to
handle the cases where we have native min/max instructions and
fall back to cmp+select when we don't.

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

4 years ago[PowerPC] Don't assert on SELECT_CC with i1 type
Nemanja Ivanovic [Thu, 9 Apr 2020 18:53:02 +0000 (13:53 -0500)]
[PowerPC] Don't assert on SELECT_CC with i1 type

When we try to select a SELECT_CC on Power9, we check if it can be matched to a
SETB instruction. In that function, we assert that the output type is i32/i64.
This is unnecessary as it is perfectly reasonable to have an i1 SELECT_CC.
Change that from an assert to an early exit condition.
Fixes: https://bugs.llvm.org/show_bug.cgi?id=45448

4 years ago[AArch64][GlobalISel] CallLowering: Don't generate new copies each time we need
Amara Emerson [Thu, 9 Apr 2020 21:35:40 +0000 (14:35 -0700)]
[AArch64][GlobalISel] CallLowering: Don't generate new copies each time we need
to store to a stack location for outgoing args.

During call arg lowering we shouldn't be modifying SP so cache the SP copy
vreg for subsequent uses.

Gives a 0.2% geomean code size improvement on CTMark.

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

4 years ago[llvm][Codegen] Make `getVectorTypeBreakdownMVT` work with scalable types.
Francesco Petrogalli [Thu, 9 Apr 2020 23:10:52 +0000 (00:10 +0100)]
[llvm][Codegen] Make `getVectorTypeBreakdownMVT` work with scalable types.

Reviewers: efriedma, andwar, sdesmalen

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 23:15:49 +0000 (16:15 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: mcrosier, efriedma, sdesmalen

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[ORC] Add C API support for adding object files to an LLJIT instance.
Lang Hames [Thu, 9 Apr 2020 23:17:04 +0000 (16:17 -0700)]
[ORC] Add C API support for adding object files to an LLJIT instance.

4 years ago[ORC] Expand the OrcV2 C API bindings.
Lang Hames [Thu, 9 Apr 2020 19:15:13 +0000 (12:15 -0700)]
[ORC] Expand the OrcV2 C API bindings.

Adds basic support for LLJITBuilder and DynamicLibrarySearchGenerator. This
allows C API clients to configure LLJIT to expose process symbols to JIT'd
code. An example of this is added in
llvm/examples/OrcV2CBindingsReflectProcessSymbols.

4 years ago[gn build] Port a79b2fc44bf
LLVM GN Syncbot [Thu, 9 Apr 2020 22:50:22 +0000 (22:50 +0000)]
[gn build] Port a79b2fc44bf

4 years ago[libunwind] Clean up __arm64__
Fangrui Song [Thu, 9 Apr 2020 21:09:43 +0000 (14:09 -0700)]
[libunwind] Clean up __arm64__

`__aarch64__` is defined for the target (since the beginning of arm64 support: clang 3.5).
`__arm64__` is only defined for the Darwin OS on AArch64.

`defined(__aarch64__) || defined(__arm64__)` can be simplied as `defined(__aarch64__)`

Darwin AArch64 uses %% as the assembly separator (see AArch64MCAsmInfo.cpp).
Make the intention explicit in src/assembly.h

With this change, the libunwind code base has no reference of `__arm64__`/`__arm64`.

Reviewed By: #libunwind, ldionne, mstorsjo

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

4 years agoAdd pass to strip debug info from MIR
Daniel Sanders [Wed, 8 Apr 2020 17:27:17 +0000 (10:27 -0700)]
Add pass to strip debug info from MIR

Summary:
Removes:
* All LLVM-IR level debug info using StripDebugInfo()
* All debugify metadata
* 'Debug Info Version' module flag
* All (valid*) DEBUG_VALUE MachineInstrs
* All DebugLocs from MachineInstrs

This is a more complete solution than the previous MIRPrinter
option that just causes it to neglect to print debug-locations.

* The qualifier 'valid' is used here because AArch64 emits
  an invalid one and tests depend on it

Reviewers: vsk, aprantl, bogner

Subscribers: mgorny, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[lldb] Reformat 'Fix breakage introduced by llvm::LoadInst api change' (NFC)
Med Ismail Bennani [Thu, 9 Apr 2020 22:36:20 +0000 (00:36 +0200)]
[lldb] Reformat 'Fix breakage introduced by llvm::LoadInst api change' (NFC)

4 years agotweak formatting of input to match the output as suggested by River, NFC.
Chris Lattner [Thu, 9 Apr 2020 22:25:53 +0000 (15:25 -0700)]
tweak formatting of input to match the output as suggested by River, NFC.

4 years ago[Tools] Fixed bug with llvm/utils/chunk-print-before-all.py script.
Kirill Naumov [Fri, 20 Mar 2020 15:26:30 +0000 (15:26 +0000)]
[Tools] Fixed bug with llvm/utils/chunk-print-before-all.py script.

Prior to the fix, the script was not annotating the first line of
chunk-0.ll. Because of that, a compilation with ./bin/opt was failing.

The extra if-statement ensures that the corner case is covered

Reviewed-By: apilipenko
Differential Revision: https://reviews.llvm.org/D76507

4 years agoAllow single-bit integer types to have signs. A signed one bit integer is either...
Chris Lattner [Thu, 9 Apr 2020 21:58:28 +0000 (14:58 -0700)]
Allow single-bit integer types to have signs.  A signed one bit integer is either 0 or -1.

Reviewers: rriddle!

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

Tags: #llvm

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

4 years ago[lldb] Fix breakeage introduced by llvm::LoadInst api change
Med Ismail Bennani [Thu, 9 Apr 2020 22:10:22 +0000 (00:10 +0200)]
[lldb] Fix breakeage introduced by llvm::LoadInst api change

4 years ago[llvm][NFC] Replace CallSite with CallBase in Inliner
Mircea Trofin [Thu, 9 Apr 2020 18:28:41 +0000 (11:28 -0700)]
[llvm][NFC] Replace CallSite with CallBase in Inliner

Summary:
*Almost* all uses are replaced. Left FIXMEs for the two sites that
require refactoring outside of Inliner, to scope this patch.

Subscribers: eraman, hiraditya, llvm-commits

Tags: #llvm

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 21:19:08 +0000 (14:19 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: efriedma, sdesmalen, rriddle

Reviewed By: sdesmalen

Subscribers: hiraditya, dantrushin, llvm-commits

Tags: #llvm

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

4 years ago[libc++] Fix recursive instantiation in std::array.
Eric Fiselier [Thu, 9 Apr 2020 21:39:40 +0000 (17:39 -0400)]
[libc++] Fix recursive instantiation in std::array.

The use of the `&& ...` fold expression in std::array's deduction guides
recursively builds a set of binary operator expressions of depth N where
`N` is the number of elements in the initializer.

This is problematic because arrays may be large, and instantiation
depth is limited.

This patch addresses the issue by flattening the SFINAE using
the existing `__all` type trait.

4 years agoscudo: Replace ALIGNED macro with standard alignas specifier.
Peter Collingbourne [Thu, 9 Apr 2020 20:37:27 +0000 (13:37 -0700)]
scudo: Replace ALIGNED macro with standard alignas specifier.

alignas was introduced in C++11 and is already being used throughout LLVM.

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

4 years ago[MS] Mark vbase dtors used when marking dtor used
Reid Kleckner [Tue, 11 Feb 2020 00:16:17 +0000 (16:16 -0800)]
[MS] Mark vbase dtors used when marking dtor used

In the MS C++ ABI, the complete destructor variant for a class with
virtual bases is emitted whereever it is needed, instead of directly
alongside the base destructor variant. The complete destructor calls the
base destructor of the current class and the base destructors of each
virtual base. In order for this to work reliably, translation units that
use the destructor of a class also need to mark destructors of virtual
bases of that class used.

Fixes PR38521

Reviewed By: rsmith

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

4 years ago[NFC] Make Type::isVectorTy call isa<VectorType>
Christopher Tetreault [Thu, 9 Apr 2020 20:52:54 +0000 (13:52 -0700)]
[NFC] Make Type::isVectorTy call isa<VectorType>

Reviewers: sdesmalen, efriedma, dexonsmith

Reviewed By: efriedma

Subscribers: tschuett, llvm-commits

Tags: #llvm

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

4 years ago[SanitizerCoverage] Add compiler-rt test for -fsanitize-coverage=inline-bool-flag
Pratyai Mazumder [Thu, 9 Apr 2020 09:41:58 +0000 (02:41 -0700)]
[SanitizerCoverage] Add compiler-rt test for -fsanitize-coverage=inline-bool-flag

Reviewers: kcc, vitalybuka

Reviewed By: vitalybuka

Subscribers: dberris, #sanitizers, llvm-commits

Tags: #sanitizers

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

4 years agoFix syntax error
Christopher Tetreault [Thu, 9 Apr 2020 20:46:05 +0000 (13:46 -0700)]
Fix syntax error

4 years ago[opaque pointer types] Remove deprecated Instruction/IRBuilder APIs.
Eli Friedman [Sat, 4 Apr 2020 01:02:15 +0000 (18:02 -0700)]
[opaque pointer types] Remove deprecated Instruction/IRBuilder APIs.

Removes deprecated overloads of LoadInst constructor, CallInst::create,
InvokeInst::Create, IRBuilder::CreateCall, IRBuilder::CreateInvoke.
(Leaving around deprecated IRBuilder::CreateLoad for now.)

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

4 years ago[mlir][Vector] Update lowering of vector ops to llvm intrinsics to use row-major.
Nicolas Vasilache [Thu, 9 Apr 2020 20:36:45 +0000 (16:36 -0400)]
[mlir][Vector] Update lowering of vector ops to llvm intrinsics to use row-major.

Summary:
LLVM matrix intrinsics recently introduced an option to support row-major mode.
This matches the MLIR vector model, this revision switches to row-major.

A corner case related to degenerate sizes was also fixed upstream.
This revision removes the guard against this corner case.

A bug was uncovered on the output vector construction which this revision also fixes.

Lastly, this has been tested on a small size and benchmarked independently: no visible performance regression is observed.

In the future, when matrix intrinsics support per op attribute, we can more aggressively translate to that and avoid inserting MLIR-level transposes.

This has been tested independently to work on small matrices.

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 20:13:41 +0000 (13:13 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: rriddle, sdesmalen, efriedma

Reviewed By: sdesmalen

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoFix an unused-variable warning in Release mode.
James Y Knight [Thu, 9 Apr 2020 20:34:14 +0000 (16:34 -0400)]
Fix an unused-variable warning in Release mode.

4 years ago[opaque pointers] Fix uses of deprecated CreateCall/CreateInvoke.
Eli Friedman [Sat, 4 Apr 2020 04:27:00 +0000 (21:27 -0700)]
[opaque pointers] Fix uses of deprecated CreateCall/CreateInvoke.

4 years ago[mlir][Vector] Add lowering of 1-D vector transfer_read/write to masked load/store
Nicolas Vasilache [Thu, 9 Apr 2020 20:16:32 +0000 (16:16 -0400)]
[mlir][Vector] Add lowering of 1-D vector transfer_read/write to masked load/store

Summary:
This revision adds support to lower 1-D vector transfers to LLVM.
A mask of the vector length is created that compares the base offset + linear index to the dim of the vector.
In each position where this does not overflow (i.e. offset + vector index < dim), the mask is set to 1.

A notable fact is that the lowering uses llvm.dialect_cast to allow writing code in the simplest form by targeting the simplest mix of vector and LLVM dialects and
letting other conversions kick in.

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

4 years ago[flang] [NFC] Adjust README.md for upstreaming.
David Truby [Thu, 9 Apr 2020 20:12:54 +0000 (21:12 +0100)]
[flang] [NFC] Adjust README.md for upstreaming.

This changes the references and build instructions for Flang so that
they are correct now that F18 has been rechristened Flang and merged
with LLVM.

Reviewed at: https://github.com/flang-compiler/f18/pull/909

4 years ago[mlir][test] NFC - Rename cblas to mlir_test_cblas
Nicolas Vasilache [Thu, 9 Apr 2020 19:29:06 +0000 (15:29 -0400)]
[mlir][test] NFC - Rename cblas to mlir_test_cblas

The "cblas" lib under mlir/test is meant as a simple integration demonstration.
However it is installed and ends up conflicting with external projects who want to
define the real cblas.
Rename to avoid conflicts.

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 20:01:05 +0000 (13:01 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: arsenm, efriedma, sdesmalen

Reviewed By: arsenm

Subscribers: wdng, arsenm, jvesely, nhaehnle, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[CUDA] Accept -x cu to indicate language is CUDA, transfer CUDA language flag to...
ADRA [Thu, 9 Apr 2020 20:02:38 +0000 (13:02 -0700)]
[CUDA] Accept -x cu to indicate language is CUDA, transfer CUDA language flag to header-file arguments

Summary:
* accept -x cu to indicate language is CUDA
* transfer CUDA language flag to header-file arguments

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

4 years agoFix lifetime call in landingpad blocking Simplifycfg pass
Zequan Wu [Thu, 9 Apr 2020 18:06:19 +0000 (11:06 -0700)]
Fix lifetime call in landingpad blocking Simplifycfg pass

Fix lifetime call in landingpad blocks simplifycfg from removing the
landingpad.

Reviewed By: rnk

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

4 years ago[lld][WebAssembly] Handle 4gb max memories
Thomas Lively [Fri, 3 Apr 2020 23:18:29 +0000 (16:18 -0700)]
[lld][WebAssembly] Handle 4gb max memories

Summary:
A previous change (53211a) had updated the argument parsing to handle
large max memories, but 4294967296 would still wrap to zero after the
options were parsed. This change updates the configuration to use a
64-bit integer to store the max memory to avoid that overflow.

Reviewers: sbc100

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

Tags: #llvm

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

4 years ago[lldb/test] Fix typo to disable reproducer's test phase
Med Ismail Bennani [Thu, 9 Apr 2020 19:54:17 +0000 (21:54 +0200)]
[lldb/test] Fix typo to disable reproducer's test phase

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 19:43:18 +0000 (12:43 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: grosbach, efriedma, sdesmalen

Reviewed By: efriedma

Subscribers: hiraditya, dmgreen, llvm-commits

Tags: #llvm

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

4 years ago[mlir] Add a new RewritePattern::hasBoundedRewriteRecursion hook.
River Riddle [Thu, 9 Apr 2020 19:38:52 +0000 (12:38 -0700)]
[mlir] Add a new RewritePattern::hasBoundedRewriteRecursion hook.

Summary: Some pattern rewriters, like dialect conversion, prohibit the unbounded recursion(or reapplication) of patterns on generated IR. Most patterns are not written with recursive application in mind, so will generally explode the stack if uncaught. This revision adds a hook to RewritePattern, `hasBoundedRewriteRecursion`, to signal that the pattern can safely be applied to the generated IR of a previous application of the same pattern. This allows for establishing a contract between the pattern and rewriter that the pattern knows and can handle the potential recursive application.

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Thu, 9 Apr 2020 19:19:23 +0000 (12:19 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: sunfish, sdesmalen, efriedma

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[llvm-objdump][NFC] MachODump.cpp interface cleanup
Hubert Tong [Thu, 9 Apr 2020 19:32:09 +0000 (15:32 -0400)]
[llvm-objdump][NFC] MachODump.cpp interface cleanup

Continuing from D77388, this patch moves interface declarations
associated with `MachODump.cpp` into the headers corresponding to the
file that defines the variable. At the same time, these externs are
moved into the `llvm::objdump` namespace. The externs defined in
`MachODump.cpp` that are not referenced outside of it are given internal
linkage.

This patch does not rename the external functions defined by
`MachODump.cpp` that are not clearly named as being specific to Mach-O.

Reviewed By: jhenderson, MaskRay

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

4 years ago[PowerPC][Future] Fix for 75828ef615da
Stefan Pintilie [Thu, 9 Apr 2020 19:31:37 +0000 (19:31 +0000)]
[PowerPC][Future] Fix for 75828ef615da

Used unsigned long where uint64_t should have been used by mistake.
Fixed in this patch.

4 years ago[lldb] Disable failing register tests for reproducers
Med Ismail Bennani [Thu, 9 Apr 2020 19:05:17 +0000 (21:05 +0200)]
[lldb] Disable failing register tests for reproducers

4 years ago[CostModel][X86] Add shuffle costs for some common sub-128bit vectors
Simon Pilgrim [Thu, 9 Apr 2020 18:55:51 +0000 (19:55 +0100)]
[CostModel][X86] Add shuffle costs for some common sub-128bit vectors

v2i8/v4i8/v8i8 + v2i16/v4i16 all show up in vectorizer code and by just using the legalized types (v16i8/v8i16) we're highly exaggerating the actual cost of the shuffle.

4 years ago[nfc] [lldb] Unindent code
Jan Kratochvil [Thu, 9 Apr 2020 18:43:00 +0000 (20:43 +0200)]
[nfc] [lldb] Unindent code

It removes some needless deep indentation and some redundant statements.
It prepares the code for a more clean next patch - DWARF index callbacks
D77327.

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

4 years agoPreserve the owning module information from DWARF in the synthesized AST
Adrian Prantl [Wed, 4 Mar 2020 17:30:12 +0000 (09:30 -0800)]
Preserve the owning module information from DWARF in the synthesized AST

Types that came from a Clang module are nested in DW_TAG_module tags
in DWARF. This patch recreates the Clang module hierarchy in LLDB and
1;95;0csets the owning module information accordingly. My primary motivation
is to facilitate looking up per-module APINotes for individual
declarations, but this likely also has other applications.

This reapplies the previously reverted commit, but without support for
ClassTemplateSpecializations, which I'm going to look into separately.

rdar://problem/59634380

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