platform/upstream/llvm.git
4 years ago[lldb/DWARF] Fix dwp search path in the separate-debug-file case
Pavel Labath [Mon, 24 Feb 2020 15:45:37 +0000 (16:45 +0100)]
[lldb/DWARF] Fix dwp search path in the separate-debug-file case

The convention is that the dwp file name is derived from the name of the
file holding the executable code, even if the linked portion of the
debug info is elsewhere (objcopy --only-keep-debug).

4 years ago[libc++] Mark the C++03 version of std::function as deprecated
Louis Dionne [Mon, 17 Feb 2020 15:23:48 +0000 (10:23 -0500)]
[libc++] Mark the C++03 version of std::function as deprecated

Summary: We want to eventually remove it.

Reviewers: EricWF

Subscribers: christof, jkorous, dexonsmith, libcxx-commits

Tags: #libc

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

4 years ago[libc++] Adapt a few things around the implementation of P1135R6
Louis Dionne [Mon, 24 Feb 2020 15:08:41 +0000 (10:08 -0500)]
[libc++] Adapt a few things around the implementation of P1135R6

- Add the new symbols to the ABI list on Darwin
- Add XFAIL markup to the tests that require dylib support on older platforms
- Add availability markup for back-deployment

4 years ago[libc++] Implementation of C++20's P1135R6 for libcxx
Olivier Giroux [Tue, 18 Feb 2020 14:58:34 +0000 (09:58 -0500)]
[libc++] Implementation of C++20's P1135R6 for libcxx

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

4 years ago[OpenMP] Refactor the analysis in checkMapClauseBaseExpression using StmtVisitor...
cchen [Mon, 24 Feb 2020 15:06:17 +0000 (10:06 -0500)]
[OpenMP] Refactor the analysis in checkMapClauseBaseExpression using StmtVisitor class.

Summary: This step is the preparation of allowing lvalue in map/motion clause.

Reviewers: ABataev, jdoerfert

Reviewed By: ABataev

Subscribers: guansong, cfe-commits

Tags: #clang, #openmp

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

4 years ago[AIX][Frontend] C++ ABI customizations for AIX boilerplate
Xiangling Liao [Mon, 24 Feb 2020 14:46:00 +0000 (09:46 -0500)]
[AIX][Frontend] C++ ABI customizations for AIX boilerplate

This PR enables "XL" C++ ABI in frontend AST to IR codegen. And it is driven by
static init work. The current kind in Clang by default is Generic Itanium, which
has different behavior on static init with IBM xlclang compiler on AIX.

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

4 years agoadd release notes for ffp-model and ffp-exception-behavior
Melanie Blower [Mon, 24 Feb 2020 14:42:05 +0000 (06:42 -0800)]
add release notes for ffp-model and ffp-exception-behavior

4 years ago[CostModel][X86] We don't need a scale factor for SLM extract costs
Simon Pilgrim [Mon, 24 Feb 2020 14:22:48 +0000 (14:22 +0000)]
[CostModel][X86] We don't need a scale factor for SLM extract costs

D74976 will handle larger vector types, but since SLM doesn't support AVX+ then we will always be extracting from 128-bit vectors so don't need to scale the cost.

4 years ago[MIR][ARM] MachineOperand comments
Sjoerd Meijer [Mon, 24 Feb 2020 14:19:21 +0000 (14:19 +0000)]
[MIR][ARM] MachineOperand comments

This adds infrastructure to print and parse MIR MachineOperand comments.
The motivation for the ARM backend is to print condition code names instead of
magic constants that are difficult to read (for human beings). For example,
instead of this:

  dead renamable $r2, $cpsr = tEOR killed renamable $r2, renamable $r1, 14, $noreg
  t2Bcc %bb.4, 0, killed $cpsr

we now print this:

  dead renamable $r2, $cpsr = tEOR killed renamable $r2, renamable $r1, 14 /* CC::always */, $noreg
  t2Bcc %bb.4, 0 /* CC:eq */, killed $cpsr

