20 months agoAdd a newline at the end of the file
Rui Ueyama [Wed, 4 Sep 2019 06:33:46 +0000 (06:33 +0000)]
Add a newline at the end of the file

llvm-svn: 370841

20 months ago[lldb] [test] Un-mark two commands/register tests XFAIL
Michal Gorny [Wed, 4 Sep 2019 06:10:02 +0000 (06:10 +0000)]
[lldb] [test] Un-mark two commands/register tests XFAIL

llvm-svn: 370840

20 months ago[Clang Interpreter] Initial patch for the constexpr interpreter
Nandor Licker [Wed, 4 Sep 2019 05:49:41 +0000 (05:49 +0000)]
[Clang Interpreter] Initial patch for the constexpr interpreter

This patch introduces the skeleton of the constexpr interpreter,
capable of evaluating a simple constexpr functions consisting of
if statements. The interpreter is described in more detail in the
RFC. Further patches will add more features.

Reviewers: Bigcheese, jfb, rsmith

Subscribers: bruno, uenoku, ldionne, Tyker, thegameg, tschuett, dexonsmith, mgorny, cfe-commits

Tags: #clang

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

llvm-svn: 370839

20 months ago[llvm-objcopy] Fix some identifier names in comments. NFC
Fangrui Song [Wed, 4 Sep 2019 03:54:43 +0000 (03:54 +0000)]
[llvm-objcopy] Fix some identifier names in comments. NFC

llvm-svn: 370838

20 months ago[RISCV] Enable tail call opt for variadic function
Jim Lin [Wed, 4 Sep 2019 02:03:36 +0000 (02:03 +0000)]
[RISCV] Enable tail call opt for variadic function

Summary: Tail call opt can treat variadic function call the same as normal function call

Reviewers: mgrang, asb, lenary, lewis-revill

Reviewed By: lenary

Subscribers: luismarques, pzheng, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, s.egerton, llvm-commits

Tags: #llvm

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

llvm-svn: 370835

20 months ago[MemorySSA] Move two verify calls under expensive checks.
Alina Sbirlea [Wed, 4 Sep 2019 00:44:54 +0000 (00:44 +0000)]
[MemorySSA] Move two verify calls under expensive checks.

llvm-svn: 370831

20 months ago[NFC][llvm-ifs] Adding .ifs files to the test list for llvm-ifs tool.
Puyan Lotfi [Wed, 4 Sep 2019 00:07:49 +0000 (00:07 +0000)]
[NFC][llvm-ifs] Adding .ifs files to the test list for llvm-ifs tool.

llvm-svn: 370830

20 months agoRevert [Windows] Disable TrapUnreachable for Win64, add SEH_NoReturn
Reid Kleckner [Tue, 3 Sep 2019 22:27:27 +0000 (22:27 +0000)]
Revert [Windows] Disable TrapUnreachable for Win64, add SEH_NoReturn

This reverts r370525 (git commit 0bb1630685fba255fa93def92603f064c2ffd203)
Also reverts r370543 (git commit 185ddc08eed6542781040b8499ef7ad15c8ae9f4)

The approach I took only works for functions marked `noreturn`. In
general, a call that is not known to be noreturn may be followed by
unreachable for other reasons. For example, there could be multiple call
sites to a function that throws sometimes, and at some call sites, it is
known to always throw, so it is followed by unreachable. We need to
insert an `int3` in these cases to pacify the Windows unwinder.

I think this probably deserves its own standalone, Win64-only fixup pass
that runs after block placement. Implementing that will take some time,
so let's revert to TrapUnreachable in the mean time.

llvm-svn: 370829

20 months ago[WebAssembly] Compare functions by names in Emscripten Sjlj
Heejin Ahn [Tue, 3 Sep 2019 22:26:49 +0000 (22:26 +0000)]
[WebAssembly] Compare functions by names in Emscripten Sjlj

This removes all string constants for function names and compares
functions by string directly when needed. Many of these constants are
used only once or twice so the benefit of defining them separately is
not very clear, and this actually fixes a bug.

When we already have a `malloc` declaration which is an alias to
something else within the module,
@malloc = weak hidden alias i8* (i32), i8* (i32)* @dlmalloc
(this happens compiling with emscripten with `-s WASM_OBJECT_FILES=0`
because all bc files are merged before being fed into `wasm-ld` which
runs the backend optimizations as LTO)

`Module::getFunction("malloc")` in `canLongjmp` returns `nullptr`
because `Module::getFunction` dyncasts pointer into `Function`, but the
alias is a `GlobalValue` but not a `Function`. This makes `canLongjmp`
return false for `malloc` in this case, and we end up adding a lot of
longjmp handling code around malloc. This is not only a code size
increase but actually a bug because `malloc` is used in the entry block
when preparing for setjmp tables for emscripten sjlj handling, and this
makes initial setjmp preparation, which has to happen in the entry
block, move to another split block, and this interferes with SSA update

This also adds two more functions, `getTempRet0` and `setTempRet0`, in
the list of not longjmp-able functions.

Fixes https://github.com/emscripten-core/emscripten/issues/8935.

Reviewers: sbc100

Subscribers: mehdi_amini, jgravelle-google, hiraditya, sunfish, dexonsmith, dschuff, llvm-commits

Tags: #llvm

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

llvm-svn: 370828

20 months ago[llvm-profdata] Add mode to recover from profile read failures
Vedant Kumar [Tue, 3 Sep 2019 22:23:16 +0000 (22:23 +0000)]
[llvm-profdata] Add mode to recover from profile read failures

Add a mode in which profile read errors are not immediately treated as
fatal. In this mode, merging makes forward progress and reports failure
only if no inputs can be read.

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

llvm-svn: 370827

20 months ago[InstrProf] Tighten a check for malformed data records in raw profiles
Vedant Kumar [Tue, 3 Sep 2019 22:23:14 +0000 (22:23 +0000)]
[InstrProf] Tighten a check for malformed data records in raw profiles

