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
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
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.
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
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
Jinsong Ji [Fri, 10 Apr 2020 15:03:16 +0000 (15:03 +0000)]
[NFC][UpdateTestChecks] Fix typos in comments
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
Simon Pilgrim [Fri, 10 Apr 2020 14:46:42 +0000 (15:46 +0100)]
PromoteMemToReg.h - remove unused llvm::AliasSetTracker 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.
Simon Pilgrim [Fri, 10 Apr 2020 14:30:14 +0000 (15:30 +0100)]
VNCoercion.h - remove unused llvm::Function 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.
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
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
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
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().
Sanjay Patel [Fri, 10 Apr 2020 12:21:52 +0000 (08:21 -0400)]
[InstSimplify] add tests for folding bool select to logic; NFC
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
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.
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'.
Nico Weber [Fri, 10 Apr 2020 10:16:59 +0000 (06:16 -0400)]
[gn build] add scan-build target
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.
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
Brian Cain [Thu, 9 Apr 2020 05:14:02 +0000 (00:14 -0500)]
[libunwind] add hexagon support
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)
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
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.
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
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
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
Michael Liao [Fri, 10 Apr 2020 07:21:14 +0000 (03:21 -0400)]
Fix `-Wextra` warning. NFC.
Michael Liao [Wed, 8 Apr 2020 19:02:52 +0000 (15:02 -0400)]
Remove extra whitespace. NFC.
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.
Med Ismail Bennani [Fri, 10 Apr 2020 06:36:43 +0000 (08:36 +0200)]
[lldb/Reproducers] Fix typo introduced when disabling register failing tests
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
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.
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
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
John McCall [Fri, 10 Apr 2020 04:13:49 +0000 (00:13 -0400)]
Rename OptimalLayout to OptimizedStructLayout at Chris's request.
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?))
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
LLVM GN Syncbot [Fri, 10 Apr 2020 03:20:36 +0000 (03:20 +0000)]
[gn build] Port
4275eb13315
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
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
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
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
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
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
Alina Sbirlea [Fri, 10 Apr 2020 01:37:13 +0000 (18:37 -0700)]
Update empty() call with namespace to clear ambiguity.
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
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
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.
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
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.
LLVM GN Syncbot [Fri, 10 Apr 2020 00:51:20 +0000 (00:51 +0000)]
[gn build] Port
1229245df7c
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
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
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
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
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
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
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.
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.
LLVM GN Syncbot [Thu, 9 Apr 2020 22:50:22 +0000 (22:50 +0000)]
[gn build] Port
a79b2fc44bf
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
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
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)
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.
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
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
Med Ismail Bennani [Thu, 9 Apr 2020 22:10:22 +0000 (00:10 +0200)]
[lldb] Fix breakeage introduced by llvm::LoadInst api change
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
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
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.
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
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
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
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
Christopher Tetreault [Thu, 9 Apr 2020 20:46:05 +0000 (13:46 -0700)]
Fix syntax error
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
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
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
James Y Knight [Thu, 9 Apr 2020 20:34:14 +0000 (16:34 -0400)]
Fix an unused-variable warning in Release mode.
Eli Friedman [Sat, 4 Apr 2020 04:27:00 +0000 (21:27 -0700)]
[opaque pointers] Fix uses of deprecated CreateCall/CreateInvoke.
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
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
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
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
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
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
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
Med Ismail Bennani [Thu, 9 Apr 2020 19:54:17 +0000 (21:54 +0200)]
[lldb/test] Fix typo to disable reproducer's test phase
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
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
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
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
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.
Med Ismail Bennani [Thu, 9 Apr 2020 19:05:17 +0000 (21:05 +0200)]
[lldb] Disable failing register tests for reproducers
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.
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
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