Adrian Prantl [Thu, 14 Nov 2019 17:35:06 +0000 (09:35 -0800)]
Convert UpdateExternalModuleListIfNeeded to use early exits.
Adrian Prantl [Thu, 14 Nov 2019 17:13:04 +0000 (09:13 -0800)]
Rename DWO -> Clang module to avoid confusion. (NFC)
Jonas Devlieghere [Thu, 14 Nov 2019 17:02:35 +0000 (09:02 -0800)]
[LLDB] Make a clear distinction between usage & development docs
This renames the "Goals & Status" section to "Project" and the
"Resources" section to "Development". To better match this layout I've
moved the releases page under "Project".
Adrian Prantl [Thu, 14 Nov 2019 16:57:32 +0000 (08:57 -0800)]
Use ForEachExternalModule in ParseTypeFromClangModule (NFC)
I wanted to further simplify ParseTypeFromClangModule by replacing the
hand-rolled loop with ForEachExternalModule, and then realized that
ForEachExternalModule also had the problem of visiting the same leaf
node an exponential number of times in the worst-case. This adds a set
of searched_symbol_files set to the function as well as the ability to
early-exit from it.
Differential Revision: https://reviews.llvm.org/D70215
Scott Linder [Wed, 13 Nov 2019 17:31:50 +0000 (12:31 -0500)]
[AMDGPU][HIP] Change default DWARF version to 4
Summary:
Tooling around DWARF 5 is still not mature enough for this to be a sane
default, and the AMDGPU and HIP toolchains should agree on a single
default.
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, aprantl, dstuttard, tpr, t-tye, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70191
Adrian McCarthy [Thu, 7 Nov 2019 18:50:33 +0000 (10:50 -0800)]
Improve VFS compatibility on Windows
Keys in a virtual file system can be in Posix or Windows form or even
a combination of the two. Many VFS tests (and a few Clang tests) were
XFAILed on Windows because of false negatives when comparing paths.
First, we default CaseSenstive to false on Windows. This allows
drive letters like "D:" to match "d:". Windows filesystems are, by
default, case insensitive, so this makes sense even beyond the drive
letter.
Second, we allow slashes to match backslashes when they're used as the
root component of a path.
Both of these changes are limited to RedirectingFileSystems, so there's
little chance of affecting other path handling.
These changes allow eleven of the VFS tests to pass on Windows as well
as three other Clang tests, so they have re-enabled.
This solves the majority of PR43272. Additional VFS test failures will
be fixed in separate patches.
Differential Revision: https://reviews.llvm.org/D69958
Sam McCall [Wed, 13 Nov 2019 19:16:23 +0000 (20:16 +0100)]
[clangd] Ignore more implicit nodes in computing selection.
Summary:
The DeclRefExpr for the callee of overloaded `operator()` and `operator[]` are
assigned the range of the paren/bracket lists in the AST.
These are better thought of as implicit (at least `()` - `[] is murkier).
But there's no bit on Expr for implicit, so just ignore them on our side.
While here, deal with the case where an implicit stmt (e.g. implicit-this)
is wrapped in an implicit cast. Previously we ignored the statement but not
the cast, and so the cast ended up being selected.
Fixes https://github.com/clangd/clangd/issues/195
Reviewers: kadircet, lh123
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70194
Sam McCall [Wed, 13 Nov 2019 21:24:17 +0000 (22:24 +0100)]
[clangd] Expose value of enumerators to Hover API. (not UI yet)
Summary: This is part of https://github.com/clangd/clangd/issues/180.
Reviewers: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70209
Lang Hames [Wed, 13 Nov 2019 17:13:03 +0000 (09:13 -0800)]
[ADT] Move drop_begin from iterator_range.h into STLExtras.
Summary:
drop_begin depends on adl_begin/adl_end, which are defined in STLExtras.h,
but we can't just #include STLExtras.h in iterator_range.h as that would
introduce a circular reference (STLExtras.h already depends on
iterator_range.h). The simplest solution is to move drop_begin into
STLExtras.h, which is a reasonable home for it anyway.
Reviewers: dblaikie
Subscribers: dexonsmith, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70189
Adam Balogh [Fri, 8 Nov 2019 11:52:09 +0000 (12:52 +0100)]
[Analyzer][NFC] Separate white-box tests for iterator modelling from iterator checker tests
The recently committed debug.IteratorDebugging checker enables
standalone white-box testing of the modelling of containers and
iterators. For the three checkers based on iterator modelling only
simple tests are needed.
Differential Revision: https://reviews.llvm.org/D70123
Pavel Labath [Thu, 14 Nov 2019 15:16:25 +0000 (16:16 +0100)]
[lldb] Fix dwo variant of TestLibCxxFunction
The test was failing due to a bug in SymbolFileDWARF::FindFunctions --
the function was searching the main dwarf unit for DW_TAG_subprograms,
but the main unit is empty in case of split dwarf. The fix is simple --
search the non-skeleton unit instead.
This bug went unnoticed because this function is expensive, and so one
generally avoids calling it.
Sanjay Patel [Thu, 14 Nov 2019 15:20:48 +0000 (10:20 -0500)]
[InstCombine] regenerate test CHECKs; NFC
There's a discussion about changing a shufflevector
transform in:
https://bugs.llvm.org/show_bug.cgi?id=43958
It would protect against our current undef/poison
behavior, and these are all tests that could be affected.
Benjamin Kramer [Thu, 14 Nov 2019 15:07:13 +0000 (16:07 +0100)]
Revert "[ThinLTO] Add correctness check for RO/WO variable import"
This reverts commit
a2292cc537b561416c21e8d4017715d652c144cc. Breaks
clang selfhost w/ThinLTO.
Ed Maste [Wed, 13 Nov 2019 18:24:23 +0000 (13:24 -0500)]
On FreeBSD use AT_EXECPATH from ELF auxiliary vectors for getExecutablePath
/proc/curproc/file and the KERN_PROC_PATHNAME sysctl may not return the
desired path if there are multiple hardlinks to the file, or if the path has
expired from the namecache.
Reviewed By: theraven
Differential Revision: https://reviews.llvm.org/D70198
Tim Northover [Thu, 14 Nov 2019 13:26:53 +0000 (13:26 +0000)]
ARM: allow rewriting frame indexes for all prefetch variants.
For some reason we could handle PLD but not PLDW or PLI, but all of them can
potentially refer to the stack region (if weirdly for PLI).
Simon Pilgrim [Thu, 14 Nov 2019 13:55:28 +0000 (13:55 +0000)]
GCOVProfiling - fix uninitialized variable warnings + make getFuncChecksum() const. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:54:29 +0000 (13:54 +0000)]
WholeProgramDevirt - fix uninitialized variable warnings. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:53:35 +0000 (13:53 +0000)]
Fix uninitialized variable warning. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:52:46 +0000 (13:52 +0000)]
Fix uninitialized variable warning. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:52:02 +0000 (13:52 +0000)]
SROA - fix uninitialized variable warnings. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:50:38 +0000 (13:50 +0000)]
Fix uninitialized variable warnings. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:47:22 +0000 (13:47 +0000)]
Hexagon - fix uninitialized variable warnings. NFCI.
Simon Pilgrim [Thu, 14 Nov 2019 13:32:40 +0000 (13:32 +0000)]
MSP430 - fix uninitialized variable warnings. NFCI.
Louis Dionne [Thu, 14 Nov 2019 14:07:05 +0000 (09:07 -0500)]
[libc++][P1872] span should have size_type, not index_type.
Thanks to Marek Kurdej for the patch.
Differential Revision: https://reviews.llvm.org/D70206
Louis Dionne [Thu, 14 Nov 2019 13:54:23 +0000 (08:54 -0500)]
[libc++] [P1612] Add missing feature-test macro __cpp_lib_endian.
Thanks to Marek Kurdej for the patch.
Differential Revision: https://reviews.llvm.org/D70221
Kerry McLaughlin [Thu, 14 Nov 2019 13:29:57 +0000 (13:29 +0000)]
[AArch64][SVE] Implement floating-point comparison & reduction intrinsics
Summary:
Adds intrinsics for the following:
- fadda & faddv
- fminv, fmaxv, fminnmv & fmaxnmv
- facge & facgt
- fcmp[eq|ge|gt|ne|uo]
Reviewers: sdesmalen, huntergr, dancgr, mgudim
Reviewed By: sdesmalen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cameron.mcinally, cfe-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69858
Ilya Biryukov [Thu, 14 Nov 2019 13:43:07 +0000 (14:43 +0100)]
[clangd] Simplify the code in Index::refs
Summary:
While here, also fix potential UB in MergeIndex.
Thanks Kadir for finding this!
Reviewers: hokein
Reviewed By: hokein
Subscribers: merge_guards_bot, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70225
Sjoerd Meijer [Thu, 14 Nov 2019 13:10:44 +0000 (13:10 +0000)]
[LV] PreferPredicateOverEpilog respecting predicate loop hint
The vectoriser queries TTI->preferPredicateOverEpilogue to determine if
tail-folding is preferred for a loop, but it was not respecting loop hint
'predicate' that can disable this, which has now been added. This showed that
we were incorrectly initialising loop hint 'vectorize.predicate.enable' with 0
(i.e. FK_Disabled) but this should have been FK_Undefined, which has been
fixed.
Differential Revision: https://reviews.llvm.org/D70125
Paweł Bylica [Thu, 14 Nov 2019 12:37:15 +0000 (13:37 +0100)]
[DAGCombiner] Drop redundant DAG method param. NFC
Paweł Bylica [Thu, 14 Nov 2019 11:44:57 +0000 (12:44 +0100)]
[DAGCombiner] Use TLI field already available. NFC
Raphael Isemann [Thu, 14 Nov 2019 12:36:09 +0000 (13:36 +0100)]
Modernize llvm::Error handling in ExternalASTMerger
JonChesterfield [Thu, 14 Nov 2019 12:43:56 +0000 (12:43 +0000)]
[libomptarget][nfc] Use cuda variable wrappers from support.h
Summary:
[libomptarget][nfc] Use cuda variable wrappers from support.h
Reimplementation of D69693, after the revert of D69885
Use the wrappers in support.h for cuda builtin variables at all call sites.
Localises use of cuda and removes WARPSIZE==32 assumption in debug.h.
Reviewers: ABataev, jdoerfert, grokos
Reviewed By: jdoerfert
Subscribers: openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D70186
Miloš Stojanović [Thu, 14 Nov 2019 11:52:56 +0000 (12:52 +0100)]
[mips][NFC] Remove old FIXME comment
This was fixed in rL229595 but this comment was missed.
Differential Revision: https://reviews.llvm.org/D70231
Kerry McLaughlin [Thu, 14 Nov 2019 11:59:00 +0000 (11:59 +0000)]
[AArch64][SVE] Implement remaining floating-point arithmetic intrinsics
Summary:
Adds intrinsics for the following:
- fabs & fneg
- fexpa
- frint[a|i|m|n|p|x|z]
- frecpe, frecps & frecpx
- fsqrt, frsqrte & frsqrts
Reviewers: huntergr, sdesmalen, dancgr, mgudim
Reviewed By: sdesmalen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cameron.mcinally, cfe-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69800
Kerry McLaughlin [Thu, 14 Nov 2019 11:35:38 +0000 (11:35 +0000)]
[AArch64][SVE] Implement additional floating-point arithmetic intrinsics
Summary:
Adds intrinsics for the following:
- ftssel
- fcadd, fcmla
- fmla, fmls, fnmla, fnmls
- fmad, fmsb, fnmad, fnmsb
Reviewers: sdesmalen, huntergr, dancgr, mgudim
Reviewed By: sdesmalen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cameron.mcinally, cfe-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69707
Diana Picus [Thu, 14 Nov 2019 10:53:53 +0000 (11:53 +0100)]
Fix typos in docs. NFC
QingShan Zhang [Thu, 14 Nov 2019 10:55:49 +0000 (10:55 +0000)]
[NFC] Add one test for PowerPC to verify the sext_inreg for vector type.
Kevin Petit [Wed, 13 Nov 2019 09:29:10 +0000 (09:29 +0000)]
Fix use of add_llvm_tool in projects that build no targets
Projects that set LLVM_TARGETS_TO_BUILD to an empty list
can't use add_llvm_tool (and probably other macros).
Here's the error that this change fixes:
list sub-command REMOVE_ITEM requires two or more arguments.
https://reviews.llvm.org/D70167
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Daniil Suchkov [Thu, 14 Nov 2019 10:42:01 +0000 (17:42 +0700)]
Revert "[InstCombine] Fold PHIs with equal incoming pointers"
This reverts commit
a2f6ae9abffcba260c22bb235879f0576bf3b783.
It is reverted due to clang-cmake-armv7-selfhost buildbot failure.
Raphael Isemann [Thu, 14 Nov 2019 10:11:20 +0000 (11:11 +0100)]
[lldb] Fix that trailing backslashes in source lines break the Clang highlighter
Summary:
Clang's raw Lexer doesn't produce any tokens for trailing backslashes in a line. This doesn't work with
LLDB's Clang highlighter which builds the source code to display from the list of tokens the Lexer returns.
This causes that lines with trailing backslashes are lacking the backslash and the following newline when
rendering source code in LLDB.
This patch removes the trailing newline from the current line we are highlighting. This way Clang doesn't
drop the backslash token and we just restore the newline after tokenising.
Fixes rdar://
57091487
Reviewers: JDevlieghere, labath
Reviewed By: JDevlieghere, labath
Subscribers: labath, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D70177
Daniil Suchkov [Thu, 14 Nov 2019 08:25:31 +0000 (15:25 +0700)]
[InstCombine] Fold PHIs with equal incoming pointers
This is a resubmission of
bbb29738b58aaf6f6518269abdcf8f64131665a9 that
was reverted due to clang tests failures. It includes the fix and
additional IR tests for the missed case.
Summary:
In case when all incoming values of a PHI are equal pointers, this
transformation inserts a definition of such a pointer right after
definition of the base pointer and replaces with this value both PHI and
all it's incoming pointers. Primary goal of this transformation is
canonicalization of this pattern in order to enable optimizations that
can't handle PHIs. Non-inbounds pointers aren't currently supported.
Reviewers: spatel, RKSimon, lebedev.ri, apilipenko
Reviewed By: apilipenko
Tags: #llvm
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D68128
Djordje Todorovic [Thu, 14 Nov 2019 07:32:03 +0000 (08:32 +0100)]
[AArch64][DebugInfo] Fix incorrect call site param value produced by MOVZXi
This resolves the problem with the truncation of the immediate operand.
Differential Revision: https://reviews.llvm.org/D70168
Anna Welker [Thu, 14 Nov 2019 09:43:26 +0000 (09:43 +0000)]
[NFC] Fix typo in ARMBaseRegisterInfo
evgeny [Thu, 14 Nov 2019 09:24:05 +0000 (12:24 +0300)]
[ThinLTO] Add correctness check for RO/WO variable import
This patch adds an assertion check for exported read/write-only
variables to be also in import list for module. If they aren't
we may face linker errors, because read/write-only variables are
internalized in their source modules. The patch also changes
export lists to store ValueInfo instead of GUID for performance
considerations.
Differential revision: https://reviews.llvm.org/D70128
Pavel Labath [Tue, 12 Nov 2019 10:36:19 +0000 (11:36 +0100)]
DWARFDebugLoclists: stricter base address handling
Summary:
This removes the use of zero as a base address in section-based dumping.
Although this will often be true for (unlinked) object files with a
single compile unit, it is not true in general. This means that
section-based dumping will not be able to resolve entries referencing
the base address (DW_LLE_offset_pair) -- it wasn't able to do that
correctly before either, but now it will be more explicit about it. One
exception to that is if the location list contains an explicit
DW_LLE_base_address entry -- in this case the dumper will pick it up,
and resolve subsequent entries normally.
The patch also removes the fallback to zero in the "inline" dumping in
case the compile unit does not contain a base address.
Reviewers: dblaikie, probinson, JDevlieghere, aprantl, SouraVX
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70115
Raphael Isemann [Thu, 14 Nov 2019 08:47:10 +0000 (09:47 +0100)]
[lldb][NFC] Simplify IOHandler constructor/destructor setup
We only need a default constructor because of DISALLOW_COPY_AND_ASSIGN,
but the non-virtual destructor isn't needed.
Muhammad Omair Javaid [Thu, 14 Nov 2019 08:53:51 +0000 (13:53 +0500)]
[LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules
This patch fixes whitespace/tabs mismatch in
lldb/packages/Python/lldbsuite/test/make/Makefile.rules
Legacy make files always used tabs though modern make version can
work with white-spaces I have chosen the legacy just to be safe.
Signed-off-by: Muhammad Omair Javaid <omair.javaid@linaro.org>
Differential Revision: https://reviews.llvm.org/D70154
Puyan Lotfi [Thu, 14 Nov 2019 08:39:16 +0000 (03:39 -0500)]
[clang][IFS][test] Reverting driver-test.c to what it was prior to
e782192d5e6
My mistake. Changes I had in this test were for code changes that are
not landed yet. I am reverting driver-test.c back to what it was
originally.
Puyan Lotfi [Thu, 14 Nov 2019 07:41:28 +0000 (02:41 -0500)]
[clang][IFS][test] Removing -shared, fixing triple: driver-test.c/windows.cpp.
Removing -shared as it is not used on a lot of targets in order to green failing
bots with this change. Also, tiding up the windows.cpp test as the
triple compile out can look slightly different that what you specified
on a windows bot.
Puyan Lotfi [Thu, 14 Nov 2019 04:58:09 +0000 (23:58 -0500)]
[clang][IFS][test][NFC] Tightening up clang-ifs tests to use -cc1 more often.
Unless the test is explicitly testing a driver feature if clang
interface stubs I have changed the tests to use %clang_cc1. This should
make some changes I plan to make to the driver job pipeline cause fewer
test changes and breakages.
Dimitry Andric [Wed, 13 Nov 2019 21:15:30 +0000 (22:15 +0100)]
Check result of emitStrLen before passing it to CreateGEP
Summary:
This fixes PR43081, where the transformation of `strchr(p, 0) -> p +
strlen(p)` can cause a segfault, if `-fno-builtin-strlen` is used. In
that case, `emitStrLen` returns nullptr, which CreateGEP is not designed
to handle. Also add the minimized code from the PR as a test case.
Reviewers: xbolva00, spatel, jdoerfert, efriedma
Reviewed By: efriedma
Subscribers: lebedev.ri, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D70143
Simon Atanasyan [Thu, 14 Nov 2019 06:05:24 +0000 (09:05 +0300)]
[mips] Use local variable to escape repetitive calls of `getOpcode`. NFC
Simon Atanasyan [Thu, 14 Nov 2019 05:45:37 +0000 (08:45 +0300)]
[mips] Use isInt<> call instead of explicit range checking. NFC
Tom Stellard [Thu, 14 Nov 2019 04:29:19 +0000 (20:29 -0800)]
[cmake] Prevent building with BUILD_SHARED_LIBS and LLVM_LINK_LLVM_DYLIB
Summary: This doesn't work, so error early if someone tries it.
Reviewers: beanz, smeenai, compnerd, phosek
Reviewed By: beanz
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70160
Francesco Petrogalli [Thu, 14 Nov 2019 04:29:07 +0000 (04:29 +0000)]
[ModuleUtils] Clean up header file. [NFC]
Summary:
1. Remove unused forward declaration.
2. Remove unnecessary `\defgroup` in docygen documentation.
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70218
Rui Ueyama [Wed, 13 Nov 2019 04:43:25 +0000 (13:43 +0900)]
Warn on /align if used without /driver
/align is not supposed to be used without /driver, so it makes sense
to warn if only /align is passed. MSVC link.exe warns on this too.
Differential Revision: https://reviews.llvm.org/D70163
Rui Ueyama [Wed, 13 Nov 2019 04:53:15 +0000 (13:53 +0900)]
Implement /driver, /driver:wdm and /driver:uponly
This patch implements /driver, /driver:wdm and /driver:uponly as
described in
https://docs.microsoft.com/en-us/cpp/build/reference/driver-windows-nt-kernel-mode-driver?view=vs-2019.
Differential Revision: https://reviews.llvm.org/D70162
Heejin Ahn [Tue, 5 Nov 2019 00:04:15 +0000 (16:04 -0800)]
[WebAssembly] -fwasm-exceptions enables reference-types
Summary:
This adds `-mreference-types` and `-mno-reference-types` flags to clang
and make `-fwasm-exceptions` enables reference types feature in clang
and the backend.
Reviewers: tlively
Subscribers: dschuff, sbc100, jgravelle-google, sunfish, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69832
Heejin Ahn [Thu, 14 Nov 2019 02:19:54 +0000 (18:19 -0800)]
[unittests] Add InitializePasses.h includes
Summary:
After D70211, Pass.h does not include InitializePasses.h anymore, so
these files need to include InitializePasses.h directly.
Reviewers: rnk
Subscribers: MatzeB, mehdi_amini, zzheng, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70217
Jonas Devlieghere [Thu, 14 Nov 2019 01:23:21 +0000 (17:23 -0800)]
[LLDB] Don't install the pretty stack trace handler twice.
I noticed that currently we are printing LLVM's pretty stack trace
twice. The reason is that we're calling PrintStackTraceOnErrorSignal in
addition to InitLLVM, which besides some other useful things, also
register LLVM's pretty stack trace handler.
Differential revision: https://reviews.llvm.org/D70216
Reid Kleckner [Wed, 13 Nov 2019 23:17:46 +0000 (15:17 -0800)]
Move CodeGenFileType enum to Support/CodeGen.h
Avoids the need to include TargetMachine.h from various places just for
an enum. Various other enums live here, such as the optimization level,
TLS model, etc. Data suggests that this change probably doesn't matter,
but it seems nice to have anyway.
Stanislav Mekhanoshin [Thu, 14 Nov 2019 00:36:01 +0000 (16:36 -0800)]
[AMDGPU] Fixed dpp test. NFC.
Tom Stellard [Thu, 14 Nov 2019 00:01:33 +0000 (16:01 -0800)]
[cmake] Remove confusing condition argument from else() NFC
Summary:
This makes it look like an elseif and also the variable referenced
in the condition was removed from this function in r366622.
Reviewers: dsanders, beanz, smeenai, compnerd, phosek
Reviewed By: beanz
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70159
Reid Kleckner [Thu, 14 Nov 2019 00:36:21 +0000 (16:36 -0800)]
Revert "Forward declare Optional<T> in STLExtras.h"
This reverts commit
a36f316390d4bc1bcb0e9de0f55831385ab24099.
I did not intend to push this with the InitializePasses.h change.
Reid Kleckner [Wed, 13 Nov 2019 21:15:01 +0000 (13:15 -0800)]
Sink all InitializePasses.h includes
This file lists every pass in LLVM, and is included by Pass.h, which is
very popular. Every time we add, remove, or rename a pass in LLVM, it
caused lots of recompilation.
I found this fact by looking at this table, which is sorted by the
number of times a file was changed over the last 100,000 git commits
multiplied by the number of object files that depend on it in the
current checkout:
recompiles touches affected_files header
342380 95 3604 llvm/include/llvm/ADT/STLExtras.h
314730 234 1345 llvm/include/llvm/InitializePasses.h
307036 118 2602 llvm/include/llvm/ADT/APInt.h
213049 59 3611 llvm/include/llvm/Support/MathExtras.h
170422 47 3626 llvm/include/llvm/Support/Compiler.h
162225 45 3605 llvm/include/llvm/ADT/Optional.h
158319 63 2513 llvm/include/llvm/ADT/Triple.h
140322 39 3598 llvm/include/llvm/ADT/StringRef.h
137647 59 2333 llvm/include/llvm/Support/Error.h
131619 73 1803 llvm/include/llvm/Support/FileSystem.h
Before this change, touching InitializePasses.h would cause 1345 files
to recompile. After this change, touching it only causes 550 compiles in
an incremental rebuild.
Reviewers: bkramer, asbirlea, bollu, jdoerfert
Differential Revision: https://reviews.llvm.org/D70211
Reid Kleckner [Thu, 14 Nov 2019 00:28:12 +0000 (16:28 -0800)]
Forward declare Optional<T> in STLExtras.h
WIP stats
Stanislav Mekhanoshin [Wed, 13 Nov 2019 23:58:49 +0000 (15:58 -0800)]
[AMDGPU] Fixed mfma-loop test. NFC.
Jonas Devlieghere [Wed, 13 Nov 2019 23:38:43 +0000 (15:38 -0800)]
[LLDB] Cleanup the DataEncoder utility. (NFC)
This commit removes unused methods from the DataEncoder class and cleans
up the API by making all the internal methods private.
Reid Kleckner [Wed, 13 Nov 2019 23:40:22 +0000 (15:40 -0800)]
Revert a hunk from
9634064cfa1b9bf7b7
This causes errors when building LLDB because the Windows implementation
doesn't implement this method:
C:\src\llvm-project\lldb\source\Plugins\ScriptInterpreter\Python\ScriptInterpreterPython.cpp(915,19): error: allocating an object of abstract class type 'lldb_private::ConnectionGenericFile'
new ConnectionGenericFile(read_file, true));
^
C:\src\llvm-project\lldb\include\lldb/Utility/Connection.h(174,28): note: unimplemented pure virtual method 'GetReadObject' in 'ConnectionGenericFile'
virtual lldb::IOObjectSP GetReadObject() = 0;
^
Jonas Devlieghere [Wed, 13 Nov 2019 23:37:24 +0000 (15:37 -0800)]
[LLDB] Implement pure virtual method in MockConnection
I made GetReadObject pure virtual in the base class and forgot to add
the method to the mock class.
Reid Kleckner [Wed, 13 Nov 2019 23:33:12 +0000 (15:33 -0800)]
Sink MachineFunction private method out of line
This method is private and only called from this file and doesn't need
to be inline. Saves a TargetMachine.h include in MachineFunction.h, a
popular header. The include was introduced in
98603a8153086 despite the
forward decl of LLVMTargetMachine.
Craig Topper [Wed, 13 Nov 2019 23:20:34 +0000 (15:20 -0800)]
[X86] Don't treat mxcsr as a register name when parsing MS inline assembly.
No instruction takes mxcsr as a an operand so we should always
treat it as an identifier name.
Jonas Devlieghere [Wed, 13 Nov 2019 23:11:45 +0000 (15:11 -0800)]
[LLDB] Fix another set of -Wdocumentation warnings
At this point I'm just fixing issues as I see them pop up locally in
incremental builds.
Jonas Devlieghere [Wed, 13 Nov 2019 23:08:51 +0000 (15:08 -0800)]
[LLDB] Remove dead code from StreamFile
Davide Italiano [Wed, 13 Nov 2019 22:52:52 +0000 (14:52 -0800)]
[RegisterContext] Remove now unneded vestiges.
Jonas Devlieghere [Wed, 13 Nov 2019 22:40:28 +0000 (14:40 -0800)]
[LLDB] Fix a bunch of -Wdocumentation warnings in ExpressionParser
Adrian Prantl [Wed, 13 Nov 2019 22:19:01 +0000 (14:19 -0800)]
Remove redundant check. (NFC)
Adrian Prantl [Wed, 13 Nov 2019 22:16:11 +0000 (14:16 -0800)]
Use cheaper, equivalent predicate. (NFC)
Craig Topper [Wed, 13 Nov 2019 21:20:00 +0000 (13:20 -0800)]
[X86] Don't set the operation action for i16 SINT_TO_FP to Promote just because SSE1 is enabled.
Instead do custom promotion in the handler so that we can still
allow i16 to be used with fp80. And f64 without sse2.
Craig Topper [Wed, 13 Nov 2019 20:43:33 +0000 (12:43 -0800)]
[X86] Fix typo in comment. NFC
Craig Topper [Wed, 13 Nov 2019 20:37:02 +0000 (12:37 -0800)]
[X86] Move all the FP_TO_XINT/XINT_TO_FP setOperationActions into the same !useSoftFloat block. Qualify all of the Promote actions for these with !useSoftFloat too. NFCI
The Promote action doesn't apply until LegalizeDAG. By the time
we get there, we would have already softened all the FP operations
if useSoftFloat was true. So there wouldn't be any operation left
to Promote.
Adrian Prantl [Wed, 13 Nov 2019 22:05:10 +0000 (14:05 -0800)]
Rename clang-module-related *DWO* functions to *ClangModule* (NFC)
This avoids confusing them with fission-related functionality.
I also moved two accessor functions from DWARFDIE into static
functions in DWARFASTParserClang were their only use is located.
Hiroshi Yamauchi [Wed, 13 Nov 2019 21:49:33 +0000 (13:49 -0800)]
[PGO][PGSO] Temporarily disable the large working set size behavior.
Summary:
This temporarily disables the large working set size behavior in profile guided
size optimization due to internal benchmark regressions.
Reviewers: davidxl
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70207
Marek Kurdej [Wed, 13 Nov 2019 21:51:29 +0000 (22:51 +0100)]
libc++ status page: Fix HTML.
Sanjay Patel [Wed, 13 Nov 2019 21:45:17 +0000 (16:45 -0500)]
[SimplifyCFG] add test for select with FMF; NFC
Adrian Prantl [Wed, 13 Nov 2019 18:52:30 +0000 (10:52 -0800)]
Rename ParseTypeFromDWO to ParseTypeFromClangModule (NFC)
Because that is what this function really does. The old name is
misleading.
Richard Smith [Wed, 13 Nov 2019 21:14:07 +0000 (13:14 -0800)]
Revert "[RISCV] Use compiler-rt if no GCC installation detected"
This change causes test failures for builds configured with
-DCLANG_DEFAULT_RTLIB=compiler-rt.
This reverts commit
3289352e6bb9d2949c678c625478024bf2a5fbfb.
Sanjay Patel [Wed, 13 Nov 2019 20:41:26 +0000 (15:41 -0500)]
[SLP] fix miscompile on min/max reductions with extra uses (PR43948)
The bug manifests as replacing a reduction operand with an undef
value.
The problem appears to be limited to cases where a min/max reduction
has extra uses of the compare operand to the select.
In the general case, we are tracking "ExternallyUsedValues" and
an "IgnoreList" of the reduction operations, but those may not apply
to the final compare+select in a min/max reduction.
For that, we use replaceAllUsesWith (RAUW) to ensure that the new
vectorized reduction values are transferred to all subsequent users.
Differential Revision: https://reviews.llvm.org/D70148
mydeveloperday [Wed, 13 Nov 2019 20:54:42 +0000 (20:54 +0000)]
[clang-format] refactor the use of the SMDiagnostics in replacement warnings
Summary:
Review comments in {D69854} recommended a simpler approach of creating the SMDiagnostics to remove much of the complexity. (thanks @thakis)
@vlad.tsyrklevich I've rebuilt on both Windows and Linux (running Linux with Address and Undefined sanitizers) over the clang code base
Reviewers: thakis, klimek, mitchell-stellar, vlad.tsyrklevich
Reviewed By: thakis
Subscribers: cfe-commits, thakis, vlad.tsyrklevich
Tags: #clang-format, #clang
Differential Revision: https://reviews.llvm.org/D69921
Martin Storsjö [Wed, 13 Nov 2019 07:40:30 +0000 (09:40 +0200)]
[LLD] [COFF] Fix automatically importing data symbols from DLLs with LTO
This broke in
51dcb292cc002, "[lld-link] diagnose undefined symbols
before LTO when possible" (very soon after the 9.0 branch, so
luckily the 9.0 release is unaffected).
The code for loading objects we believe might be needed for autoimport
(loadMinGWAutomaticImports()) does run before the new
reportUnresolvable() function, but it had a condition to only operate
on symbols from regular object files. This condition came from
resolveRemainingUndefines(), but as loadMinGWAutomaticImports() now
has to operate before the LTO, it has to operate on undefineds from
LTO objects as well.
Differential Revision: https://reviews.llvm.org/D70166
Dimitry Andric [Wed, 13 Nov 2019 19:15:22 +0000 (20:15 +0100)]
Add -disable-builtin option to opt
Summary:
The option allows to disable specific target library builtin functions,
instead of -disable-simplify-libcalls, which disables all of them.
This is a prerequisite for D70143, which fixes PR43081.
Reviewers: xbolva00, spatel, jdoerfert, efriedma
Reviewed By: efriedma
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70193
Jonas Devlieghere [Wed, 13 Nov 2019 19:35:53 +0000 (11:35 -0800)]
[LLDB] Fix a bunch of -Wdocumentation warnings
Francis Visoiu Mistrih [Wed, 13 Nov 2019 20:27:03 +0000 (12:27 -0800)]
[dsymutil] Add -dump to llvm-bcanalyzer invocations
Craig Topper [Wed, 13 Nov 2019 20:09:34 +0000 (12:09 -0800)]
[TargetLowering] Increase the storage size of NumRegistersForVT to allow the type break down for v256i1 and other types to be stored correctly
v256i1 on X86 without avx512 breaks down to 256 i8 values when passed between basic blocks. But the NumRegistersForVT was sized at a byte for each VT. This results in 256 being stored as 0.
This patch enlarges the type to 16 bits and adds an assert to ensure that no information is lost when the entry is stored.
Differential Revision: https://reviews.llvm.org/D70138
Simon Atanasyan [Tue, 12 Nov 2019 12:35:16 +0000 (15:35 +0300)]
[mips] Reduce number of nested `if` statements. NFC
Simon Atanasyan [Sun, 10 Nov 2019 11:53:36 +0000 (14:53 +0300)]
[mips] Add test to check ELF output for JAL XGOT expansion. NFC
Simon Atanasyan [Sat, 9 Nov 2019 07:35:21 +0000 (10:35 +0300)]
[mips] Add tests to check `jal sym+offset`. NFC
Quentin Colombet [Wed, 13 Nov 2019 00:32:12 +0000 (16:32 -0800)]
[LiveInterval] Allow updating subranges with slightly out-dated IR
During register coalescing, we update the live-intervals on-the-fly.
To do that we are in this strange mode where the live-intervals can
be slightly out-of-sync (more precisely they are forward looking)
compared to what the IR actually represents.
This happens because the register coalescer only updates the IR when
it is done with updating the live-intervals and it has to do it this
way because updating the IR on-the-fly would actually clobber some
information on how the live-ranges that are being updated look like.
This is problematic for updates that rely on the IR to accurately
represents the state of the live-ranges. Right now, we have only
one of those: stripValuesNotDefiningMask.
To reconcile this need of out-of-sync IR, this patch introduces a
new argument to LiveInterval::refineSubRanges that allows the code
doing the live range updates to reason about how the code should
look like after the coalescer will have rewritten the registers.
Essentially this captures how a subregister index with be offseted
to match its position in a new register class.
E.g., let say we want to merge:
V1.sub1:<2 x s32> = COPY V2.sub3:<4 x s32>
We do that by choosing a class where sub1:<2 x s32> and sub3:<4 x s32>
overlap, i.e., by choosing a class where we can find "offset + 1 == 3".
Put differently we align V2's sub3 with V1's sub1:
V2: sub0 sub1 sub2 sub3
V1: <offset> sub0 sub1
This offset will look like a composed subregidx in the the class:
V1.(composed sub2 with sub1):<4 x s32> = COPY V2.sub3:<4 x s32>
=> V1.(composed sub2 with sub1):<4 x s32> = COPY V2.sub3:<4 x s32>
Now if we didn't rewrite the uses and def of V1, all the checks for V1
need to account for this offset to match what the live intervals intend
to capture.
Prior to this patch, we would fail to recognize the uses and def of V1
and would end up with machine verifier errors: No live segment at def.
This could lead to miscompile as we would drop some live-ranges and
thus, miss some interferences.
For this problem to trigger, we need to reach stripValuesNotDefiningMask
while having a mismatch between the IR and the live-ranges (i.e.,
we have to apply a subreg offset to the IR.)
This requires the following three conditions:
1. An update of overlapping subreg lanes: e.g., dsub0 == <ssub0, ssub1>
2. An update with Tuple registers with a possibility to coalesce the
subreg index: e.g., v1.dsub_1 == v2.dsub_3
3. Subreg liveness enabled.
looking at the IR to decide what is alive and what is not, i.e., calling
stripValuesNotDefiningMask.
coalescer maintains for the live-ranges information.
None of the targets that currently use subreg liveness (i.e., the targets
that fulfill #3, Hexagon, AMDGPU, PowerPC, and SystemZ IIRC) expose #1 and
and #2, so this patch also artificial enables subreg liveness for ARM,
so that a nice test case can be attached.
Michael Liao [Wed, 13 Nov 2019 17:19:29 +0000 (12:19 -0500)]
[TTI] Fix cast cost on vector types.
- Only split vector types when both src and dst types are splittable.
Francis Visoiu Mistrih [Wed, 13 Nov 2019 18:37:14 +0000 (10:37 -0800)]
[llvm-bcanalyzer] Don't dump the contents if -dump is not passed
With all the previous refactorings this slipped through and now we
always dump the contents of the bitcode files, even if -dump is not
passed.