The check needs to validate a counter offset before performing pointer
arithmetic with the (potentially corrupt) offset.

Found by UBSan's pointer overflow check.


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

llvm-svn: 370826

20 months ago[libclang][test][NFC] Split off fixture from tests.
Jan Korous [Tue, 3 Sep 2019 22:01:46 +0000 (22:01 +0000)]
[libclang][test][NFC] Split off fixture from tests.

llvm-svn: 370825

20 months ago[GVN] Remove a todo introduced w/rL370791
Philip Reames [Tue, 3 Sep 2019 21:56:17 +0000 (21:56 +0000)]
[GVN] Remove a todo introduced w/rL370791

When I dug into this, it turns out to be *much* more involved than I'd realized and doesn't actually simplify anything.

The general purpose of the leader table is that we want to find the most-dominating definition quickly.  The problem for equivalance folding is slightly different; we want to find the most dominating *value* whose definition block dominates our use quickly.

To make this change, we'd end up having to restructure the leader table (either the sorting thereof, or maybe even introducing multiple leader tables per value) and that complexity is just not worth it.

llvm-svn: 370824

20 months ago[AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.
Amara Emerson [Tue, 3 Sep 2019 21:42:32 +0000 (21:42 +0000)]
[AArch64][GlobalISel] Legalize 128 bit divisions to libcalls.

Now that we have the infrastructure to support s128 types as parameters
we can expand these to libcalls.

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

llvm-svn: 370823

20 months ago[GlobalISel][CallLowering] Add support for splitting types according to calling conve...
Amara Emerson [Tue, 3 Sep 2019 21:42:28 +0000 (21:42 +0000)]
[GlobalISel][CallLowering] Add support for splitting types according to calling conventions.

On AArch64, s128 types have to be split into s64 GPRs when passed as arguments.
This change adds the generic support in call lowering for dealing with multiple
registers, for incoming and outgoing args.

Support for splitting for return types not yet implemented.

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

llvm-svn: 370822

20 months ago[MemorySSA] Disable MemorySSA use.
Alina Sbirlea [Tue, 3 Sep 2019 21:20:46 +0000 (21:20 +0000)]
[MemorySSA] Disable MemorySSA use.

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

llvm-svn: 370821

20 months ago[Attributor] Use the delete API for liveness
Johannes Doerfert [Tue, 3 Sep 2019 20:42:16 +0000 (20:42 +0000)]
[Attributor] Use the delete API for liveness

Reviewers: uenoku, sstefan1

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

llvm-svn: 370818

20 months ago[Attributor] Deduce "no-capture" argument attribute
Johannes Doerfert [Tue, 3 Sep 2019 20:37:24 +0000 (20:37 +0000)]
[Attributor] Deduce "no-capture" argument attribute

Add the no-capture argument attribute deduction to the Attributor
fixpoint framework.

The new string attributed "no-capture-maybe-returned" is introduced to
allow deduction of no-capture through functions that "capture" an
argument but only by "returning" it. It is only used by the Attributor
for testing.

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

llvm-svn: 370817

20 months agoreland "[lld-link] implement -start-lib and -end-lib"
Bob Haarman [Tue, 3 Sep 2019 20:32:16 +0000 (20:32 +0000)]
reland "[lld-link] implement -start-lib and -end-lib"

This is a re-land of r370487 with a fix for the use-after-free bug
that rev contained.

This implements -start-lib and -end-lib flags for lld-link, analogous
to the similarly named options in ld.lld. Object files after
-start-lib are included in the link only when needed to resolve
undefined symbols. The -end-lib flag goes back to the normal behavior
of always including object files in the link. This mimics the
semantics of static libraries, but without needing to actually create
the archive file.

Reviewers: ruiu, smeenai, MaskRay

Reviewed By: ruiu, MaskRay

Subscribers: akhuang, llvm-commits

Tags: #llvm

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

llvm-svn: 370816

20 months ago[Driver] Remove duplicate option parsing (NFC)
Jonas Devlieghere [Tue, 3 Sep 2019 20:18:19 +0000 (20:18 +0000)]
[Driver] Remove duplicate option parsing (NFC)

We were checking OPT_no_use_colors three times, twice to disable colors
and once to enable debug mode. This simplifies things and now the option
is only checked once.

llvm-svn: 370814

20 months ago[CodeGen] Use FSHR in DAGTypeLegalizer::ExpandIntRes_MULFIX
Bjorn Pettersson [Tue, 3 Sep 2019 19:35:07 +0000 (19:35 +0000)]
[CodeGen] Use FSHR in DAGTypeLegalizer::ExpandIntRes_MULFIX

Simplify the right shift of the intermediate result (given
in four parts) by using funnel shift.

There are some impact on lit tests, but that seems to be
related to register allocation differences due to how FSHR
is expanded on X86 (giving a slightly different operand order
for the OR operations compared to the old code).

Reviewers: leonardchan, RKSimon, spatel, lebedev.ri

Reviewed By: RKSimon

Subscribers: hiraditya, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, s.egerton, pzheng, bevinh, llvm-commits

Tags: #llvm

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

llvm-svn: 370813

20 months agoSkip MCJIT unit tests if LLVM is not configured for native compilation
David Blaikie [Tue, 3 Sep 2019 19:30:45 +0000 (19:30 +0000)]
Skip MCJIT unit tests if LLVM is not configured for native compilation

Patch by Sergej Jaskiewicz!

Differential Revision: D67089

llvm-svn: 370812

20 months ago[MemorySSA] Re-enable MemorySSA use.
Alina Sbirlea [Tue, 3 Sep 2019 19:28:37 +0000 (19:28 +0000)]
[MemorySSA] Re-enable MemorySSA use.

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

llvm-svn: 370811

20 months ago[AMDGPU] Set default flat work group size to (1,256) for HIP
Yaxun Liu [Tue, 3 Sep 2019 18:50:24 +0000 (18:50 +0000)]
[AMDGPU] Set default flat work group size to (1,256) for HIP

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

llvm-svn: 370808

20 months agoUnbreak the build after r370798
Benjamin Kramer [Tue, 3 Sep 2019 18:24:56 +0000 (18:24 +0000)]
Unbreak the build after r370798

llvm-svn: 370807

20 months ago[MC] Pass through .code16/32/64 and .syntax unified for COFF
Reid Kleckner [Tue, 3 Sep 2019 18:16:52 +0000 (18:16 +0000)]
[MC] Pass through .code16/32/64 and .syntax unified for COFF

These flags should simply be passed through to the target, which will do
the right thing. Add an MC/X86 test that uses these directives with the
three primary object file formats and shows that they disassemble the
same everywhere.

There is a missing test for .code32 on Windows ARM, since I'm not sure
exactly how to construct one.

Fixes PR43203

llvm-svn: 370805

20 months ago[lldb][NFC] Remove lldbcurses.py
Raphael Isemann [Tue, 3 Sep 2019 18:11:54 +0000 (18:11 +0000)]
[lldb][NFC] Remove lldbcurses.py

Summary: This doesn't seem to be used anymore (at least I can't find any reference to this in the LLDB repo and it doesn't seem to be a standalone script). Git says this was once some new curses mode for viewing test results.

Reviewers: clayborg, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: JDevlieghere, lldb-commits

Tags: #lldb

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

llvm-svn: 370804

20 months ago[OPENMP][NVPTX]Fix parallel level counter in non-SPMD mode.
Alexey Bataev [Tue, 3 Sep 2019 18:11:50 +0000 (18:11 +0000)]
[OPENMP][NVPTX]Fix parallel level counter in non-SPMD mode.

In non-SPMD mode we may end up with the divergent threads when trying to
increment/decrement parallel level counter. It may lead to incorrect
calculations of the parallel level and wrong results when threads are
divergent. We need to reconverge the threads before trying to modify the
parallel level counter.

Reviewers: grokos, jdoerfert

Subscribers: guansong, openmp-commits, caomhin, kkwli0

Tags: #openmp

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

llvm-svn: 370803

20 months ago[lldb][NFC] Remove unused overload of File::Read
Raphael Isemann [Tue, 3 Sep 2019 18:11:14 +0000 (18:11 +0000)]
[lldb][NFC] Remove unused overload of File::Read

Summary: It's neither used or tested here and in swift-lldb, so let's get rid of it.

Reviewers: #lldb, davide

Reviewed By: #lldb, davide

Subscribers: davide, JDevlieghere, lldb-commits

Tags: #lldb

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

llvm-svn: 370802

20 months agoDisable stack exhaustion test on NetBSD, where either the detection or
Richard Smith [Tue, 3 Sep 2019 18:00:44 +0000 (18:00 +0000)]
Disable stack exhaustion test on NetBSD, where either the detection or
recovery mechanism does not appear to work.

llvm-svn: 370801

20 months agold.lld.1: explain long options may use one or two dashes
Ed Maste [Tue, 3 Sep 2019 17:58:30 +0000 (17:58 +0000)]
ld.lld.1: explain long options may use one or two dashes

Obtained from FreeBSD r329003

llvm-svn: 370800

20 months agold.lld.1: stylistic changes suggested by igor
Ed Maste [Tue, 3 Sep 2019 17:58:24 +0000 (17:58 +0000)]
ld.lld.1: stylistic changes suggested by igor

igor is an automated man page "proofreader" from FreeBSD - see

No content change.

llvm-svn: 370799

20 months ago[analyzer] NonNullParamChecker and CStringChecker parameter number in checker message
Kristof Umann [Tue, 3 Sep 2019 17:57:01 +0000 (17:57 +0000)]
[analyzer] NonNullParamChecker and CStringChecker parameter number in checker message

There are some functions which can't be given a null pointer as parameter either
because it has a nonnull attribute or it is declared to have undefined behavior
(e.g. strcmp()). Sometimes it is hard to determine from the checker message
which parameter is null at the invocation, so now this information is included
in the message.

This commit fixes https://bugs.llvm.org/show_bug.cgi?id=39358

Reviewed By: NoQ, Szelethus, whisperity

Patch by Tibor Brunner!

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

llvm-svn: 370798

20 months ago[libc++] Mark usage of _Atomic with __extension__
Louis Dionne [Tue, 3 Sep 2019 17:52:18 +0000 (17:52 +0000)]
[libc++] Mark usage of _Atomic with __extension__

An upcoming change in Clang will flag _Atomic as being a C11 extension.
To avoid generating this warning in libc++, this commit marks the only
use of _Atomic with the __extension__ extension, which suppresses such

llvm-svn: 370796

20 months ago[www] Mark items complete in Clang 9 as 'Clang 9' rather than 'SVN'.
Richard Smith [Tue, 3 Sep 2019 17:49:51 +0000 (17:49 +0000)]
[www] Mark items complete in Clang 9 as 'Clang 9' rather than 'SVN'.

Don't turn the boxes green yet, since Clang 9 hasn't been released.

llvm-svn: 370795

20 months ago[CUDA] Use activemask.b32 instruction to implement __activemask w/ CUDA-9.2+
Artem Belevich [Tue, 3 Sep 2019 17:31:58 +0000 (17:31 +0000)]
[CUDA] Use activemask.b32 instruction to implement __activemask w/ CUDA-9.2+

vote.ballot instruction is gone in recent CUDA versions and
vote.sync.ballot can not be used because it needs a thread mask parameter.
Fortunately PTX 6.2 (introduced with CUDA-9.2) provides activemask.b32
instruction for this.

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

llvm-svn: 370792

20 months ago[GVN] Propagate simple equalities from assumes within the tail of the block
Philip Reames [Tue, 3 Sep 2019 17:31:19 +0000 (17:31 +0000)]
[GVN] Propagate simple equalities from assumes within the tail of the block

This extends the existing logic for propagating constant expressions in an analogous manner for what we do across basic blocks. The core point is that we chose some order of operands, and canonicalize uses towards that one.

The heuristic used is inspired by the one used across blocks; in a follow up change, I'd plan to common them so that the cross block version uses the slightly stronger ordering herein.

As noted by the TODOs in the code, there's a good amount of room for improving the existing code and making it more powerful.  Some follow up work planned.

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

llvm-svn: 370791

20 months ago[AArch64][GlobalISel] Don't import i64imm_32bit pattern at -O0
Jessica Paquette [Tue, 3 Sep 2019 17:21:12 +0000 (17:21 +0000)]
[AArch64][GlobalISel] Don't import i64imm_32bit pattern at -O0

This pattern, when imported at -O0 adds an extra copy via the SUBREG_TO_REG.

This is because the SUBREG_TO_REG is not eliminated. At all other opt levels,
it is eliminated.

This is a 1% geomean code size savings at -O0 on CTMark.

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

llvm-svn: 370789

20 months agoRevert r370454 "[LoopIdiomRecognize] BCmp loop idiom recognition"
Roman Lebedev [Tue, 3 Sep 2019 17:14:56 +0000 (17:14 +0000)]
Revert r370454 "[LoopIdiomRecognize] BCmp loop idiom recognition"

https://bugs.llvm.org/show_bug.cgi?id=43206 was filed,
claiming that there is a miscompilation.
Reverting until i investigate.

This reverts commit r370454

llvm-svn: 370788

20 months ago[test] Addres TestConcurrentMany*.py flakiness on macOS
Jonas Devlieghere [Tue, 3 Sep 2019 17:04:04 +0000 (17:04 +0000)]
[test] Addres  TestConcurrentMany*.py flakiness on macOS

On "fast" macOS machines, the TestConcurrentMany*.py tests would fail
randomly with different numbers of breakpoints, watchpoints, etc. This
seems to be avoidable by giving the threads a little time to breath
after the passing the synchronization barrier. This is far from a
structural fix but it reduces the flakiness.

llvm-svn: 370785

20 months ago[Tests/GVN] Precommit requested test additions from D66977
Philip Reames [Tue, 3 Sep 2019 17:02:55 +0000 (17:02 +0000)]
[Tests/GVN] Precommit requested test additions from D66977

llvm-svn: 370784

20 months ago[libomptarget] Refactor activemask macro to inline function
Jon Chesterfield [Tue, 3 Sep 2019 16:31:30 +0000 (16:31 +0000)]
[libomptarget] Refactor activemask macro to inline function

[libomptarget] Refactor activemask macro to inline function
See also abandoned D66846, split into this diff and others.

Reviewers: jdoerfert, ABataev, grokos, ronlieb, gregrodgers

Reviewed By: jdoerfert, ABataev

Subscribers: openmp-commits

Tags: #openmp

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

llvm-svn: 370781

20 months agoclang: default to DWARF 4 for FreeBSD 12.0 and later
Ed Maste [Tue, 3 Sep 2019 16:30:21 +0000 (16:30 +0000)]
clang: default to DWARF 4 for FreeBSD 12.0 and later

Older FreeBSD versions included GDB 6.1 and had other tools that were
unable to handle debug information newer than DWARF 2.  Those tools have
since been updated.  (An old version of GDB is still kept for kernel
crash handling, but the kernel is compiled with an explicit -gdwarf2.)

Reviewed by: dim
Differential Revision: https://reviews.llvm.org/D66760

llvm-svn: 370779

20 months ago[test] Remove print statements and verify that the symbol exists
Jonas Devlieghere [Tue, 3 Sep 2019 16:26:44 +0000 (16:26 +0000)]
[test] Remove print statements and verify that the symbol exists

This removes some (commented out) print statements and adds a line that
verifies that uses image list to check the symbol.

llvm-svn: 370777

20 months ago[lldb][NFC] Disable added frame select and all log option test on windows
Raphael Isemann [Tue, 3 Sep 2019 16:21:57 +0000 (16:21 +0000)]
[lldb][NFC] Disable added frame select and all log option test on windows

llvm-svn: 370776

20 months ago[LifetimeAnalysis] Fix some false positives
Gabor Horvath [Tue, 3 Sep 2019 16:17:24 +0000 (16:17 +0000)]
[LifetimeAnalysis] Fix some false positives

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

llvm-svn: 370773

20 months ago[cmake] Improve comment describing the C4245 warning. NFCI.
Simon Pilgrim [Tue, 3 Sep 2019 16:11:37 +0000 (16:11 +0000)]
[cmake] Improve comment describing the C4245 warning. NFCI.

llvm-svn: 370772

20 months ago[SVE][Inline-Asm] Fix -Wimplicit-fallthrough in AArch64ISelLowering.cpp
Kerry McLaughlin [Tue, 3 Sep 2019 15:45:42 +0000 (15:45 +0000)]
[SVE][Inline-Asm] Fix -Wimplicit-fallthrough in AArch64ISelLowering.cpp

Summary: Adds break to 'x' case in getRegForInlineAsmConstraint added by D66302, fixing the unintentional fallthrough.

Reviewers: sdesmalen, rovka, cameron.mcinally, greened, gribozavr, ruiu

Reviewed By: sdesmalen

Subscribers: bjope, javed.absar, tschuett, kristof.beyls, rkruppe, psnobl, llvm-commits, cfe-commits

Tags: #llvm

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

llvm-svn: 370769

20 months ago[clangd] Move getBeginningOfIdentifier from ClangdUnit to SourceCode. Drop dependenci...
Sam McCall [Tue, 3 Sep 2019 15:34:47 +0000 (15:34 +0000)]
[clangd] Move getBeginningOfIdentifier from ClangdUnit to SourceCode. Drop dependencies on ClangdUnit from some headers. NFC

llvm-svn: 370768

20 months ago[analyzer] Add a checker option to detect nested dead stores
Kristof Umann [Tue, 3 Sep 2019 15:22:43 +0000 (15:22 +0000)]
[analyzer] Add a checker option to detect nested dead stores

Enables the users to specify an optional flag which would warn for more dead
Previously it ignored if the dead store happened e.g. in an if condition.

if ((X = generate())) { // dead store to X

This patch introduces the `WarnForDeadNestedAssignments` option to the checker,
which is `false` by default - so this change would not affect any previous
I have updated the code, tests and the docs as well. If I missed something, tell

I also ran the analysis on Clang which generated 14 more reports compared to the
unmodified version. All of them seemed reasonable for me.

Related previous patches:

Reviewers: NoQ, krememek, Szelethus, baloghadamsoftware

Reviewed By: Szelethus

Patch by Bal√°zs Benics!

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

llvm-svn: 370767

20 months ago[clangd] Remove redundant semi-colon.
Michael Liao [Tue, 3 Sep 2019 15:02:46 +0000 (15:02 +0000)]
[clangd] Remove redundant semi-colon.

llvm-svn: 370763

20 months ago[X86] Merge 2 consecutive HasInt256 branches. NFCI.
Simon Pilgrim [Tue, 3 Sep 2019 14:39:06 +0000 (14:39 +0000)]
[X86] Merge 2 consecutive HasInt256 branches. NFCI.

llvm-svn: 370761

20 months ago[clang-tidy] Fix a false positive in unused-using-decl check
Haojian Wu [Tue, 3 Sep 2019 14:13:00 +0000 (14:13 +0000)]
[clang-tidy] Fix a false positive in unused-using-decl check

The previous matcher "hasAnyTemplateArgument(templateArgument())" only
matches the first template argument, but the check wants to iterate all
template arguments. This patch fixes this.

Also some refactorings in this patch (to make the code reusable).

llvm-svn: 370760

20 months ago[clangd] Decouple macro/decl-under-cursor finding. Don't pretend there can be multipl...
Sam McCall [Tue, 3 Sep 2019 14:12:48 +0000 (14:12 +0000)]
[clangd] Decouple macro/decl-under-cursor finding. Don't pretend there can be multiple macros. NFC.

llvm-svn: 370759

20 months ago[clangd] Fix a data race in test code
Ilya Biryukov [Tue, 3 Sep 2019 13:56:03 +0000 (13:56 +0000)]
[clangd] Fix a data race in test code

Found by TSan, thanks bkramer for pointing this out.

llvm-svn: 370758

20 months ago[clangd] Wrong attribute on debug function in r370746
Sam McCall [Tue, 3 Sep 2019 13:54:27 +0000 (13:54 +0000)]
[clangd] Wrong attribute on debug function in r370746

llvm-svn: 370757

20 months agocompiler-rt: use 64-bit time_t for all FreeBSD archs except i386
Ed Maste [Tue, 3 Sep 2019 13:44:47 +0000 (13:44 +0000)]
compiler-rt: use 64-bit time_t for all FreeBSD archs except i386

At present only i386 has 32-bit time_t on FreeBSD.

Reviewed by: dim
Differential Revision: https://reviews.llvm.org/D66758

llvm-svn: 370756

20 months agocompiler-rt: use more __sanitizer_time_t on FreeBSD
Ed Maste [Tue, 3 Sep 2019 13:41:51 +0000 (13:41 +0000)]
compiler-rt: use more __sanitizer_time_t on FreeBSD

A few structs were using long for time_t members.  NFC.

Reviewed by: devnexen
Differential Revision: https://reviews.llvm.org/D66756

llvm-svn: 370755

20 months ago[SystemZ] Recognize INLINEASM_BR in backend.
Jonas Paulsson [Tue, 3 Sep 2019 13:31:22 +0000 (13:31 +0000)]
[SystemZ]  Recognize INLINEASM_BR in backend.

SystemZInstrInfo::analyzeBranch() needs to check for INLINEASM_BR
instructions, or it will crash.

Review: Ulrich Weigand
llvm-svn: 370753

20 months agogn build: (manually) merge r370499
Nico Weber [Tue, 3 Sep 2019 13:17:16 +0000 (13:17 +0000)]
gn build: (manually) merge r370499

llvm-svn: 370752

20 months agoFix MSVC "not all control paths return a value" warning. NFCI.
Simon Pilgrim [Tue, 3 Sep 2019 13:05:13 +0000 (13:05 +0000)]
Fix MSVC "not all control paths return a value" warning. NFCI.

llvm-svn: 370750

20 months agogn build: Merge r370746
Nico Weber [Tue, 3 Sep 2019 13:01:17 +0000 (13:01 +0000)]
gn build: Merge r370746

llvm-svn: 370749

20 months ago[lldb] Replace std::call_once() with llvm::call_once()
Michal Gorny [Tue, 3 Sep 2019 12:31:24 +0000 (12:31 +0000)]
[lldb] Replace std::call_once() with llvm::call_once()

Remove the single instance of std::call_once() in lldbTarget library
with llvm::call_once().  The former fails to build on NetBSD when
combined with llvm::once_flag (which replaced std::once_flag
in r369618), and combining the two is probably generally incorrect

llvm-svn: 370748

20 months ago[clangd] Add targetDecl(), which determines what declaration an AST node refers to.
Sam McCall [Tue, 3 Sep 2019 11:35:50 +0000 (11:35 +0000)]
[clangd] Add targetDecl(), which determines what declaration an AST node refers to.

This is the first part of an effort to "unbundle" our libIndex use into separate
concerns (AST traversal, token<->node mapping, node<->decl mapping,
decl<->decl relationshipes).

Currently, clangd relies on libIndex to associate tokens, AST nodes, and decls.
This leads to rather convoluted implementations of e.g. hover and
extract-function, which are not naturally thought of as indexing applications.

The idea is that by decoupling different concerns, we make them easier
to use, test, and combine, and more efficient when only one part is needed.
There are some synergies between e.g. traversal and finding
relationships between decls, hopefully the benefits outweight these.

Reviewers: kadircet, ilya-biryukov

Subscribers: mgorny, MaskRay, jkorous, arphaman, jfb, cfe-commits

Tags: #clang

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

llvm-svn: 370746

20 months ago[ARM] Ignore Implicit CPSR regs when lowering from Machine to MC operands
David Green [Tue, 3 Sep 2019 11:30:54 +0000 (11:30 +0000)]
[ARM] Ignore Implicit CPSR regs when lowering from Machine to MC operands

The code here seems to date back to r134705, when tablegen lowering was first
being added. I don't believe that we need to include CPSR implicit operands on
the MCInst. This now works more like other backends (like AArch64), where all
implicit registers are skipped.

This allows the AliasInst for CSEL's to match correctly, as can be seen in the
test changes.

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

llvm-svn: 370745

20 months ago[OpenCL] Drop spurious semicolon in generated file; NFC
Sven van Haastregt [Tue, 3 Sep 2019 11:23:24 +0000 (11:23 +0000)]
[OpenCL] Drop spurious semicolon in generated file; NFC

llvm-svn: 370744

20 months ago[SystemZ] Add support for fentry.
Jonas Paulsson [Tue, 3 Sep 2019 11:21:12 +0000 (11:21 +0000)]
[SystemZ]  Add support for fentry.

SystemZAsmPrinter now properly emits function calls to __fentry__.

Review: Ulrich Weigand
llvm-svn: 370743

20 months ago[ARM] Invert CSEL predicates if the opposite is a simpler constant to materialise
David Green [Tue, 3 Sep 2019 11:06:24 +0000 (11:06 +0000)]
[ARM] Invert CSEL predicates if the opposite is a simpler constant to materialise

This moves ConstantMaterializationCost into ARMBaseInstrInfo so that it can
also be used in ISel Lowering, adding codesize values to the computed costs, to
be able to compare either approximate instruction counts or codesize costs.

It also adds a HasLowerConstantMaterializationCost, which compares the
ConstantMaterializationCost of two values, returning true if the first is
smaller either in instruction count/codesize, or falling back to the other in
the case that they are equal.

This is used in constant CSEL lowering to invert the predicate if the opposite
is easier to materialise.

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

llvm-svn: 370741

20 months agoFixit for -Wfinal-dtor-non-final-class
David Bolvansky [Tue, 3 Sep 2019 10:54:25 +0000 (10:54 +0000)]
Fixit for -Wfinal-dtor-non-final-class

llvm-svn: 370740

20 months ago[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
David Green [Tue, 3 Sep 2019 10:53:07 +0000 (10:53 +0000)]
[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.

Arm 8.1-M adds a number of related CSEL instructions, including CSINC, CSNEG and CSINV. These choose between two values given the content in CPSR and a condition, performing an increment, negation or inverse of the false value.

This adds some selection for them, either from constant values or patterns. It does not include CSEL directly, which is currently not always making code better. It is still useful, but we will have to check more carefully where it should and shouldn't be used.

Code by Ranjeet Singh and Simon Tatham, with some modifications from me.

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

llvm-svn: 370739

20 months ago[ARM] Add csel tests. NFC
David Green [Tue, 3 Sep 2019 10:32:46 +0000 (10:32 +0000)]
[ARM] Add csel tests. NFC

llvm-svn: 370738

20 months agoAdded fixit notes for -Wfinal-dtor-non-final-class
David Bolvansky [Tue, 3 Sep 2019 10:32:21 +0000 (10:32 +0000)]
Added fixit notes for -Wfinal-dtor-non-final-class

llvm-svn: 370737

20 months ago[mips] Switch to the `.text` section after emitting asm file preamble
Simon Atanasyan [Tue, 3 Sep 2019 10:24:07 +0000 (10:24 +0000)]
[mips] Switch to the `.text` section after emitting asm file preamble

Now the last `.section` directive in the MIPS asm file preamble
is the `.section .mdebug.abi`. If assembler code injected for example
by the LLVM `module asm` or the C ` __asm` directives do not contain
explicit switching to the `.text` section it goes to the `.mdebug.abi`
section. It might be unexpected to the user and in fact for example
breaks building some existing code like FreeBSD libc [1].

The patch forces switching to the `.text` section after emitting MIPS
assembler file preamble.

[1] https://bugs.llvm.org/show_bug.cgi?id=43119

Fix PR43119.

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

llvm-svn: 370735

20 months ago[lldb] Test 'frame select -r' and fix that INT32_MIN breaks the option parser
Raphael Isemann [Tue, 3 Sep 2019 10:15:45 +0000 (10:15 +0000)]
[lldb] Test 'frame select -r' and fix that INT32_MIN breaks the option parser

llvm-svn: 370734

20 months ago[lldb][NFC] Test 'command delete'
Raphael Isemann [Tue, 3 Sep 2019 10:13:45 +0000 (10:13 +0000)]
[lldb][NFC] Test 'command delete'

llvm-svn: 370733

20 months ago[ARM] Fix MVE ldst offset ranges
David Green [Tue, 3 Sep 2019 09:57:02 +0000 (09:57 +0000)]
[ARM] Fix MVE ldst offset ranges

We were using isShiftedInt<7, Shift>(RHSC) to detect the ranges of offsets to
fold into MVE loads/stores. The instructions actually take a 7 bit unsigned
integer which is either added or subtracted. So something more like
isShiftedUInt<7, Shift>(abs(RHSC)).

Instead I've changes this to use the isScaledConstantInRange method, same as in
SelectT2AddrModeImm7Offset used by pre/post inc, which seemed to already be
getting this correct.

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

llvm-svn: 370731

20 months ago[ARM][MVE] Decoding of VMSR doesn't diagnose some unpredictable encodings
Oliver Stannard [Tue, 3 Sep 2019 09:55:30 +0000 (09:55 +0000)]
[ARM][MVE] Decoding of VMSR doesn't diagnose some unpredictable encodings

Decoding of VMSR doesn't diagnose some unpredictable encodings, as the unpredictable bits are not correctly set.

Diff-reduce this instruction's internals WRT VMRS so I can see the differences better. Mostly this is s/src/Rt/g.

Fill in the "should-be-(0)" bits.

Designate the Unpredictable{} bits for both VMRS and VMSR.

Patch by Mark Murray!

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

llvm-svn: 370729

20 months agoBug fix on function epilog optimization (ARM backend)
Oliver Stannard [Tue, 3 Sep 2019 09:51:19 +0000 (09:51 +0000)]
Bug fix on function epilog optimization (ARM backend)

To save a 'add sp,#val' instruction by adding registers to the final pop instruction,
the first register transferred by this pop instruction need to be found.
If the function to be optimized has a non-void return value, the operand list contains
r0 (implicit) which prevents the optimization to take place.
Therefore implicit register references should be skipped in the search loop,
because this registers are never popped from the stack.

Patch by Rainer Herbertz (rOptimizer)!

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

llvm-svn: 370728

20 months ago[ARM] More MVE load/store tests for offsets around the negative limit. NFC
David Green [Tue, 3 Sep 2019 09:42:16 +0000 (09:42 +0000)]
[ARM] More MVE load/store tests for offsets around the negative limit. NFC

llvm-svn: 370726

20 months ago[lldb][NFC] Test that enabling all log options doesn't crash anything
Raphael Isemann [Tue, 3 Sep 2019 09:40:25 +0000 (09:40 +0000)]
[lldb][NFC] Test that enabling all log options doesn't crash anything

llvm-svn: 370724

20 months ago[LV] Fix miscompiles by adding non-header PHI nodes to AllowedExit
Bjorn Pettersson [Tue, 3 Sep 2019 09:33:55 +0000 (09:33 +0000)]
[LV] Fix miscompiles by adding non-header PHI nodes to AllowedExit

Fold-tail currently supports reduction last-vector-value live-out's,
but has yet to support last-scalar-value live-outs, including
non-header phi's. As it relies on AllowedExit in order to detect
them and bail out we need to add the non-header PHI nodes to
AllowedExit, otherwise we end up with miscompiles.

Solves https://bugs.llvm.org/show_bug.cgi?id=43166

Reviewers: fhahn, Ayal

Reviewed By: fhahn, Ayal

Subscribers: anna, hiraditya, rkruppe, llvm-commits

Tags: #llvm

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

llvm-svn: 370721

20 months ago[LV] Precommit test case showing miscompile from PR43166. NFC
Bjorn Pettersson [Tue, 3 Sep 2019 09:33:40 +0000 (09:33 +0000)]
[LV] Precommit test case showing miscompile from PR43166. NFC

Summary:  Precommit test case showing miscompile from PR43166.

Reviewers: fhahn, Ayal

Reviewed By: fhahn

Subscribers: rkruppe, llvm-commits

Tags: #llvm

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

llvm-svn: 370720

20 months ago[lldb][NFC] Remove unnecessary constructors from invalid-args tests
Raphael Isemann [Tue, 3 Sep 2019 09:25:02 +0000 (09:25 +0000)]
[lldb][NFC] Remove unnecessary constructors from invalid-args tests

llvm-svn: 370719

20 months ago[lldb][NFC] Simplify script_alias test
Raphael Isemann [Tue, 3 Sep 2019 09:21:47 +0000 (09:21 +0000)]
[lldb][NFC] Simplify script_alias test

llvm-svn: 370718

20 months ago[lldb][NFC] Also test unaliasing in nested_alias test
Raphael Isemann [Tue, 3 Sep 2019 09:19:51 +0000 (09:19 +0000)]
[lldb][NFC] Also test unaliasing in nested_alias test

llvm-svn: 370717

20 months ago[ARM NEON] Avoid duplicated decarations
Diogo N. Sampaio [Tue, 3 Sep 2019 09:16:44 +0000 (09:16 +0000)]
[ARM NEON] Avoid duplicated decarations

The declaration of arm neon intrinsics that are
"big endian safe" print the same code for big
and small endian targets.
This patch avoids duplicates by checking if an
intrinsic is safe to have a single definition.
(decreases header 11k lines out of 73k).

Reviewers: t.p.northover, ostannard, labrinea

Reviewed By: ostannard

Subscribers: kristof.beyls, cfe-commits, olista01

Tags: #clang

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

llvm-svn: 370716

20 months ago[lldb] Test 'command' commands and fix the found crashes
Raphael Isemann [Tue, 3 Sep 2019 09:06:12 +0000 (09:06 +0000)]
[lldb] Test 'command' commands and fix the found crashes

llvm-svn: 370712

20 months ago[LV] Tail-folding, runtime scev checks
Sjoerd Meijer [Tue, 3 Sep 2019 08:53:02 +0000 (08:53 +0000)]
[LV] Tail-folding, runtime scev checks

Now that we allow tail-folding, not only when we optimise for size, make
sure we do not run in this assert.

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

llvm-svn: 370711

20 months ago[RISCV] Correct Logic around ilp32e macros
Sam Elliott [Tue, 3 Sep 2019 08:47:58 +0000 (08:47 +0000)]
[RISCV] Correct Logic around ilp32e macros

GCC seperates the `__riscv_float_abi_*` macros and the
`__riscv_abi_rve` macro. If the chosen abi is ilp32e, `gcc -march=rv32i
-mabi=ilp32i -E -dM` shows that both `__riscv_float_abi_soft` and
`__riscv_abi_rve` are set.

This patch corrects the compiler logic around these defines.

At the moment, this patch will not change clang's behaviour, because we do not
accept the `ilp32e` abi yet.

Reviewers: luismarques, asb

Reviewed By: luismarques

Subscribers: rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, cfe-commits

Tags: #clang

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

llvm-svn: 370709

20 months ago[LV] Tail-folding with runtime memory checks
Sjoerd Meijer [Tue, 3 Sep 2019 08:38:24 +0000 (08:38 +0000)]
[LV] Tail-folding with runtime memory checks

The loop vectorizer was running in an assert when it tried to fold the tail and
had to emit runtime memory disambiguation checks.

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

llvm-svn: 370707

20 months ago[lldb][NFC] Unify log files in commands/log/basic
Raphael Isemann [Tue, 3 Sep 2019 08:30:17 +0000 (08:30 +0000)]
[lldb][NFC] Unify log files in commands/log/basic

llvm-svn: 370706

20 months ago[MachinePipeliner] Add a way to unit-test the schedule emitter
James Molloy [Tue, 3 Sep 2019 08:20:31 +0000 (08:20 +0000)]
[MachinePipeliner] Add a way to unit-test the schedule emitter

Emitting a schedule is really hard. There are lots of corner cases to take care of; in fact, of the 60+ SWP-specific testcases in the Hexagon backend most of those are testing codegen rather than the schedule creation itself.

One issue is that to test an emission corner case we must craft an input such that the generated schedule uses that corner case; sometimes this is very hard and convolutes testcases. Other times it is impossible but we want to test it anyway.

This patch adds a simple test pass that will consume a module containing a loop and generate pipelined code from it. We use post-instr-symbols as a way to annotate instructions with the stage and cycle that we want to schedule them at.

We also provide a flag that causes the MachinePipeliner to generate these annotations instead of actually emitting code; this allows us to generate an input testcase with:

  llc < %s -stop-after=pipeliner -pipeliner-annotate-for-testing -o test.mir

And run the emission in isolation with:

  llc < test.mir -run-pass=modulo-schedule-test

llvm-svn: 370705

20 months ago[ARM] Select vmla
Sam Tebbs [Tue, 3 Sep 2019 08:17:46 +0000 (08:17 +0000)]
[ARM] Select vmla

This patch adds vmla selection.

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

llvm-svn: 370704

20 months ago[lldb][NFC] Remove setup boilerplate from types/ tests
Raphael Isemann [Tue, 3 Sep 2019 07:33:32 +0000 (07:33 +0000)]
[lldb][NFC] Remove setup boilerplate from types/ tests

This code doesn't seem to be necessary anymore.

llvm-svn: 370702

20 months ago[X86] Simplify the setOperationAction handling for fp_to_uint by improving the Custom...
Craig Topper [Tue, 3 Sep 2019 05:57:22 +0000 (05:57 +0000)]
[X86] Simplify the setOperationAction handling for fp_to_uint by improving the Custom handler a bit.

This merges the 32-bit and 64-bit mode code to just use Custom
for both i32 and i64. We already had most of the handling in
the custom handling due to the AVX512 having legal fp_to_uint.
Just needed to add the i32->i64 promotion handling. Refactor
the fp_to_uint code in the custom handler to simplify the
number of times we check things.

Tweak cost model tables to match the default handling we were
getting due to Expand before.

llvm-svn: 370700

20 months ago[X86] Don't use Expand for i32 fp_to_uint on SSE1/2 targets on 32-bit target.
Craig Topper [Tue, 3 Sep 2019 05:57:18 +0000 (05:57 +0000)]
[X86] Don't use Expand for i32 fp_to_uint on SSE1/2 targets on 32-bit target.

Use Custom lowering instead. Fall back to default expansion only
when the scalar FP type belongs in an XMM register. This improves
lowering for i32 to fp80, and also i32 to double on SSE1 only.

llvm-svn: 370699

20 months ago[X86] Add an exhaustive test for i32 fptosi/fptoui across different triples and features.
Craig Topper [Tue, 3 Sep 2019 05:57:14 +0000 (05:57 +0000)]
[X86] Add an exhaustive test for i32 fptosi/fptoui across different triples and features.

llvm-svn: 370698

20 months ago[LegalizeDAG] Pass DAG to two calls to SDNode::dump in debug prints so that they...
Craig Topper [Tue, 3 Sep 2019 02:51:14 +0000 (02:51 +0000)]
[LegalizeDAG] Pass DAG to two calls to SDNode::dump in debug prints so that they will print target specific nodes correctly.

The dump methods can only print target node names correctly if
they can get access to the TLI object.

llvm-svn: 370694

20 months ago[X86] Custom promote i32->f80 uint_to_fp on AVX512 64-bit targets.
Craig Topper [Tue, 3 Sep 2019 02:51:10 +0000 (02:51 +0000)]
[X86] Custom promote i32->f80 uint_to_fp on AVX512 64-bit targets.

Reuse the same code to promote all i32 uint_to_fp on 64-bit targets
to simplify the X86ISelLowering constructor.

llvm-svn: 370693

20 months ago[x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps, _mm512_stream...
Pengfei Wang [Tue, 3 Sep 2019 02:06:15 +0000 (02:06 +0000)]
[x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps, _mm512_stream_pd, _mm512_stream_si512

Reviewers: craig.topper, pengfei, LuoYuanke, RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

Patch by Bing Yu (yubing)

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

llvm-svn: 370691