Benjamin Kramer [Wed, 15 Apr 2020 13:52:26 +0000 (15:52 +0200)]
Pass shufflevector indices as int instead of unsigned.
No functionality change intended.
Dmitry Polukhin [Wed, 1 Apr 2020 09:08:53 +0000 (02:08 -0700)]
[clang-tidy] Optional inheritance of file configs from parent directories
Summary:
Without this patch clang-tidy stops finding file configs on the nearest
.clang-tidy file. In some cases it is not very convenient because it
results in common parts duplication into every child .clang-tidy file.
This diff adds optional config inheritance from the parent directories
config files.
Test Plan:
Added test cases in existing config test.
Reviewers: alexfh, gribozavr2, klimek, hokein
Subscribers: njames93, arphaman, xazax.hun, aheejin, cfe-commits
Tags: #clang, #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D75184
Victor Campos [Wed, 25 Mar 2020 10:52:43 +0000 (10:52 +0000)]
[CodeGen][ARM] Error when writing to specific reserved registers in inline asm
Summary:
No error or warning is emitted when specific reserved registers are
written to in inline assembly. Therefore, writes to the program counter
or to the frame pointer, for instance, were permitted, which could have
led to undesirable behaviour.
Example:
int foo() {
register int a __asm__("r7"); // r7 = frame-pointer in M-class ARM
__asm__ __volatile__("mov %0, r1" : "=r"(a) : : );
return a;
}
In contrast, GCC issues an error in the same scenario.
This patch detects writes to specific reserved registers in inline
assembly for ARM and emits an error in such case. The detection works
for output and input operands. Clobber operands are not handled here:
they are already covered at a later point in
AsmPrinter::emitInlineAsm(const MachineInstr *MI). The registers
covered are: program counter, frame pointer and base pointer.
This is ARM only. Therefore the implementation of other targets'
counterparts remain open to do.
Reviewers: efriedma
Reviewed By: efriedma
Subscribers: kristof.beyls, hiraditya, danielkiss, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76848
Sanjay Patel [Wed, 15 Apr 2020 13:11:44 +0000 (09:11 -0400)]
[InstCombine] prevent infinite loop with sub/abs of constant expression
PR45539:
https://bugs.llvm.org/show_bug.cgi?id=45539
Matt Arsenault [Mon, 13 Apr 2020 13:15:48 +0000 (09:15 -0400)]
clang/AMDGPU: Assume denormals are enabled for the default target.
Since the default logic was based on having fast denormal/fma
features, and the default target has no features, we assumed flushing
by default. This fixes incorrectly assuming flushing in builds for
"generic" IR libraries.
The handling for no specified --cuda-gpu-arch in HIP is kind of
broken. Somewhere else forces a default target of gfx803, which does
not enable denormal handling by default. We don't see this default
switching here, so you'll end up with a different denormal mode
depending on whether you explicitly requested gfx803, or used it by
default.
Jan Kratochvil [Wed, 15 Apr 2020 13:12:59 +0000 (15:12 +0200)]
Revert "[nfc] [lldb] Introduce DWARF callbacks"
This reverts commit
bd47c470d13b1c57ecf37c1faf0324833d3a4542.
It broke Green Dragon, reason is unknown to me so far:
http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/15323/consoleFull
Differential Revision: https://reviews.llvm.org/D77327
Matt Arsenault [Wed, 15 Apr 2020 13:02:07 +0000 (09:02 -0400)]
AMDGPU/GlobalISel: Add some artifact combiner tests
Thomas Preud'homme [Sat, 4 Apr 2020 00:02:45 +0000 (01:02 +0100)]
[FileCheck] Better diagnostic for format conflict
Summary:
Improve error message in case of conflict between several implicit
format to mention the operand that conflict.
Reviewers: jhenderson, jdenny, probinson, grimar, arichardson, rnk
Reviewed By: jdenny
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77741
Simon Moll [Wed, 15 Apr 2020 12:43:26 +0000 (14:43 +0200)]
[nfc] clang-format TargetTransformInfo.cpp
Benjamin Kramer [Wed, 15 Apr 2020 12:29:09 +0000 (14:29 +0200)]
Upgrade users of 'new ShuffleVectorInst' to pass indices as an int array
No functionality change intended.
David Truby [Wed, 15 Apr 2020 11:55:42 +0000 (12:55 +0100)]
[flang] Add return statement to Logical opeator=.
This removes the current undefined behavior where the function has a return type
but no return statement.
Fixes: https://bugs.llvm.org/show_bug.cgi?id=45530
Simon Moll [Wed, 15 Apr 2020 12:01:31 +0000 (14:01 +0200)]
[nfc] clang-format TargetTransformInfoImpl.h
Simon Moll [Wed, 15 Apr 2020 12:00:07 +0000 (14:00 +0200)]
[nfc] clang-format TargetTransformInfo.h
Denis Antrushin [Tue, 14 Apr 2020 15:30:51 +0000 (18:30 +0300)]
[Statepoint] Add getters to StatepointOpers.
To simplify future work on statepoint representation, hide
direct access to statepoint field indices and provide getters
for them. Add getters for couple more statepoint fields.
This also fixes two bugs in MachineVerifier for statepoint:
First, the `break` statement was falling out of `if` statement
scope, thus disabling following checks.
Second, it was incorrectly accessing some fields like CallingConv -
StatepointOpers gives index to their value directly, not to
preceeding field type encoding.
Reviewed By: skatkov
Differential Revision: https://reviews.llvm.org/D78119
Kirill Bobyrev [Wed, 15 Apr 2020 11:27:30 +0000 (13:27 +0200)]
[dexp] NFC: Change positional argument format
Summary:
Before:
USAGE: dexp [options] --index-path Path to the index
After:
USAGE: dexp [options] <INDEX FILE>
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D78089
Florian Hahn [Tue, 14 Apr 2020 08:36:16 +0000 (09:36 +0100)]
[VPlan] Branches are not widened by VPWidenRecipe, assert (NFC).
Jonas Paulsson [Wed, 15 Apr 2020 09:29:55 +0000 (11:29 +0200)]
[SystemZ] Bugfix in adjustSubwordCmp()
adjustSubwordCmp() should not optimize a load of an i1 value. This is
achieved by checking that the size and store-size of the MemoryVT are the
same.
Fixes https://bugs.llvm.org/show_bug.cgi?id=45511.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D78187
Simon Pilgrim [Wed, 15 Apr 2020 10:54:22 +0000 (11:54 +0100)]
[CostModel][X86] Regenerate load_store.ll costs tests
Add SSE + AVX512 targets
Add some illegal type store tests
Benjamin Kramer [Wed, 15 Apr 2020 10:41:54 +0000 (12:41 +0200)]
Upgrade calls to CreateShuffleVector to use the preferred form of passing an array of ints
No functionality change intended.
Florian Hahn [Wed, 15 Apr 2020 10:41:13 +0000 (11:41 +0100)]
[VPlan] Move widening check for non-memory/non-calls to function (NFC).
After introducing VPWidenSelectRecipe, the duplicated logic can be
shared.
Reviewers: gilr, rengolin, Ayal, hsaito
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D77973
Pavel Labath [Wed, 15 Apr 2020 10:40:12 +0000 (12:40 +0200)]
[lldb] Fix -Wparentheses in ThreadPlanStack.cpp
Pavel Labath [Tue, 14 Apr 2020 15:06:04 +0000 (17:06 +0200)]
Fix DWARFDataExtractor::getRelocatedValue near EOF
Summary:
If we have an (invalid) relocation which relocates bytes which partially
lie outside the range of the relocated section, the getRelocatedValue
would return confusing results. It would first read zero (because that's
what the underlying DataExtractor api does for out-of-bounds reads), and
then relocate that zero anyway.
A more appropriate behavior is to return zero straight away. This is
what this patch does.
Reviewers: dblaikie, jhenderson
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78113
Florian Hahn [Wed, 15 Apr 2020 09:42:58 +0000 (10:42 +0100)]
[DSE] Lift post-dominance for objs not accessible in caller.
We can eliminate MemoryDefs of objects not accessible after the function
returns (e.g. alloca), if there are no reads between the MemoryDef and
any function exits. We can stop traversing paths that completely
overwrite the memory location of the MemoryDef.
This patch was split off D73763.
Reviewers: dmgreen, bryant, asbirlea, Tyker, efriedma, george.burgess.iv
Reviewed By: asbirlea, george.burgess.iv
Differential Revision: https://reviews.llvm.org/D77736
Sam Parker [Thu, 9 Apr 2020 06:51:33 +0000 (07:51 +0100)]
[ARM][MVE] Tail predicate VML[A|S]LDAV
Make the non-exchanging versions of the multiply add/sub instructions
validForTailPredication.
Differential Revision: https://reviews.llvm.org/D77648
Sameer Sahasrabuddhe [Wed, 15 Apr 2020 10:25:04 +0000 (15:55 +0530)]
fix warning: specialization of template in different namespace
This is related to commit
8c11bc0cd06ffc18786a1a51ee5ce5b1cc4923f6
which introduces the FixIrreducible pass. The warning seems hard to
reproduce locally. The latest attempt ought to work.
Nandor Licker [Thu, 9 Apr 2020 18:13:38 +0000 (19:13 +0100)]
[ConstExprPreter] Updated constant interpreter documentation
Summary:
Updated the documentation to better reflect features implemented on the
constexpr branch at https://github.com/nandor/llvm-project and extended
the TODO list with known missing features
Reviewers: rsmith, Bigcheese, dexonsmith, jfb
Subscribers: lebedev.ri, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75726
Georgii Rymar [Tue, 14 Apr 2020 15:04:48 +0000 (18:04 +0300)]
[LLVM/tools][test] - Remove/fix dead check prefixes.
We have a few unused/broken FileCheck prefixes in `llvm/test/tools`.
This patch fixes it.
Differential revision: https://reviews.llvm.org/D78110
Simon Moll [Wed, 15 Apr 2020 10:05:07 +0000 (12:05 +0200)]
[NFC] clang-format IntrinsicInst.h|cpp
Differential Revision: https://reviews.llvm.org/D78188
LLVM GN Syncbot [Wed, 15 Apr 2020 09:38:24 +0000 (09:38 +0000)]
[gn build] Port
8c11bc0cd06
Sameer Sahasrabuddhe [Wed, 15 Apr 2020 09:35:51 +0000 (15:05 +0530)]
Introduce fix-irreducible pass
An irreducible SCC is one which has multiple "header" blocks, i.e., blocks
with control-flow edges incident from outside the SCC. This pass converts an
irreducible SCC into a natural loop by introducing a single new header
block and redirecting all the edges on the original headers to this
new block.
This is a useful workaround for a limitation in the structurizer
which, which produces incorrect control flow in the presence of
irreducible regions. The AMDGPU backend provides an option to
enable this pass before the structurizer, which may eventually be
enabled by default.
Reviewed By: nhaehnle
Differential Revision: https://reviews.llvm.org/D77198
This restores commit
2ada8e2525dd2653f30c8696a27162a3b1647d66.
Originally reverted with commit
44e09b59b869a91bf47d76e8bc569d9ee91ad145.
Florian Hahn [Wed, 15 Apr 2020 09:18:31 +0000 (10:18 +0100)]
[VPlan] Move Load/Store checks out of tryToWiden (NFC).
Handling LoadInst and StoreInst in tryToWiden seems a bit
counter-intuitive, as there is only an assertion for them and in no
case VPWidenRefipes are created for them.
I think it makes sense to move the assertion to handleReplication, where
the non-widened loads and store are handled.
Reviewers: gilr, rengolin, Ayal, hsaito
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D77972
Alex Zinenko [Tue, 14 Apr 2020 11:01:53 +0000 (13:01 +0200)]
[mlir] LLVM dialect: support globals without linkage keyword, assuming 'external'
Similarly to actual LLVM IR, and to `llvm.mlir.func`, allow the custom syntax
of `llvm.mlir.global` to omit the linkage keyword. If omitted, the linkage is
assumed to be external. This makes the modeling of globals in the LLVM dialect
more consistent, both within the dialect and with LLVM IR.
Differential Revision: https://reviews.llvm.org/D78096
Uday Bondhugula [Sun, 5 Apr 2020 02:40:33 +0000 (08:10 +0530)]
[MLIR] Introduce applyOpPatternsAndFold for op local rewrites
Introduce mlir::applyOpPatternsAndFold which applies patterns as well as
any folding only on a specified op (in contrast to
applyPatternsAndFoldGreedily which applies patterns only on the regions
of an op isolated from above). The caller is made aware of the op being
folded away or erased.
Depends on D77485.
Differential Revision: https://reviews.llvm.org/D77487
Jan Kratochvil [Wed, 15 Apr 2020 08:36:31 +0000 (10:36 +0200)]
[nfc] [lldb] Introduce DWARF callbacks
As requested by @labath in https://reviews.llvm.org/D73206#1949516
providing DWARF index callbacks refactorization.
Differential Revision: https://reviews.llvm.org/D77327
Shengchen Kan [Wed, 15 Apr 2020 08:18:11 +0000 (16:18 +0800)]
[NFC][test] Mark the section which contains instructions executable
As we disscussed in D77971, we haven't confirmed that if putting instructions
in a non-executable section is an undefined behaviour. To make things
easier to go on, we mark these sections executable in test file
align-branch-section-size.s.
Kazushi (Jam) Marukawa [Wed, 15 Apr 2020 07:47:14 +0000 (09:47 +0200)]
[VE] Update integer arithmetic instructions
Summary:
Changing all mnemonic to match assembly instructions to simplify mnemonic
naming rules. This time update all fixed-point arithmetic instructions.
This also corrects smax/smin code generations.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D77856
Raphael Isemann [Wed, 15 Apr 2020 05:34:14 +0000 (07:34 +0200)]
[lldb][NFC] Remove FormatterChoiceCriterion
Summary:
The formatters code has a lot of 'reason' or 'why' values that we keep or-ing FormatterChoiceCriterion
enum values into. These values are only read by a single log statement and don't have any functional
purpose. It also seems the implementation is not finished (for example, display names and type
names don't have any dedicated enum values). Also everything is of course not tested or documented.
Let's just remove all of this.
Reviewers: labath, JDevlieghere, jingham, davide, vsk
Reviewed By: labath, vsk
Subscribers: JDevlieghere
Differential Revision: https://reviews.llvm.org/D77968
Gil Rapaport [Tue, 14 Apr 2020 14:20:41 +0000 (17:20 +0300)]
[LV] Fix PR45525: Incorrect assert in blend recipe
Fix an assert introduced in
41ed5d856c1: a phi with a single predecessor and a
mask is a valid case which is already supported by the code.
Differential Revision: https://reviews.llvm.org/D78115
Kadir Cetinkaya [Wed, 15 Apr 2020 07:33:12 +0000 (09:33 +0200)]
[clangd] Fix MSVC compile error, attempt 2
Kadir Cetinkaya [Wed, 15 Apr 2020 07:24:58 +0000 (09:24 +0200)]
[clangd] Fix MSVC builds
Kadir Cetinkaya [Wed, 8 Apr 2020 14:14:53 +0000 (16:14 +0200)]
[clangd] Shard preamble symbols in dynamic index
Summary:
This reduces memory usage by dynamic index from more than 400MB to 32MB
when all files in clang-tools-extra/clangd/*.cpp are active in clangd.
Reviewers: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77732
Richard Smith [Wed, 15 Apr 2020 06:35:35 +0000 (23:35 -0700)]
Don't print `&` as part of reference template arguments.
In passing, also generalize the mechanism used to allow Decl's printName
functions to override qualified name printing.
Richard Smith [Wed, 15 Apr 2020 06:28:33 +0000 (23:28 -0700)]
Generalize our two different kinds of declaration argument for
attributes to support any kind of declaration.
In preparation for adding a third kind.
LLVM GN Syncbot [Wed, 15 Apr 2020 06:53:11 +0000 (06:53 +0000)]
[gn build] Port
44e09b59b86
Sameer Sahasrabuddhe [Wed, 15 Apr 2020 06:47:11 +0000 (12:17 +0530)]
Revert "Introduce fix-irreducible pass"
This reverts commit
2ada8e2525dd2653f30c8696a27162a3b1647d66.
Buildbots produced compilation errors which I was not able to quickly
reproduce locally. Need more time to investigate.
Richard Smith [Wed, 15 Apr 2020 02:26:31 +0000 (19:26 -0700)]
Remove setters from CXXTypeidExpr and CXXUuidofExpr.
We generally prefer to have the ASTReader directly set fields rather
than including public setter functions.
LLVM GN Syncbot [Wed, 15 Apr 2020 06:01:21 +0000 (06:01 +0000)]
[gn build] Port
2ada8e2525d
Sameer Sahasrabuddhe [Wed, 15 Apr 2020 05:59:19 +0000 (11:29 +0530)]
Introduce fix-irreducible pass
An irreducible SCC is one which has multiple "header" blocks, i.e., blocks
with control-flow edges incident from outside the SCC. This pass converts an
irreducible SCC into a natural loop by introducing a single new header
block and redirecting all the edges on the original headers to this
new block.
This is a useful workaround for a limitation in the structurizer
which, which produces incorrect control flow in the presence of
irreducible regions. The AMDGPU backend provides an option to
enable this pass before the structurizer, which may eventually be
enabled by default.
Reviewed By: nhaehnle
Differential Revision: https://reviews.llvm.org/D77198
Nathan Ridge [Thu, 19 Mar 2020 19:42:10 +0000 (15:42 -0400)]
[clangd] Color dependent names based on their heuristic target if they have one
Summary: Fixes https://github.com/clangd/clangd/issues/297
Subscribers: ilya-biryukov, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76896
River Riddle [Wed, 15 Apr 2020 02:29:54 +0000 (19:29 -0700)]
[llvm][StringExtras] Add missing include of cctype
This fixes build breakages on windows.
QingShan Zhang [Wed, 15 Apr 2020 02:17:36 +0000 (02:17 +0000)]
[NFC][DAGCombine] Change the value of NegatibleCost to make it align with the semantics
This is a minor NFC change to make the code more clear. We have the NegatibleCost that
has cheaper, neutral, and expensive. Typically, the smaller one means the less cost.
It is inverse for current implementation, which makes following code not easy to read.
If (CostX > CostY) negate(X)
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D77993
Matt Arsenault [Tue, 7 Apr 2020 15:33:26 +0000 (11:33 -0400)]
AMDGPU/GlobalISel: Fix selection of scalar f64 G_FABS
This wasn't covered by existing tablegen patterns, but also suffers
the same issues as G_FNEG. Workaround them by manually selecting, like
G_FNEG.
Matt Arsenault [Tue, 7 Apr 2020 13:32:51 +0000 (09:32 -0400)]
TableGen/GlobalISel: Fix constraining REG_SEQUENCE operands
This was hitting the default instruction constraint code which uses
the register classes in the instruction def, which REG_SEQUENCE does
not have.
Fixes not constraining the register class for AMDGPU fneg/fabs
patterns, which would fail when the use was another generic,
unconstrained instruction.
Another oddity I noticed is that the temporary registers are created
with an unnecessary, but incorrect 16-bit LLT but this shouldn't
matter.
I'm also still unclear why root and sub-instructions have to be
handled differently.
River Riddle [Wed, 15 Apr 2020 01:54:23 +0000 (18:54 -0700)]
[llvm][StringExtras] Merge StringExtras from MLIR into LLVM
Summary:
This revision adds two utilities currently present in MLIR to LLVM StringExtras:
* convertToSnakeFromCamelCase
Convert a string from a camel case naming scheme, to a snake case scheme
* convertToCamelFromSnakeCase
Convert a string from a snake case naming scheme, to a camel case scheme
Differential Revision: https://reviews.llvm.org/D78167
Reid Kleckner [Wed, 8 Apr 2020 21:05:54 +0000 (14:05 -0700)]
[MS] Fix packed struct layout for arrays of aligned non-record types
In particular, this affects Clang's vectors. Users encounter this issue
when a struct contains an __m128 type.
Fixes PR45420
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D77754
Teresa Johnson [Mon, 13 Apr 2020 02:12:38 +0000 (19:12 -0700)]
Allow disabling of vectorization using internal options
Summary:
Currently, the internal options -vectorize-loops, -vectorize-slp, and
-interleave-loops do not have much practical effect. This is because
they are used to initialize the corresponding flags in the pass
managers, and those flags are then unconditionally overwritten when
compiling via clang or via LTO from the linkers. The only exception was
-vectorize-loops via opt because of some special hackery there.
While vectorization could still be disabled when compiling via clang,
using -fno-[slp-]vectorize, this meant that there was no way to disable
it when compiling in LTO mode via the linkers. This only affected
ThinLTO, since for regular LTO vectorization is done during the compile
step for scalability reasons. For ThinLTO it is invoked in the LTO
backends. See also the discussion on PR45434.
This patch makes it so the internal options can actually be used to
disable these optimizations. Ultimately, the best long term solution is
to mark the loops with metadata (similar to the approach used to fix
-fno-unroll-loops in D77058), but this enables a shorter term
workaround, and actually makes these internal options useful.
I constant propagated the initial values of these internal flags into
the pass manager flags (for some reasons vectorize-loops and
interleave-loops were initialized to true, while vectorize-slp was
initialized to false). As mentioned above, they are overwritten
unconditionally so this doesn't have any real impact, and these initial
values aren't particularly meaningful.
I then changed the passes to check the internl values and return without
performing the associated optimization when false (I changed the default
of -vectorize-slp to true so the options behave similarly). I was able
to remove the hackery in opt used to get -vectorize-loops=false to work,
as well as a special option there used to disable SLP vectorization.
Finally, I changed thinlto-slp-vectorize-pm.c to:
a) Only test SLP (moved the loop vectorization checking to a new test).
b) Use code that is slp vectorized when it is enabled, and check that
instead of whether the pass is enabled.
c) Test the new behavior of -vectorize-slp.
d) Test both pass managers.
The loop vectorization (and associated interleaving) testing I moved to
a new thinlto-loop-vectorize-pm.c test, with several changes:
a) Changed the flags on the interleaving testing so that it will
actually interleave, and check that.
b) Test the new behavior of -vectorize-loops and -interleave-loops.
c) Test both pass managers.
Reviewers: fhahn, wmi
Subscribers: hiraditya, steven_wu, dexonsmith, cfe-commits, davezarzycki, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77989
Hubert Tong [Wed, 15 Apr 2020 00:51:50 +0000 (20:51 -0400)]
[test][NFC] Use plain FileCheck in statepoint-stackmap-size.ll
Summary:
The test in question uses a non-portable `grep -A` option in conjunction
with `wc -l`. `FileCheck` can be used to do the check without using
these extra utilities.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D78060
Tony [Thu, 20 Feb 2020 07:08:59 +0000 (02:08 -0500)]
[AMDGPU] Update DWARF proposal
- Unify the sections on DWARF expression and location lists.
- Allow a location description to have one or more single location
descriptions.
- Define context of DWARF expression that includes an initial
stack. Allow initial stack to be used when evaluating location list
expression with overlapping PC ranges.
- Reorganize the DWARF proposal in AMDGPUUsage so suitable for
submission to the DWARF site.
- Replace CFI instruction DW_CFA_LLVM_def_cfa_aspace with
DW_CFA_def_aspace_cfa and DW_CFA_def_aspace_cfa_sf. This is to avoid
the problem that DW_CFA_def_cfa and DW_CFA_def_cfa_sf cannot use a
register that is not the size of an address in the CFA address
space.
- Clarify DWARF address class and DWARF address space. Define language
values for DWARF address classes and specify how they are used by
some common source languages.
- Define rules for accessing registers and derefencing memory when the
type size and register size or byte size operand do not match.
- Numerous cleanups for consistency.
Differential Revision: https://reviews.llvm.org/D70523
Jason Molenda [Tue, 14 Apr 2020 23:51:58 +0000 (16:51 -0700)]
Bug where insn-based unwind plans on arm64 could be wrong
Fix a bug where UnwindAssemblyInstEmulation would confuse which
register is used to compute the Canonical Frame Address after it
had branched over a mid-function epilogue (where the CFA reg changes
from $fp to $sp in the process of epiloguing). Reinstate the
correct CFA register after we forward the unwind rule for branch
targets. The failure mode was that UnwindAssemblyInstEmulation
would think CFA was set in terms of $sp after one of these epilogues,
and if it sees modifications to $sp after the branch target, it would
change the CFA offset in the unwind rule -- even though the CFA is
defined in terms of $fp and the $sp changes are irrelevant to correct
calculation.
<rdar://problem/
60300528>
Differential Revision: https://reviews.llvm.org/D78077
Adam Straw [Tue, 14 Apr 2020 19:49:18 +0000 (22:49 +0300)]
[mlir] Fix assert on signed integer type in EDSC
Integer type in Std dialect is signless so we should be checking
for signless integer type instead of signed integer type in EDSC.
Differential Revision: https://reviews.llvm.org/D78144
Adrian Prantl [Tue, 14 Apr 2020 22:55:00 +0000 (15:55 -0700)]
Initiallize property getters as being property accessors (NFC)
This is a no-op because it is set later on unconditionally again, but
it's far less confusing this way and consistent with how the setters
are initialized.
David Blaikie [Tue, 14 Apr 2020 22:17:24 +0000 (15:17 -0700)]
llvm-dwarfdump: Don't try to parse a debug_loclist contribution if this CU has no DW_AT_loclists_base
llvm-dwarfdump was trying to parse debug_loclists even in the absence of
a loclists_base if there was a loclists section at all.
Hubert Tong [Tue, 14 Apr 2020 22:36:50 +0000 (18:36 -0400)]
[www] Turn 'Clang 10' boxes green in C++ status pages to reflect release
Summary:
The 'Clang 10' boxes should be green since Clang 10 has been released.
Reviewers: rsmith, aaron.ballman
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D78068
LLVM GN Syncbot [Tue, 14 Apr 2020 22:33:30 +0000 (22:33 +0000)]
[gn build] Port
ebf190fcda0
LLVM GN Syncbot [Tue, 14 Apr 2020 22:33:30 +0000 (22:33 +0000)]
[gn build] Port
8cbe371c28a
LLVM GN Syncbot [Tue, 14 Apr 2020 22:33:29 +0000 (22:33 +0000)]
[gn build] Port
204c3b55162
Eli Friedman [Tue, 7 Apr 2020 21:05:29 +0000 (14:05 -0700)]
[SelectionDAG] Always preserve offset in MachinePointerInfo
Previously, getWithOffset() would drop the offset if the base was null.
Because of this, MachineMemOperand would return the wrong result from
getAlign() in these cases. MachineMemOperand stores the alignment of
the pointer without the offset.
A bunch of MIR tests changed because we print the offset now.
Split off from D77687.
Differential Revision: https://reviews.llvm.org/D78049
Hubert Tong [Tue, 14 Apr 2020 22:24:37 +0000 (18:24 -0400)]
[llvm-objdump][Wasm][NFC] Create WasmDump.h
Summary:
Continuing from D77285, the external interfaces implemented by
`WasmDump.cpp` are now declared in `WasmDump.h` and moved into the
`llvm::objdump` namespace.
Reviewers: jhenderson, MaskRay, DiggerLin, jasonliu, daltenty
Reviewed By: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D77990
Ayke van Laethem [Tue, 14 Apr 2020 15:30:24 +0000 (17:30 +0200)]
[AVR] Define __ELF__
This symbol is defined in avr-gcc. Because AVR normally uses the ELF
format, define the symbol unconditionally.
This patch is needed to get Clang to compile compiler-rt.
Differential Revision: https://reviews.llvm.org/D78117
River Riddle [Tue, 14 Apr 2020 21:54:15 +0000 (14:54 -0700)]
[mlir][NFC] Remove the STLExtras.h header file now that it has been merged into LLVM.
Now that no more utilities exist within, this file can be deleted.
Differential Revision: https://reviews.llvm.org/D78079
River Riddle [Tue, 14 Apr 2020 21:53:50 +0000 (14:53 -0700)]
[llvm][ADT] Move TypeSwitch class from MLIR to LLVM
This class implements a switch-like dispatch statement for a value of 'T' using dyn_cast functionality. Each `Case<T>` takes a callable to be invoked if the root value isa<T>, the callable is invoked with the result of dyn_cast<T>() as a parameter.
Differential Revision: https://reviews.llvm.org/D78070
River Riddle [Tue, 14 Apr 2020 21:53:28 +0000 (14:53 -0700)]
[llvm][STLExtras] Move the algorithm `interleave*` methods from MLIR to LLVM
These have proved incredibly useful for interleaving values between a range w.r.t to streams. After this revision, the mlir/Support/STLExtras.h is empty. A followup revision will remove it from the tree.
Differential Revision: https://reviews.llvm.org/D78067
River Riddle [Tue, 14 Apr 2020 21:53:07 +0000 (14:53 -0700)]
[llvm][STLExtras] Move various iterator/range utilities from MLIR to LLVM
This revision moves the various range utilities present in MLIR to LLVM to enable greater reuse. This revision moves the following utilities:
* indexed_accessor_*
This is set of utility iterator/range base classes that allow for building a range class where the iterators are represented by an object+index pair.
* make_second_range
Given a range of pairs, returns a range iterating over the `second` elements.
* hasSingleElement
Returns if the given range has 1 element. size() == 1 checks end up being very common, but size() is not always O(1) (e.g., ilist). This method provides O(1) checks for those cases.
Differential Revision: https://reviews.llvm.org/D78064
River Riddle [Tue, 14 Apr 2020 21:52:52 +0000 (14:52 -0700)]
[llvm][STLExtras] Add various type_trait utilities currently present in MLIR
This revision moves several type_trait utilities from MLIR into LLVM. Namely, this revision adds:
is_detected - This matches the experimental std::is_detected
is_invocable - This matches the c++17 std::is_invocable
function_traits - A utility traits class for getting the argument and result types of a callable type
Differential Revision: https://reviews.llvm.org/D78059
River Riddle [Tue, 14 Apr 2020 21:52:42 +0000 (14:52 -0700)]
[llvm][DenseMapInfo] Add an info specialization for std::tuple
This revision adds a DenseMapInfo overload for std::tuples whose elements all have a DenseMapInfo. The implementation is similar to that of std::pair, and has been used within MLIR for over a year.
Differential Revision: https://reviews.llvm.org/D78057
Sean Silva [Tue, 14 Apr 2020 20:30:44 +0000 (13:30 -0700)]
Use index for shape.to_extent_tensor
Summary:
Also,
- add IndexTensor to OpBase.td
- fix typo in the op name. It was mistakenly `to_tensor` instead of
`to_extent_tensor`.
Differential Revision: https://reviews.llvm.org/D78149
Eli Friedman [Thu, 26 Mar 2020 17:09:13 +0000 (10:09 -0700)]
Enable new passmanager plugin support for LTO.
This should make both static and dynamic NewPM plugins work with LTO.
And as a bonus, it makes static linking of OldPM plugins more reliable
for plugins with both an OldPM and NewPM interface.
I only implemented the command-line flag to specify NewPM plugins in
llvm-lto2, to show it works. Support can be added for other tools later.
Differential Revision: https://reviews.llvm.org/D76866
Jonas Devlieghere [Tue, 14 Apr 2020 21:51:35 +0000 (14:51 -0700)]
[lldb/Test] s/lldb-repo/lldb-repro/ (NFC)
Mircea Trofin [Tue, 14 Apr 2020 19:33:49 +0000 (12:33 -0700)]
[llvm][NFC][CallSite] Remove Implementation uses of CallSite
Reviewers: dblaikie, davidxl, craig.topper
Subscribers: arsenm, dschuff, nemanjai, jvesely, nhaehnle, sbc100, jgravelle-google, hiraditya, aheejin, kbarton, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78142
Jonas Devlieghere [Mon, 13 Apr 2020 17:23:35 +0000 (10:23 -0700)]
[lldb/Test] Use RAII for reproducer instrumentation data in unittest.
Use a RAII object to manage the lifetime of the reproducer
instrumentation data.
David Blaikie [Tue, 14 Apr 2020 21:21:33 +0000 (14:21 -0700)]
Reapply "llvm-dwarfdump: Report errors when failing to parse loclist/debug_loc entries""
Originally committed as
416fa7720e30750939c53935051c6c750dfad2c2
Reverted (due to buildbot failure - breaking lldb) in
7a45aeacf3a23449039ef2efcf476995ae1c7007.
I still can't seem to build lldb locally, but Pavel Labath has kindly
provided a potential fix to preserve the old behavior in lldb by
registering a simple recoverable error handler there that prints to the
desired stream in lldb, rather than stderr.
MaheshRavishankar [Tue, 14 Apr 2020 18:54:15 +0000 (11:54 -0700)]
[mlir][Linalg] Handle null affine map returns from inversePermutation.
The inversePermutation method returns a null map on failure. Update
uses of this method within Linalg to handle this. In LinalgToLoops the
null return value was used to emit scalar code. Modify that to return
failure, and emit scalar implementation when affine map is "empty",
i.e. 1 dims, 0 symbols and no result exprs.
Differential Revision: https://reviews.llvm.org/D77964
George Burgess IV [Tue, 14 Apr 2020 21:29:29 +0000 (14:29 -0700)]
[CodeGen] clarify a comment; NFC
Prompted by discussion on https://reviews.llvm.org/D78148.
Christopher Tetreault [Tue, 14 Apr 2020 20:46:27 +0000 (13:46 -0700)]
[SVE] Remove calls to getBitWidth from Transforms
Reviewers: efriedma, sdesmalen, spatel, eugenis, chandlerc
Reviewed By: efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77896
Juneyoung Lee [Tue, 14 Apr 2020 01:28:45 +0000 (10:28 +0900)]
[ValueTracking] Implement canCreatePoison
Summary:
This PR adds `canCreatePoison(Instruction *I)` which returns true if `I` can generate poison from non-poison
operands.
Reviewers: spatel, nikic, lebedev.ri
Reviewed By: spatel
Subscribers: hiraditya, llvm-commits, regehr, nlopes
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77890
Thomas Lively [Tue, 14 Apr 2020 02:16:20 +0000 (19:16 -0700)]
[lld][WebAssembly] Do not require --shared-memory with --relocatable
Summary:
wasm-ld requires --shared-memory to be passed when the atomics feature
is enabled because historically atomic operations were only valid with
shared memories. This change relaxes that requirement for when
building relocatable objects because their memories are not
meaningful. This technically maintains the validity of object files
because the threads spec now allows atomic operations with unshared
memories, although we don't support that elsewhere in the tools yet.
This fixes and Emscripten build issue reported at
https://bugs.chromium.org/p/webp/issues/detail?id=463.
Reviewers: sbc100
Subscribers: dschuff, jgravelle-google, aheejin, sunfish, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78072
Christopher Tetreault [Tue, 14 Apr 2020 20:30:18 +0000 (13:30 -0700)]
[SVE] Remove calls to getBitWidth from IR
Reviewers: efriedma, sdesmalen, RKSimon, majnemer
Reviewed By: majnemer
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77897
Joerg Sonnenberger [Tue, 14 Apr 2020 13:13:13 +0000 (15:13 +0200)]
Emit Objective-C constructors as writable
They end up as .init_array sections and those need to be writable,
otherwise bad merging will happen.
Sjoerd Meijer [Tue, 14 Apr 2020 20:04:24 +0000 (21:04 +0100)]
NFC: update of ARM llvm regr test, follow up of
9633fc14aef7ee3da3b.
Christopher Tetreault [Tue, 14 Apr 2020 19:55:48 +0000 (12:55 -0700)]
[SVE] Remove calls to getBitWidth from clang
Reviewers: efriedma
Reviewed By: efriedma
Subscribers: tschuett, rkruppe, psnobl, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77903
Sam Clegg [Tue, 31 Mar 2020 00:37:01 +0000 (17:37 -0700)]
[WebAssembly] Emit .llvmcmd and .llvmbc as custom sections
Fixes: https://bugs.llvm.org/show_bug.cgi?id=45362
Differential Revision: https://reviews.llvm.org/D77115
Louis Dionne [Tue, 14 Apr 2020 20:20:00 +0000 (16:20 -0400)]
[libc++] run.py: Create directory hierarchy if it does not exist
This is useful when replaying tests after the fact and the directories
don't exist anymore.
Huihui Zhang [Tue, 14 Apr 2020 19:38:03 +0000 (12:38 -0700)]
[InstCombine][SVE] Fix visitGetElementPtrInst for scalable type.
Summary:
This patch fix the following issues in InstCombiner::visitGetElementPtrInst
1. Skip for scalable type if transformation requires fixed size number of
vector element.
2. Skip for scalable type if transformation relies on compile-time known type
alloc size.
3. Use VectorType::getElementCount when scalable property is used to construct
new VectorType.
4. Use TypeSize::getKnownMinSize when minimal size of a scalable type is valid to determine GEP 'inbounds'.
5. Explicitly call TypeSize::getFixedSize to avoid implicit type conversion to uint64_t.
Reviewers: sdesmalen, efriedma, spatel, ctetreau
Reviewed By: efriedma
Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78081
Walter Erquinigo [Fri, 10 Apr 2020 15:23:42 +0000 (08:23 -0700)]
[lldb] Fix a typo in a test name
Summary:
Removing the Test prefix from the file name and its usages. The standard is using only Test as a suffix.
This was correctly pointed out in https://reviews.llvm.org/D77444.
Reviewers: labath, clayborg
Subscribers: mgorny, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D77878
MaheshRavishankar [Tue, 14 Apr 2020 19:13:27 +0000 (12:13 -0700)]
[mlir][Linalg] NFC: Add missing comments from earlier commit (D77965)
Differential Revision: https://reviews.llvm.org/D78140
Louis Dionne [Tue, 14 Apr 2020 19:07:38 +0000 (15:07 -0400)]
[libc++] CI: Allow pointing to specific dylib roots during backdeployment testing
This can be useful when the CI jobs don't have internet access.
Sanjay Patel [Tue, 14 Apr 2020 18:41:35 +0000 (14:41 -0400)]
[InstCombine] try to reduce more shuffles with bitcasted operand
This is the widen mask element sibling to D76844.
shuf (bitcast X), undef, Mask --> bitcast X'
http://volta.cs.utah.edu:8080/z/4dt3V8
Louis Dionne [Tue, 14 Apr 2020 16:51:39 +0000 (12:51 -0400)]
[libc++] Add .verify.cpp tests to the new format
With this patch, .verify.cpp tests explicitly require clang-verify, but
no other test types require clang-verify out of the box. This will allow
making several .fail.cpp tests that don't have any clang-verify markup
to be just .compile.fail.cpp tests, which in turn should allow removing
a long standing workaround that requires parsing tests to detect whether
they have any clang-verify markup in them.
Thomas Raoux [Mon, 13 Apr 2020 19:26:44 +0000 (12:26 -0700)]
[AntidepBreaker] Move AntiDepBreaker to include folder.
This allows AntiDepBreaker to be used in target specific postRA
scheduler.
Differential Revision: https://reviews.llvm.org/D78047
Jon Roelofs [Tue, 14 Apr 2020 16:46:21 +0000 (10:46 -0600)]
[clang] Add missing FileCheck colons