This shows that MachineOperand comments are enclosed between /* and */. In this
example, the EOR instruction is not conditionally executed (i.e. it is "always
executed"), which is encoded by the 14 immediate machine operand. Thus, now
this machine operand has /* CC::always */ as a comment. The 0 on the next
conditional branch instruction represents the equal condition code, thus now
this operand has /* CC:eq */ as a comment.

As it is a comment, the MI lexer/parser completely ignores it. The benefit is
that this keeps the change in the lexer extremely minimal and no target
specific parsing needs to be done. The changes on the MIPrinter side are also
minimal, as there is only one target hooks that is used to create the machine
operand comments.

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

4 years ago[AArch64][SVE] Add the SVE dupq_lane intrinsic
Kerry McLaughlin [Mon, 24 Feb 2020 11:08:52 +0000 (11:08 +0000)]
[AArch64][SVE] Add the SVE dupq_lane intrinsic

Summary:
Implements the @llvm.aarch64.sve.dupq.lane intrinsic.

As specified in the ACLE, the behaviour of:
  svdupq_lane_u64(data, index)

...is identical to:
  svtbl(data, svadd_x(svptrue_b64(),
                      svand_x(svptrue_b64(), svindex_u64(0, 1), 1),
                      index * 2))

If the index is in the range [0,3], the operation is equivalent
to a single DUP (.q) instruction.

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

Reviewed By: sdesmalen

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

Tags: #llvm

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

4 years ago[RDA][ARM][LowOverheadLoops] Iteration count IT blocks
Sam Parker [Mon, 24 Feb 2020 13:50:46 +0000 (13:50 +0000)]
[RDA][ARM][LowOverheadLoops] Iteration count IT blocks

Change the way that we remove the redundant iteration count code in
the presence of IT blocks. collectLocalKilledOperands has been
introduced to scan an instructions operands, collecting the killed
instructions and then visiting them too. This is used to delete the
code in the preheader which calculates the iteration count. We also
track any IT blocks within the preheader and, if we remove all the
instructions from the IT block, we also remove the IT instruction.
isSafeToRemove is used to remove any redundant uses of the iteration
count within the loop body.

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

4 years agoFix TryParsePtrOperatorSeq.
Michele Scandale [Mon, 24 Feb 2020 12:59:26 +0000 (07:59 -0500)]
Fix TryParsePtrOperatorSeq.

The syntax rules for ptr-operator allow attributes after *, &,
&&, therefore we should be able to parse the following:

void fn() {
    void (*[[attr]] x)() = &fn;
    void (&[[attr]] y)() = fn;
    void (&&[[attr]] z)() = fn;
}
However the current logic in TryParsePtrOperatorSeq does not consider
the presence of attributes leading to unexpected parsing errors.

Moreover we should also consider _Atomic a possible qualifier that can
appear after the sequence of attribute specifiers.

4 years ago[ARM,MVE] Remove 64-bit variants of vbrsrq* intrinsics
Mikhail Maltsev [Mon, 24 Feb 2020 12:49:20 +0000 (12:49 +0000)]
[ARM,MVE] Remove 64-bit variants of vbrsrq* intrinsics

Summary:
According to the ACLE the vbrsrq* intrinsics don't accept vectors
with 64-bit elements (and neither does the corresponding VBRSR
instruction).

Reviewers: simon_tatham, dmgreen, MarkMurrayARM, ostannard

Reviewed By: simon_tatham

Subscribers: kristof.beyls, cfe-commits

Tags: #clang

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

4 years ago[ARM] FP16 bitcast test. NFC
David Green [Mon, 24 Feb 2020 11:15:09 +0000 (11:15 +0000)]
[ARM] FP16 bitcast test. NFC

4 years ago[CostModel][X86] Try to check against common prefixes before using target-specific...
Simon Pilgrim [Mon, 24 Feb 2020 11:58:50 +0000 (11:58 +0000)]
[CostModel][X86] Try to check against common prefixes before using target-specific cpu checks

SLM/GLM is still a mess so not all of them have been updated yet.

4 years agoUse temporary directory for tests in D74346
Kirill Bobyrev [Mon, 24 Feb 2020 11:17:55 +0000 (12:17 +0100)]
Use temporary directory for tests in D74346

4 years ago[ORC] Remove spammy debug print
Benjamin Kramer [Mon, 24 Feb 2020 11:10:13 +0000 (12:10 +0100)]
[ORC] Remove spammy debug print

4 years ago[AArch64][SVE] Add intrinsics for SVE2 cryptographic instructions
Kerry McLaughlin [Mon, 24 Feb 2020 10:38:37 +0000 (10:38 +0000)]
[AArch64][SVE] Add intrinsics for SVE2 cryptographic instructions

Summary:
Implements the following SVE2 intrinsics:
 - @llvm.aarch64.sve.aesd
 - @llvm.aarch64.sve.aesimc
 - @llvm.aarch64.sve.aese
 - @llvm.aarch64.sve.aesmc
 - @llvm.aarch64.sve.rax1
 - @llvm.aarch64.sve.sm4e
 - @llvm.aarch64.sve.sm4ekey

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

Reviewed By: sdesmalen

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

Tags: #llvm

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

4 years agoSilence compiler warnings
Benjamin Kramer [Mon, 24 Feb 2020 10:45:59 +0000 (11:45 +0100)]
Silence compiler warnings

mlir/lib/Parser/Parser.cpp:4484:15: warning: 'parseAssignmentList' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
  ParseResult parseAssignmentList(SmallVectorImpl<OperandType> &lhs,
              ^
mlir/include/mlir/IR/OpImplementation.h:662:3: note: overridden virtual function is here
  parseAssignmentList(SmallVectorImpl<OperandType> &lhs,
  ^
mlir/lib/Parser/Parser.cpp:4488:12: warning: unused variable 'type' [-Wunused-variable]
      Type type;
           ^

4 years agoAdd a basic tiling pass for parallel loops
Benjamin Kramer [Fri, 21 Feb 2020 12:24:54 +0000 (13:24 +0100)]
Add a basic tiling pass for parallel loops

This exploits the fact that the iterations of parallel loops are
independent so tiling becomes just an index transformation. This pass
only tiles the innermost loop of a loop nest.

The ultimate goal is to allow vectorization of the tiled loops, but I
don't think we're there yet with the current rewriting, as the tiled
loops don't have a constant trip count.

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

4 years ago[Intrinsic] Add fixed point saturating division intrinsics.
Bevin Hansson [Mon, 16 Dec 2019 14:25:52 +0000 (15:25 +0100)]
[Intrinsic] Add fixed point saturating division intrinsics.

Summary:
This patch adds intrinsics and ISelDAG nodes for signed
and unsigned fixed-point division:

```
llvm.sdiv.fix.sat.*
llvm.udiv.fix.sat.*
```

These intrinsics perform scaled, saturating division
on two integers or vectors of integers. They are
required for the implementation of the Embedded-C
fixed-point arithmetic in Clang.

Reviewers: bjope, leonardchan, craig.topper

Subscribers: hiraditya, jdoerfert, llvm-commits

Tags: #llvm

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

4 years ago[profile] Don't dump counters when forking and don't reset when calling exec** functions
Calixte Denizet [Mon, 10 Feb 2020 17:46:37 +0000 (18:46 +0100)]
[profile] Don't dump counters when forking and don't reset when calling exec** functions

Summary:
There is no need to write out gcdas when forking because we can just reset the counters in the parent process.
Let say a counter is N before the fork, then fork and this counter is set to 0 in the child process.
In the parent process, the counter is incremented by P and in the child process it's incremented by C.
When dump is ran at exit, parent process will dump N+P for the given counter and the child process will dump 0+C, so when the gcdas are merged the resulting counter will be N+P+C.
About exec** functions, since the current process is replaced by an another one there is no need to reset the counters but just write out the gcdas since the counters are definitely lost.
To avoid to have lists in a bad state, we just lock them during the fork and the flush (if called explicitely) and lock them when an element is added.

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: hiraditya, cfe-commits, #sanitizers, llvm-commits, sylvestre.ledru

Tags: #clang, #sanitizers, #llvm

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

4 years agoUse new FailedWithMessage matcher in DWARFDebugLineTest.cpp
Pavel Labath [Thu, 20 Feb 2020 14:24:09 +0000 (15:24 +0100)]
Use new FailedWithMessage matcher in DWARFDebugLineTest.cpp

Summary:
This should produce slightly better error messages in case of failures.
Only slightly, because this code was pretty careful about that to begin
with -- I've seen code which does much worse.

Reviewers: jhenderson, dblaikie

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[MC] Widen the functional unit type from 32 to 64 bits.
Bevin Hansson [Mon, 9 Dec 2019 15:22:57 +0000 (16:22 +0100)]
[MC] Widen the functional unit type from 32 to 64 bits.

Summary:
The type used to represent functional units in MC is
'unsigned', which is 32 bits wide. This is currently
not a problem in any upstream target as no one seems
to have hit the limit on this yet, but in our
downstream one, we need to define more than 32
functional units.

Increasing the size does not seem to cause a huge
size increase in the binary (an llc debug build went
from 1366497672 to 1366523984, a difference of 26k),
so perhaps it would be acceptable to have this patch
applied upstream as well.

Subscribers: hiraditya, jsji, llvm-commits

Tags: #llvm

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

4 years ago[lldb] Disable auto fix-its when evaluating expressions in the test suite
Raphael Isemann [Mon, 24 Feb 2020 08:04:18 +0000 (09:04 +0100)]
[lldb] Disable auto fix-its when evaluating expressions in the test suite

Summary:
Currently the test suite runs with enabled automatically applied Clang fix-its for expressions.
This is causing that sometimes incorrect expressions in tests are still evaluated even though they
are actually incorrect. Let's disable this feature in the test suite so that we know when expressions
are wrong and leave the fix-it testing to the dedicated tests for that feature.

Also updates the `lang/cpp/operators/` test as it seems Clang needs the `struct` keywords
before C and would otherwise fail without fixits.

Reviewers: jingham, JDevlieghere, shafik

Reviewed By: JDevlieghere, shafik

Subscribers: shafik, lldb-commits

Tags: #lldb

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

4 years ago[lldb/test] simplify basic-elf.yaml
Pavel Labath [Mon, 24 Feb 2020 08:02:18 +0000 (09:02 +0100)]
[lldb/test] simplify basic-elf.yaml

Explicit dynsym/dynstr sections were added in a6370d5 to compensate for
a yaml2obj change D74764. This test doesn't need those sections, so
instead I just delete the explicit section blocks, and also the
"DynamicSymbols" block, which triggers their implicit generation.

4 years ago[lldb/DWARF] Don't index dwp file multiple times
Pavel Labath [Fri, 21 Feb 2020 14:49:12 +0000 (15:49 +0100)]
[lldb/DWARF] Don't index dwp file multiple times

Summary:
When we added support for type units in dwo files, we changed the
"manual" dwarf index to index _all_ dwarf units in the dwo file instead
of just the split unit belonging to our skeleton unit. This was fine for
dwo files, as they contain only a single compile units and type units do
not have a split type unit which would point to them.

However, this does not work for dwp files because, these files do
contain multiple split compile units, and the current approach means
that each unit gets indexed multiple times (once for each split unit =>
n^2 complexity).

This patch teaches the manual dwarf index to treat dwp files specially.
Any type units in the dwp file added to the main list of compile units
and indexed with them in a single batch. Split compile units in dwp
files are still indexed as a part of their skeleton unit -- this is done
because we need the DW_AT_language attribute from the skeleton unit to
index them properly.

Handling of dwo files remains unchanged -- all units (type and skeleton)
are indexed when we reach the dwo file through the split unit.

Reviewers: clayborg, JDevlieghere, aprantl

Subscribers: arphaman, lldb-commits

Tags: #lldb

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

4 years ago[ARM][MVE] Combine more extending masked loads
Sam Parker [Fri, 21 Feb 2020 14:57:51 +0000 (14:57 +0000)]
[ARM][MVE] Combine more extending masked loads

For MVE, don't look at the users of the extending loads so that more
as desirable for folding.

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

4 years ago[lldb] Remove all the 'current_id' logging counters from the lookup code.
Raphael Isemann [Mon, 24 Feb 2020 07:38:44 +0000 (08:38 +0100)]
[lldb] Remove all the 'current_id'  logging counters from the lookup code.

Summary:
We have a lot of code in our lookup code to pass around `current_id` counters which end up in our logs like this:
```
AOCTV::FT [234] Found XYZ
```

This patch removes all of this code because:
* I'm splitting up all humongous functions, so I need to write more and more boilerplate to pass around these ids.
* I never saw any similar counters in the LLDB/LLVM code base.
* They're essentially globals and the last thing we need in LLDB is even more global state.
* They're not really useful when readings logs. It doesn't help that there isn't just 1 or 2 counters, but 12 (!) unique counters. I always thought that if I see two identical counter values in those brackets it's the same lookup request, but it seems that's only true by accident (and you can't know which of the 12 counters is actually printed without reading the code). The only time I know I can trust the counters is when it's obvious from the log that it's the same counter like in the log below, but then why have the counters in the first place?

```
 LayoutRecordType[28] on (ASTContext*)0x00007FFA1C840200 'scratch ASTContext' for (RecordDecl*)0x00007FFA0AAE8CF0 [name = '__tree']
 LRT[28] returned:
 LRT[28]   Original = (RecordDecl*)%p
 LRT[28]   Size = %lld
 LRT[28]   Alignment = %lld
 LRT[28]   Fields:
 LRT[28]     (FieldDecl*)0x00007FFA1A13B1D0, Name = '__begin_node_', Offset = 0 bits
 LRT[28]     (FieldDecl*)0x00007FFA1C08FD30, Name = '__pair1_', Offset = 64 bits
 LRT[28]     (FieldDecl*)0x00007FFA1C061210, Name = '__pair3_', Offset = 128 bits
 LRT[28]   Bases:
```

Reviewers: labath, shafik, JDevlieghere

Reviewed By: labath, shafik, JDevlieghere

Subscribers: abidh, lldb-commits

Tags: #lldb

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

4 years ago[JITLink] Add a MachO x86-64 GOT and Stub bypass optimization.
Lang Hames [Mon, 24 Feb 2020 06:53:48 +0000 (22:53 -0800)]
[JITLink] Add a MachO x86-64 GOT and Stub bypass optimization.

This optimization bypasses GOT loads and calls/branches through stubs when the
ultimate target of the access/branch is found to be within range of the
reference.

Extra debugging output is also added to the generic JITLink algorithm and
basic GOT and Stubs builder utility to aid debugging.

4 years ago[X86] When creating X86ISD::MGATHER nodes from AVX2 gather intrinsics, cast the mask...
Craig Topper [Mon, 24 Feb 2020 07:00:40 +0000 (23:00 -0800)]
[X86] When creating X86ISD::MGATHER nodes from AVX2 gather intrinsics, cast the mask to integer type.

The gather intrinsics use a floating point mask when the result
type is FP. But we call DemandedBits on the mask assuming its an
integer type. We also use integer types when we create it from
generic IR. So add a bitcast to the intrinsic path to guarantee
the integer type.

4 years ago[X86] Use custom isel for gather/scatter instructions.
Craig Topper [Mon, 24 Feb 2020 03:40:29 +0000 (19:40 -0800)]
[X86] Use custom isel for gather/scatter instructions.

The type profile we use for the isel patterns lied about how
many operands the gather/scatter node has to skip the index
and scale operands. This allowed us to expand the baseptr
operand into base, displacement, and segment and then merge
the index and scale with them in the final instruction during
isel. This is kind of a hack that relies on isel not checking the
number of operands at all.

This commit switches to custom isel where we can manage this
directly without relying on holes in the isel checking.

4 years ago[SelectionDAG] Remove ISD::LIFETIME_START/LIFETIME_END from assert in getMemIntrinsic...
Craig Topper [Sun, 23 Feb 2020 23:19:04 +0000 (15:19 -0800)]
[SelectionDAG] Remove ISD::LIFETIME_START/LIFETIME_END from assert in getMemIntrinsicNode.

These appear to have their own SDNode type and shouldn't use
MemIntrinsicSDNode.

4 years ago[libc] Add a README to the sub-directories under the utils directory.
Siva Chandra Reddy [Wed, 12 Feb 2020 21:03:09 +0000 (13:03 -0800)]
[libc] Add a README to the sub-directories under the utils directory.

Also, the source layout document has been updated to reflect the current
layout of the `utils` directory.

Reviewers: PaulkaToast

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

4 years ago[Driver][X86] Add helptext for malign-branch*, mbranches-within-32B-boundaries
Shengchen Kan [Sun, 23 Feb 2020 12:35:32 +0000 (20:35 +0800)]
[Driver][X86] Add helptext for malign-branch*, mbranches-within-32B-boundaries

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

4 years ago[NFC][PowerPC] Refactor the tryAndWithMask()
QingShan Zhang [Mon, 24 Feb 2020 04:02:24 +0000 (04:02 +0000)]
[NFC][PowerPC] Refactor the tryAndWithMask()

Split the tryAndWithMask into several small calls.

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

4 years agoIR printing for single function with the new pass manager.
Hongtao Yu [Sun, 23 Feb 2020 23:13:27 +0000 (15:13 -0800)]
IR printing for single function with the new pass manager.

Summary:
The IR printing always prints out all functions in a module with the new pass manager, even with -filter-print-funcs specified. This is being fixed in this change. However, there are two exceptions, i.e, with user-specified wildcast switch -filter-print-funcs=* or -print-module-scope, under which IR of all functions should be printed.

Test Plan:
make check-clang
make check-llvm

Reviewers: wenlei

Reviewed By: wenlei

Subscribers: wenlei, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[SelectionDAG] Remove SelectionDAG::getTargetMemSDNode now that its not used.
Craig Topper [Sun, 23 Feb 2020 20:50:48 +0000 (12:50 -0800)]
[SelectionDAG] Remove SelectionDAG::getTargetMemSDNode now that its not used.

Targets are expected to use getMemIntrinsicNode and not provide
their own subclasses. X86 was previously the only user.

4 years ago[X86] Remove most X86 specific subclasses of MemSDNode. Just use a MemIntrinsicSDNode...
Craig Topper [Sun, 23 Feb 2020 20:47:42 +0000 (12:47 -0800)]
[X86] Remove most X86 specific subclasses of MemSDNode. Just use a MemIntrinsicSDNode as we usually do.

Leave the gather/scatter subclasses, but make them inherit from
MemIntrinsicSDNode and delete their constructor and destructor.
This way we can still have the getIndex, getMask, etc. convenience
functions.

4 years ago[X86] Enable the use of movlps for i64 atomic load on 32-bit targets with sse1.
Craig Topper [Sun, 23 Feb 2020 18:46:34 +0000 (10:46 -0800)]
[X86] Enable the use of movlps for i64 atomic load on 32-bit targets with sse1.

Still a little room for improvement by using movlps to store to
the stack temporary needed to move data out of the xmm register
after the load.

4 years ago[X86] Use FIST for i64 atomic stores on 32-bit targets without SSE.
Craig Topper [Sun, 23 Feb 2020 18:21:59 +0000 (10:21 -0800)]
[X86] Use FIST for i64 atomic stores on 32-bit targets without SSE.

4 years ago[SystemZ] Support the kernel back chain.
Jonas Paulsson [Wed, 19 Feb 2020 22:54:12 +0000 (14:54 -0800)]
[SystemZ]  Support the kernel back chain.

In order to build the Linux kernel, the back chain must be supported with
packed-stack. The back chain is then stored topmost in the register save
area.

Review: Ulrich Weigand

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

4 years ago[clangd] Try to fix buildbots - copy elision not happening here?
Sam McCall [Sun, 23 Feb 2020 20:11:58 +0000 (21:11 +0100)]
[clangd] Try to fix buildbots - copy elision not happening here?

4 years agoUpdating a comment to clarify that SkipUntil handles balanced delimiters.
Aaron Ballman [Sun, 23 Feb 2020 19:33:37 +0000 (14:33 -0500)]
Updating a comment to clarify that SkipUntil handles balanced delimiters.

4 years ago[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token...
Sam McCall [Sun, 23 Feb 2020 19:03:00 +0000 (20:03 +0100)]
[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails.

This reverts commit b4b9706d5da368c81b86867b1c11a2e17b4472ac.
Now avoiding expected<vector<selection>> in favor of expected<vector<unique_ptr<selection>>>

4 years ago[AArch64] Update new test.
Florian Hahn [Sun, 23 Feb 2020 19:13:13 +0000 (19:13 +0000)]
[AArch64] Update new test.

Changed after 7769030b9310c1865fd331edb78dc242a39b109a.

4 years agoRecommit "[PatternMatch] Match XOR variant of unsigned-add overflow check."
Florian Hahn [Sun, 23 Feb 2020 16:32:55 +0000 (16:32 +0000)]
Recommit "[PatternMatch] Match XOR variant of unsigned-add overflow check."

This version fixes a buildbot failure cause by picking the wrong insert
point for XORs. We cannot pick the XOR binary operator as insert point,
as it is not guaranteed that both input operands for the overflow
intrinsic are defined before it.

This reverts the revert commit
c7fc0e5da6c3c36eb5f3a874a6cdeaedb26856e0.

4 years ago[X86] Regenerate some tests to show FMA4 comments. NFC
Craig Topper [Sun, 23 Feb 2020 07:01:19 +0000 (23:01 -0800)]
[X86] Regenerate some tests to show FMA4 comments. NFC

4 years ago[SDAG] fold fsub -0.0, undef to undef rather than NaN
Sanjay Patel [Sun, 23 Feb 2020 16:26:28 +0000 (11:26 -0500)]
[SDAG] fold fsub -0.0, undef to undef rather than NaN

A question about this behavior came up on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139003.html
...and as part of backend improvements in D73978.

We decided not to implement a more general change that would have
folded any FP binop with nearly arbitrary constant + undef operand
to undef because that is not theoretically correct (even if it is
practically correct).

This is the SDAG-equivalent to the IR change in D74713.

4 years ago[DSE] Track overlapping stores.
Florian Hahn [Sun, 23 Feb 2020 15:39:15 +0000 (15:39 +0000)]
[DSE] Track overlapping stores.

Add a map from BasicBlocks to overlap intervals. For partial writes, we
can keep track of those in IOLs. We only add candidates that are valid
for eliminations.

Reviewers: dmgreen, bryant, asbirlea, Tyker

Reviewed By: asbirlea

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

4 years agoRevert "[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor...
Sam McCall [Sun, 23 Feb 2020 15:34:49 +0000 (16:34 +0100)]
Revert "[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails."

This reverts commit a2ce807eb72a8e154abca09b1e968b2d99ba6933.

Buildbot failures on GCC due to SelectionTree not being copyable, and
instantiating vector<Selection> in the tweak-handling in ClangdServer.

4 years ago[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token...
Sam McCall [Sun, 23 Feb 2020 15:09:36 +0000 (16:09 +0100)]
[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails.

This reverts commit 6af1ad20d60ef8ea23f2cfdb02d299b3b3114b06.

4 years ago[clangd] Debounce rebuilds responsively to rebuild times.
Sam McCall [Tue, 4 Feb 2020 11:47:05 +0000 (12:47 +0100)]
[clangd] Debounce rebuilds responsively to rebuild times.

Summary:
Old: 500ms always. New: rebuild time, up to 500ms.

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

Reviewers: hokein

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

Tags: #clang

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

4 years ago[NFC] fix test nan value
Nuno Lopes [Sun, 23 Feb 2020 12:42:47 +0000 (12:42 +0000)]
[NFC] fix test nan value

4 years ago[NFC] Test commit access. Drop trivial braces.
Denis Khalikov [Sun, 23 Feb 2020 12:05:27 +0000 (15:05 +0300)]
[NFC] Test commit access. Drop trivial braces.

4 years ago[X86] Add sse2 command lines to sse-intrinsics-fast-isel.ll.
Craig Topper [Sun, 23 Feb 2020 06:40:13 +0000 (22:40 -0800)]
[X86] Add sse2 command lines to sse-intrinsics-fast-isel.ll.

The extra available vector types on sse2 causes us to produce
different code.

4 years ago[X86] Add AddToWorklist(N) after calls to SimplifyDemandedBits/SimplifyDemandedVector...
Craig Topper [Sun, 23 Feb 2020 05:42:57 +0000 (21:42 -0800)]
[X86] Add AddToWorklist(N) after calls to SimplifyDemandedBits/SimplifyDemandedVectorElts that are called on an operand of N.

If a simplication occurs the operand will be added to the worklist.
But since the demanded mask was based on N, we need to make sure
we revisit N in case there are more simplifications to be done.
Returning SDValue(N, 0) as we do, only tells DAG combine that
something changed, but that won't make it add anything to the
worklist.

Found while playing around with using VEXTRACT_STORE in more cases.
But I guess this doesn't affect any of our existing tests.

4 years ago[X86] Teach EltsFromConsecutiveLoads that it's ok to form a v4f32 VZEXT_LOAD with...
Craig Topper [Sun, 23 Feb 2020 02:50:41 +0000 (18:50 -0800)]
[X86] Teach EltsFromConsecutiveLoads that it's ok to form a v4f32 VZEXT_LOAD with a 64 bit memory size on SSE1 targets.

We can use MOVLPS which will load 64 bits, but we need a v4f32
result type. We already have isel patterns for this.

The code here is a little hacky. We can probably improve it with
more isel patterns.

4 years ago[X86] Use movlps for i64 atomic stores on 32-targets with sse1.
Craig Topper [Sun, 23 Feb 2020 02:15:27 +0000 (18:15 -0800)]
[X86] Use movlps for i64 atomic stores on 32-targets with sse1.

This is similar to using movd which we do for sse2 targets.

I've added a DAG combine for VEXTRACT_STORE to use SimplifyDemandedVectorElts
to clean up some artifacts from type legalization.

4 years ago[ORC] Update LLJIT to automatically run specially named initializer functions.
Lang Hames [Sat, 22 Feb 2020 17:49:55 +0000 (09:49 -0800)]
[ORC] Update LLJIT to automatically run specially named initializer functions.

The GenericLLVMIRPlatformSupport class runs a transform on all LLVM IR added to
the LLJIT instance to replace instances of llvm.global_ctors with a specially
named function that runs the corresponing static initializers (See
(GlobalCtorDtorScraper from lib/ExecutionEngine/Orc/LLJIT.cpp). This patch
updates the GenericIRPlatform class to check for this specially named function
in other materialization units that are added to the JIT and, if found, add
the function to the initializer work queue. Doing this allows object files
that were compiled from IR and cached to be reloaded in subsequent JIT sessions
without their initializers being skipped.

To enable testing this patch also updates the lli tool's -jit-kind=orc-lazy mode
to respect the -enable-cache-manager and -object-cache-dir options, and modifies
the CompileOnDemandLayer to rename extracted submodules to include a hash of the
names of their symbol definitions. This allows a simple object caching scheme
based on module names (which was already implemented in lli) to work with the
lazy JIT.

4 years ago[ORC] Add errors for missing and extraneous symbol definitions.
Lang Hames [Sat, 22 Feb 2020 01:38:42 +0000 (17:38 -0800)]
[ORC] Add errors for missing and extraneous symbol definitions.

This patch adds new errors and error checking to the ObjectLinkingLayer to
catch cases where a compiled or loaded object either:
(1) Contains definitions not covered by its responsibility set, or
(2) Is missing definitions that are covered by its responsibility set.

Proir to this patch providing the correct set of definitions was treated as
an API contract requirement, however this requires that the client be confident
in the correctness of the whole compiler / object-cache pipeline and results
in difficult-to-debug assertions upon failure. Treating this as a recoverable
error results in clearer diagnostics.

The performance overhead of this check is one comparison of densemap keys
(symbol string pointers) per linking object, which is minimal. If this overhead
ever becomes a problem we can add the check under a flag that can be turned off
if the client fully trusts the rest of the pipeline.

4 years ago[Sema] Fix pointer-to-int-cast diagnostic for _Bool
Mark de Wever [Sat, 22 Feb 2020 09:37:41 +0000 (10:37 +0100)]
[Sema] Fix pointer-to-int-cast diagnostic for _Bool

The diagnostic added in D72231 also shows a diagnostic when casting to a
_Bool. This is unwanted. This patch removes the diagnostic for _Bool types.

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

4 years agoAdd a llvm::shuffle and use it in lld
Rafael Ávila de Espíndola [Sat, 22 Feb 2020 17:51:02 +0000 (09:51 -0800)]
Add a llvm::shuffle and use it in lld

With this --shuffle-sections=seed produces the same result in every
host.

Reviewed By: grimar, MaskRay

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

4 years ago[libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit-
Billy Robert O'Neal III [Sat, 22 Feb 2020 14:57:37 +0000 (06:57 -0800)]
[libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit-

4 years ago[NFC] Remove some GCC warning from c9e93c84f61400d1aac7d195a0578e80bc48c69a
Tyker [Sat, 22 Feb 2020 13:11:31 +0000 (14:11 +0100)]
[NFC] Remove some GCC warning from c9e93c84f61400d1aac7d195a0578e80bc48c69a

4 years ago[lldb][test] - Update basic-elf.yaml to fix build bot.
Georgii Rymar [Sat, 22 Feb 2020 13:06:55 +0000 (16:06 +0300)]
[lldb][test] - Update basic-elf.yaml to fix build bot.

D74764 (https://reviews.llvm.org/rG31f2ad9c368d47721508cbd0d120d626f9041715)
changed the behavior of the yaml2obj. Now it assigns virtual addresses
for allocatable sections.

SymbolFile/Breakpad/symtab.test started to fail after this change:
(http://lab.llvm.org:8011/builders/lldb-x86_64-debian/builds/5520/steps/test/logs/stdio)

Command Output (stderr):
--
/home/worker/lldb-x86_64-debian/lldb-x86_64-debian/llvm-project/lldb/test/Shell/SymbolFile/Breakpad/symtab.test:6:10: error: CHECK: expected string not found in input
# CHECK: Symtab, file = {{.*}}symtab.out, num_symbols = 5:
         ^
<stdin>:15:1: note: scanning from here
Symtab, file = /home/worker/lldb-x86_64-debian/lldb-x86_64-debian/build/tools/lldb/test/SymbolFile/Breakpad/Output/symtab.out, num_symbols = 6:
^
<stdin>:15:99: note: possible intended match here
Symtab, file = /home/worker/lldb-x86_64-debian/lldb-x86_64-debian/build/tools/lldb/test/SymbolFile/Breakpad/Output/symtab.out, num_symbols = 6:

For now I've updated the basic-elf.yaml so that now it produce the same layout as before D74764.
Breakpad/symtab.test should be updated it seems.

4 years ago[yaml2obj] - Automatically assign sh_addr for allocatable sections.
Georgii Rymar [Tue, 18 Feb 2020 13:49:12 +0000 (16:49 +0300)]
[yaml2obj] - Automatically assign sh_addr for allocatable sections.

I've noticed that it is not convenient to create YAMLs from
binaries (using obj2yaml) that have to be test cases for obj2yaml
later (after applying yaml2obj).

The problem, for example is that obj2yaml emits "DynamicSymbols:"
key instead of .dynsym. It also does not create .dynstr.
And when a YAML document without explicitly defined .dynsym/.dynstr
is given to yaml2obj, we have issues:

1) These sections are placed after non-allocatable sections (I've fixed it in D74756).
2) They have VA == 0. User needs create descriptions for such sections explicitly manually
    to set a VA.

This patch addresses (2). I suggest to let yaml2obj assign virtual addresses by itself.
It makes an output binary to be much closer to "normal" ELF.
(It is still possible to use "Address: 0x0" for a section to get the original behavior
if it is needed)

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

4 years ago[VE][fix] missing include
Simon Moll [Sat, 22 Feb 2020 09:45:16 +0000 (10:45 +0100)]
[VE][fix] missing include

4 years agoUpdate ShapeInference.md
Baden Hughes [Sat, 22 Feb 2020 02:08:33 +0000 (12:08 +1000)]
Update ShapeInference.md

Variety of editorial and typographic and formatting tweaks.

4 years agoUpdate Quantization.md
Baden Hughes [Sat, 22 Feb 2020 01:58:37 +0000 (11:58 +1000)]
Update Quantization.md

Various typographic, grammatical and formatting edits and tidy ups.

4 years ago[Preprocessor][X86] Fix __code_model_*__ predefine macros
Roland McGrath [Sat, 22 Feb 2020 07:28:56 +0000 (23:28 -0800)]
[Preprocessor][X86] Fix __code_model_*__ predefine macros

GCC defines __code_model_*__ (two trailing underscores), not
__code_model_*_ (one trailing underscore).

Reviewed By: MaskRay

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

4 years ago[AArch64] Predefine __AARCH64_CMODEL_*__ as GCC does
Roland McGrath [Sat, 22 Feb 2020 05:25:57 +0000 (21:25 -0800)]
[AArch64] Predefine __AARCH64_CMODEL_*__ as GCC does

Make Clang on aarch64 targets predefine `__AARCH64_CMODEL_SMALL__`
or `__AARCH64_CMODEL_TINY__`, etc.  These are the names that GCC
uses for its predefines.

Reviewed By: tamur, MaskRay

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

4 years ago[Frontend] Replace CC1 option -mcode-model with -mcmodel=
Fangrui Song [Sat, 22 Feb 2020 06:41:34 +0000 (22:41 -0800)]
[Frontend] Replace CC1 option -mcode-model with -mcmodel=

Before:

% clang -mcmodel=x -xc /dev/null
error: invalid argument 'x' in '-mcode-model x'

Now:

% clang -mcmodel=x -xc /dev/null
clang-11: error: invalid argument 'x' to -mcmodel=

4 years ago[Preprocessor][test] Fix __VERSION__ in init-aarch64.c
Fangrui Song [Sat, 22 Feb 2020 06:37:40 +0000 (22:37 -0800)]
[Preprocessor][test] Fix __VERSION__ in init-aarch64.c

4 years ago[Preprocessor][test] Move AArch64 tests from init.c to init-aarch.c
Fangrui Song [Sat, 22 Feb 2020 05:43:02 +0000 (21:43 -0800)]
[Preprocessor][test] Move AArch64 tests from init.c to init-aarch.c

4 years ago[GISel][KnownBits] Suppress unused warning on the dump method
Quentin Colombet [Sat, 22 Feb 2020 05:07:04 +0000 (21:07 -0800)]
[GISel][KnownBits] Suppress unused warning on the dump method

NFC

4 years ago[libc] Lay out framework for fuzzing libc functions.
Paula Toth [Sat, 22 Feb 2020 03:14:51 +0000 (19:14 -0800)]
[libc] Lay out framework for fuzzing libc functions.

Summary:
Added fuzzing test for strcpy and some documentation related to fuzzing.
This will be the first step in integrating this with oss-fuzz.

Reviewers: sivachandra, abrachet

Reviewed By: sivachandra, abrachet

Subscribers: gchatelet, abrachet, mgorny, MaskRay, tschuett, libc-commits

Tags: #libc-project

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

4 years ago[lldb][test] Fix sh_flags and sh_entsize of .debug_str.dwo
Fangrui Song [Sat, 22 Feb 2020 02:48:53 +0000 (18:48 -0800)]
[lldb][test] Fix sh_flags and sh_entsize of .debug_str.dwo

sh_flags: SHF_MERGE | SHF_STRINGS | SHF_EXCLUDE
sh_entsize: 1

Incorrect sh_flags or sh_entsize is an error after the assembler change made by D73999.

4 years ago[X86] Teach combineCVTPH2PS to shrink v8i16 loads when the output type is v4f32....
Craig Topper [Sat, 22 Feb 2020 01:56:35 +0000 (17:56 -0800)]
[X86] Teach combineCVTPH2PS to shrink v8i16 loads when the output type is v4f32. Remove extra isel patterns.

Similar to what do for other operations that use a subset of bits.
Allows us to remove a pattern that shrinks a load. Which was
incorrect if the load was volatile.

4 years agoRemove unused variable
Alex Brachet [Sat, 22 Feb 2020 01:48:07 +0000 (20:48 -0500)]
Remove unused variable

4 years ago[lldb][test] Fix sh_type of .debug_cu_index and .debug_tu_index
Fangrui Song [Sat, 22 Feb 2020 01:37:01 +0000 (17:37 -0800)]
[lldb][test] Fix sh_type of .debug_cu_index and .debug_tu_index

They do not have the SHF_EXCLUDE flag.
After D73999, MC errors `changed section type for .debug_cu_index, expected: 0x0`

4 years agoFlags for displaying only hot nodes in CFGPrinter graph
Kirill Naumov [Sat, 22 Feb 2020 00:36:09 +0000 (16:36 -0800)]
Flags for displaying only hot nodes in CFGPrinter graph

Added two flags to omit uncommon or dead paths in the CFG graphs:
  -cfg-hide-unreachable-paths
  -cfg-hide-deoptimize-paths

The main purpose is performance analysis when such block are not
"interesting" from perspective of common path performance.

Reviewed By: apilipenko, davidxl

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

4 years ago[WebAssembly] Fix a non-determinism problem in FixIrreducibleControlFlow
Heejin Ahn [Sat, 22 Feb 2020 01:01:52 +0000 (17:01 -0800)]
[WebAssembly] Fix a non-determinism problem in FixIrreducibleControlFlow

Summary:
We already sorted the blocks when fixing up a set of mutual
loop entries, however, there can be multiple sets of such
mutual loop entries, and the order we encounter them
should not be random, so sort them too.

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

Patch by Alon Zakai (kripken)

Reviewers: aheejin, sbc100, dschuff

Subscribers: mgrang, sunfish, hiraditya, jgravelle-google, llvm-commits

Tags: #llvm

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

4 years ago[llvm-objdump][test] Fix source-interleave-function-from-debug.test on Windows after...
Fangrui Song [Sat, 22 Feb 2020 00:46:52 +0000 (16:46 -0800)]
[llvm-objdump][test] Fix source-interleave-function-from-debug.test on Windows after D74507

4 years agoAllow customized relative PYTHONHOME (Attemp 1)
Haibo Huang [Fri, 21 Feb 2020 23:52:15 +0000 (15:52 -0800)]
Allow customized relative PYTHONHOME (Attemp 1)

Summary:
This is another attempt of 0bb90628b5f7c170689d2d3f019af773772fc649.

The difference is that g_python_home is not declared as const. Since
some versions of python do not expect that.

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

4 years agoAMDGPU/GlobalISel: Remove dead code
Matt Arsenault [Tue, 18 Feb 2020 14:34:31 +0000 (09:34 -0500)]
AMDGPU/GlobalISel: Remove dead code

4 years ago[Driver] Escape the program path for -frecord-command-line
Scott Linder [Thu, 20 Feb 2020 21:31:17 +0000 (16:31 -0500)]
[Driver] Escape the program path for -frecord-command-line

Similar to the rest of the command line that is recorded, the program
path must also have spaces and backslashes escaped. Without this
parsing the recorded command line becomes hard on platforms like
Windows where spaces and backslashes are common.

This was originally reverted in
577d9ce35532439203411c999deefc9c80e04c69; this version makes a test
agnostic to the presence of backslashes in paths on some platforms.

Patch By: Ravi Ramaseshan
Differential Revision: https://reviews.llvm.org/D74811

4 years ago[mlir][DeclarativeParser][NFC] Use explicit type names in TypeSwitch to
River Riddle [Sat, 22 Feb 2020 00:09:58 +0000 (16:09 -0800)]
[mlir][DeclarativeParser][NFC] Use explicit type names in TypeSwitch to
appease older GCC.

Older versions of GCC are unable to properly capture 'this' in template lambdas,
resulting in errors.

4 years agoRevert "[AMDGPU] Don’t marke the .note section as ALLOC"
Mark Searles [Fri, 21 Feb 2020 23:26:51 +0000 (15:26 -0800)]
Revert "[AMDGPU] Don’t marke the .note section as ALLOC"

This reverts commit 977cd661cf019039dec7ffdd15bf0ac500828c87.

It breaks OpenCL testing. OpenCL Runtime is using PT_LOAD information
to calculate memory for global variables. This commit should be relanded once
the OpenCL runtime stops relying on PT_LOAD information for calculating global
variable memory size.

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

4 years ago[lldb/test] Tweak libcxx string test on Apple+ARM devices
Vedant Kumar [Fri, 21 Feb 2020 23:21:19 +0000 (15:21 -0800)]
[lldb/test] Tweak libcxx string test on Apple+ARM devices

On Apple platforms, is __arm__ isn't defined and we're not on Intel, we use an
alternate std::string layout. I.e., the libcxx string test fails on phones
because the hand-crafted "garbage" string structs are actually valid strings.

See:

```
  // _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
  // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility.
  #if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) &&       \
       (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) ||                           \
      defined(_LIBCPP_ALTERNATE_STRING_LAYOUT)
  #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
  #endif
```

Disable inspection of the garbage structs on Apple+ARM devices.

4 years ago[MC][ELF] Error for sh_type, sh_flags or sh_entsize change
Fangrui Song [Tue, 4 Feb 2020 22:28:20 +0000 (14:28 -0800)]
[MC][ELF] Error for sh_type, sh_flags or sh_entsize change

Heads-up message: https://lists.llvm.org/pipermail/llvm-dev/2020-February/139390.html

GNU as started to emit warnings for changed sh_type or sh_flags in 2000.
GNU as>=2.35 will emit errors for most sh_type/sh_flags change, and error for entsize change.

Some cases remain warnings for legacy reasons:

   .section .init_array,"ax", @progbits
   .section .init_array,"ax", @init_array
   # And some obscure sh_flags changes (OS/Processor specific flags)

The rationale of a diagnostic (warning or error) is that sh_type,
sh_flags or sh_entsize changes usually indicate user errors. The values
are taken from the first .section directive. Successive directives are ignored.

We just try to be rigid and emit errors for all sh_type/sh_flags/sh_entsize change.

A possible improvement in the future is to reuse
llvm-readobj/ELFDumper.cpp:getSectionTypeString so that we can name the
type in the diagnostics.

Reviewed By: psmith

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

4 years ago[llvm-objdump] Print method name from debug info in disassembly output.
Jordan Rupprecht [Fri, 21 Feb 2020 23:30:51 +0000 (15:30 -0800)]
[llvm-objdump] Print method name from debug info in disassembly output.

Summary:
GNU objdump prints the method name in disassembly output, and upon further investigation this seems to come from debug info, not the symbol table.

Some additional refactoring is necessary to make this work even when the line number is 0/the filename is unknown. The added test case includes a note for this scenario.

See http://llvm.org/PR41341 for more info.

Reviewers: dblaikie, MaskRay, jhenderson

Reviewed By: MaskRay

Subscribers: ormris, jvesely, aprantl, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[mlir][Tutorial] Add a section to Toy Ch.2 detailing the custom assembly format.
River Riddle [Fri, 21 Feb 2020 22:36:24 +0000 (14:36 -0800)]
[mlir][Tutorial] Add a section to Toy Ch.2 detailing the custom assembly format.

Summary:
This details the C++ format as well as the new declarative format. This has been one of the major missing pieces from the toy tutorial.

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

4 years ago[mlir][DeclarativeParser] Add support for formatting the successors of an operation.
River Riddle [Fri, 21 Feb 2020 21:20:06 +0000 (13:20 -0800)]
[mlir][DeclarativeParser] Add support for formatting the successors of an operation.

This revision add support for formatting successor variables in a similar way to operands, attributes, etc.

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

4 years ago[mlir][ODS] Add support for specifying the successors of an operation.
River Riddle [Fri, 21 Feb 2020 21:19:50 +0000 (13:19 -0800)]
[mlir][ODS] Add support for specifying the successors of an operation.

This revision add support in ODS for specifying the successors of an operation. Successors are specified via the `successors` list:
```
let successors = (successor AnySuccessor:$target, AnySuccessor:$otherTarget);
```

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

4 years ago[mlir] Add a utility iterator range that repeats a given value `n` times.
River Riddle [Fri, 21 Feb 2020 21:19:36 +0000 (13:19 -0800)]
[mlir] Add a utility iterator range that repeats a given value `n` times.

This range is useful when an desired API expects a range or when comparing two different ranges for equality, but the underlying data is a splat. This range removes the need to explicitly construct a vector in those cases.

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

4 years ago[mlir][DeclarativeParser] Add an 'attr-dict-with-keyword' directive
River Riddle [Fri, 21 Feb 2020 21:19:26 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add an 'attr-dict-with-keyword' directive

This matches the '(print|parse)OptionalAttrDictWithKeyword' functionality provided by the assembly parser/printer.

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

4 years ago[mlir][DeclarativeParser] Add basic support for optional groups in the assembly format.
River Riddle [Fri, 21 Feb 2020 21:19:15 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add basic support for optional groups in the assembly format.

When operations have optional attributes, or optional operands(i.e. empty variadic operands), the assembly format often has an optional section to represent these arguments. This revision adds basic support for defining an "optional group" in the assembly format to support this. An optional group is defined by wrapping a set of elements in `()` followed by `?` and requires the following:

* The first element of the group must be either a literal or an operand argument.
  - This is because the first element must be optionally parsable.
* There must be exactly one argument variable within the group that is marked as the anchor of the group. The anchor is the element whose presence controls whether the group should be printed/parsed. An element is marked as the anchor by adding a trailing `^`.
* The group must only contain literals, variables, and type directives.
  - Any attribute variables may be used, but only optional attributes can be marked as the anchor.
  - Only variadic, i.e. optional, operand arguments can be used.
  - The elements of a type directive must be defined within the same optional group.

An example of this can be seen with the assembly format for ReturnOp, which has a variadic number of operands.

```
def ReturnOp : ... {
  let arguments = (ins Variadic<AnyType>:$operands);

  // We only print the operands+types if there are a non-zero number
  // of operands.
  let assemblyFormat = "attr-dict ($operands^ `:` type($operands))?";
}
```

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

4 years ago[mlir][DeclarativeParser] Add support for the TypesMatchWith trait.
River Riddle [Fri, 21 Feb 2020 21:19:03 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add support for the TypesMatchWith trait.

This allows for injecting type constraints that are not direct 1-1 mappings, for example when one type is equal to the element type of another. This allows for moving over several more parsers to the declarative form.

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

4 years ago[Analysis][Docs] Parents of loops documentation.
Stefanos Baziotis [Fri, 21 Feb 2020 23:07:53 +0000 (17:07 -0600)]
[Analysis][Docs] Parents of loops documentation.

Recently I had to use it and although one assumes it returns null if
there's no parent loop, I think it helps to doc it.

Reviewed By: Meinersbur

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