Matt Arsenault [Mon, 28 Jan 2019 23:59:18 +0000 (23:59 +0000)]
AMDGPU: Add ds append/consume builtins
llvm-svn: 352443
Thomas Lively [Mon, 28 Jan 2019 23:44:31 +0000 (23:44 +0000)]
[WebAssembly] Expand BUILD_PAIR nodes
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish
Differential Revision: https://reviews.llvm.org/D57276
llvm-svn: 352442
Teresa Johnson [Mon, 28 Jan 2019 23:43:26 +0000 (23:43 +0000)]
[ThinLTO] Add option to dump per-module summary dot graph
Summary:
I found that there currently isn't a way to invoke exportToDot from
the command line for a per-module summary index, and therefore no
testing of that case. Add an internal option and use it to test dumping
of per module summary indexes.
In particular, I am looking at fixing the limitation that causes the
aliasee GUID in the per-module summary to be 0, and want to be able to
test that change.
Reviewers: evgeny777
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D57206
llvm-svn: 352441
Philip Reames [Mon, 28 Jan 2019 23:24:49 +0000 (23:24 +0000)]
Demanded elements support for vector GEPs
GEPs can produce either scalar or vector results. If we're extracting only a subset of the vector lanes, simplifying the operands is helpful in eliminating redundant computation, and (eventually) allowing further optimizations
Differential Revision: https://reviews.llvm.org/D57177
llvm-svn: 352440
Eli Friedman [Mon, 28 Jan 2019 23:03:41 +0000 (23:03 +0000)]
[docs] Fix a couple spelling errors.
llvm-svn: 352439
Teresa Johnson [Mon, 28 Jan 2019 22:27:05 +0000 (22:27 +0000)]
[ThinLTO] Refine reachability check to fix compile time increase
Summary:
A recent fix to the ThinLTO whole program dead code elimination (D56117)
increased the thin link time on a large MSAN'ed binary by 2x.
It's likely that the time increased elsewhere, but was more noticeable
here since it was already large and ended up timing out.
That change made it so we would repeatedly scan all copies of linkonce
symbols for liveness every time they were encountered during the graph
traversal. This was needed since we only mark one copy of an aliasee as
live when we encounter a live alias. This patch fixes the issue in a
more efficient manner by simply proactively visiting the aliasee (thus
marking all copies live) when we encounter a live alias.
Two notes: One, this requires a hash table lookup (finding the aliasee
summary in the index based on aliasee GUID). However, the impact of this
seems to be small compared to the original pre-D56117 thin link time. It
could be addressed if we keep the aliasee ValueInfo in the alias summary
instead of the aliasee GUID, which I am exploring in a separate patch.
Second, we only populate the aliasee GUID field when reading summaries
from bitcode (whether we are reading individual summaries and merging on
the fly to form the compiled index, or reading in a serialized combined
index). Thankfully, that's currently the only way we can get to this
code as we don't yet support reading summaries from LLVM assembly
directly into a tool that performs the thin link (they must be converted
to bitcode first). I added a FIXME, however I have the fix under test
already. The easiest fix is to simply populate this field always, which
isn't hard, but more likely the change I am exploring to store the
ValueInfo instead as described above will subsume this. I don't want to
hold up the regression fix for this though.
Reviewers: trentxintong
Subscribers: mehdi_amini, inglorion, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D57203
llvm-svn: 352438
Sanjay Patel [Mon, 28 Jan 2019 22:07:37 +0000 (22:07 +0000)]
[CGP] auto-generate complete checks for add overflow tests; NFC
llvm-svn: 352437
Shafik Yaghmour [Mon, 28 Jan 2019 21:55:33 +0000 (21:55 +0000)]
[ASTImporter] Fix handling of overriden methods during ASTImport
Summary:
When importing classes we may add a CXXMethodDecl more than once to a CXXRecordDecl when handling overrides. This patch will fix the cases we currently know about and handle the case where we are only dealing with declarations.
Differential Revision: https://reviews.llvm.org/D56936
llvm-svn: 352436
Rui Ueyama [Mon, 28 Jan 2019 21:45:50 +0000 (21:45 +0000)]
Attempt to fix build failure with GCC 5.4.
llvm-svn: 352435
Adrian Prantl [Mon, 28 Jan 2019 21:44:35 +0000 (21:44 +0000)]
Revert "Make Type::GetByteSize optional (NFC)"
This reverts commit r352394 because it broke three windows-specific tests.
llvm-svn: 352434
Craig Topper [Mon, 28 Jan 2019 21:38:47 +0000 (21:38 +0000)]
Recommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting masked loads in the type legalizer"
This did not cause the buildbot failure it was previously reverted for.
Original commit message:
I'm not sure why we were using SEXTLOAD. EXTLOAD seems more appropriate since we don't care about the upper bits.
This patch changes this and then modifies the X86 post legalization combine to emit a extending shuffle instead of a sign_extend_vector_inreg. Could maybe use an any_extend_vector_inre
On AVX512 targets I think we might be able to use a masked vpmovzx and not have to expand this at all.
llvm-svn: 352433
Yonghong Song [Mon, 28 Jan 2019 21:35:23 +0000 (21:35 +0000)]
[RuntimeDyld] load all sections with ProcessAllSections
This patch tried to address the following use case.
. bcc (https://github.com/iovisor/bcc) utilizes llvm JIT to
compile for BTF target.
. with -g, .BTF and .BTF.ext sections (BPF debug info)
will be generated by LLVM.
. .BTF does not have relocations and .BTF.ext has some
relocations.
. With ProcessAllSections, .BTF.ext is loaded by JIT dynamic linker
and is available to application. But .BTF is not loaded.
The bcc application needs both .BTF.ext and .BTF for debugging
purpose, and .BTF is not loaded. This patch addressed this issue
by iterating over all sections and loading any missing
sections, after symbol/relocation processing in loadObjectImpl().
Signed-off-by: Yonghong Song <yhs@fb.com>
Differential Revision: https://reviews.llvm.org/D55943
llvm-svn: 352432
Reid Kleckner [Mon, 28 Jan 2019 21:28:43 +0000 (21:28 +0000)]
[ARM] Deduplicate table generated CC analysis code
Create ARMCallingConv.cpp and emit code for calling convention analysis
from there.
llvm-svn: 352431
Reid Kleckner [Mon, 28 Jan 2019 21:28:40 +0000 (21:28 +0000)]
[AArch64] Include AArch64GenCallingConv.inc once
Summary:
Avoids duplicating generated static helpers for calling convention
analysis.
This also means you can modify AArch64CallingConv.td without recompiling
the AArch64ISelLowering.cpp monolith, so it provides faster incremental
rebuilds.
Saves 12K in llc.exe, but adds a new object file, which is large.
Reviewers: efriedma, t.p.northover
Subscribers: mgorny, javed.absar, kristof.beyls, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D56948
llvm-svn: 352430
Jessica Paquette [Mon, 28 Jan 2019 21:27:23 +0000 (21:27 +0000)]
[GlobalISel][AArch64] Add legalization for G_FLOG
This adds support for legalizing G_FLOG into a RTLib call.
It adds a legalizer test, and updates the existing floating point tests.
https://reviews.llvm.org/D57347
llvm-svn: 352429
Nico Weber [Mon, 28 Jan 2019 21:16:15 +0000 (21:16 +0000)]
lld/coff: Make assoc comdat diag a bit more detailed
Many different sections can have the same name, so include the indices of the
sections mentioned in the diagnostic too.
I'm debugging something I can't repro locally, maybe this will help.
llvm-svn: 352428
Petr Hosek [Mon, 28 Jan 2019 20:55:12 +0000 (20:55 +0000)]
Revert "[libunwind] Drop the dependency on <algorithm>, add placement new inline"
This reverts commit r352384: this broke on ARM as UnwindCursor.hpp
still has some C++ library dependencies.
llvm-svn: 352427
Petr Hosek [Mon, 28 Jan 2019 20:39:50 +0000 (20:39 +0000)]
[libc++] Use runtime rather then compile-time glibc version check
glibc supports versioning, so it's possible to build against older
version and run against newer version. This is sometimes relied on
in practice, e.g. in Fuchsia build we build against older sysroot
(equivalent to Ubuntu Trusty) to cover the broadest possible range
of host systems, but that doesn't necessarily match the system that
binary is going to run on which may have newer version, in which case
the compile test used in curr_symbol is going to fail. Using runtime
check is more reliable.
Differential Revision: https://reviews.llvm.org/D56702
llvm-svn: 352425
Sanjay Patel [Mon, 28 Jan 2019 20:37:18 +0000 (20:37 +0000)]
[InstCombine] add another saturating uadd test (no undefs); NFC
I forgot that our undef matching hasn't been completed in the previous commit.
llvm-svn: 352424
Sanjay Patel [Mon, 28 Jan 2019 20:32:48 +0000 (20:32 +0000)]
[InstCombine] add tests for saturating uadd with constant; NFC
llvm-svn: 352423
Matt Arsenault [Mon, 28 Jan 2019 20:14:49 +0000 (20:14 +0000)]
AMDGPU: Add DS append/consume intrinsics
Since these pass the pointer in m0 unlike other DS instructions, these
need to worry about whether the address is uniform or not. This
assumes the address is dynamically uniform, and just uses
readfirstlane to get a copy into an SGPR.
I don't know if these have the same 16-bit add for the addressing mode
offset problem on SI or not, but I've just assumed they do.
Also includes some misc. changes to avoid test differences between the
LDS and GDS versions.
llvm-svn: 352422
Alexey Bataev [Mon, 28 Jan 2019 20:03:02 +0000 (20:03 +0000)]
[OPENMP][NVPTX]Emit service debug variable for NVPTX.
In case of the empty module, the ptxas tool may emit error message about
empty debug info sections. This patch fixes this bug.
llvm-svn: 352421
Nico Weber [Mon, 28 Jan 2019 19:54:41 +0000 (19:54 +0000)]
gn build: Add get.py script to download prebuilt gn, make gn.py run downloaded gn if gn is not on PATH
Prebuilts are available for x86_64 Linux, macOS, Windows. The script always
pulls the latest GN version.
Differential Revision: https://reviews.llvm.org/D57256
llvm-svn: 352420
Nico Weber [Mon, 28 Jan 2019 19:53:52 +0000 (19:53 +0000)]
gn build: Make cmake sync script work on Windows if git is a bat file
Differential Revision: https://reviews.llvm.org/D57338
llvm-svn: 352419
Jessica Paquette [Mon, 28 Jan 2019 19:53:14 +0000 (19:53 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.log10
This adds instruction selection support for @llvm.log10 in AArch64. It teaches
GISel to lower it to a library call, updates the relevant tests, and adds a
legalizer test for log10.
https://reviews.llvm.org/D57341
llvm-svn: 352418
Adrian Prantl [Mon, 28 Jan 2019 19:38:08 +0000 (19:38 +0000)]
Remove unimplemented function
Looks like this was an unintended sideeffect of r124250.
Differential Revision: https://reviews.llvm.org/D57272
llvm-svn: 352417
Alina Sbirlea [Mon, 28 Jan 2019 19:38:03 +0000 (19:38 +0000)]
[AliasSetTracker] Cleanup more comments. [NFCI]
llvm-svn: 352416
Nico Weber [Mon, 28 Jan 2019 19:32:52 +0000 (19:32 +0000)]
gn build: Fix `lld-link: unknown flag: -fuse-ld=lld` warnings on Windows
Fixes a minor regression from r351248.
While here, also make it possible to opt out of lld by saying
use_lld=false when clang_base_path is set. (use_lld still defaults to
true if clang_base_path is set.)
llvm-svn: 352415
Scott Linder [Mon, 28 Jan 2019 19:32:08 +0000 (19:32 +0000)]
[MC] Do not consider .ifdef/.ifndef as a use
This is allowed by GAS and seems correct.
Differential Revision: https://reviews.llvm.org/D55439
llvm-svn: 352414
Peter Collingbourne [Mon, 28 Jan 2019 19:29:41 +0000 (19:29 +0000)]
ELF: Set sh_info on RelaIplt to point to the IgotPlt output section.
Previously we were setting it to the GotPlt output section, which is
incorrect on ARM where this section is in .got. In static binaries
this can lead to sh_info being set to -1 (because there is no .got.plt)
which results in various tools rejecting the output file.
Differential Revision: https://reviews.llvm.org/D57274
llvm-svn: 352413
Francis Visoiu Mistrih [Mon, 28 Jan 2019 19:27:33 +0000 (19:27 +0000)]
[AArch64] Add 'apple-latest' CPU alias
The 'apple-latest' alias is supposed to provide a CPU that contains the
latest Apple processor model supported by LLVM.
This is supposed to be used by tools like lldb to provide a target that
supports most of the CPU features.
For now, this is mapped to Cyclone.
Differential Revision: https://reviews.llvm.org/D56384
llvm-svn: 352412
Petr Hosek [Mon, 28 Jan 2019 19:26:41 +0000 (19:26 +0000)]
Revert "[CMake] Use __libc_start_main rather than fopen when checking for C library"
This reverts commit r352341: it broke the build on macOS which doesn't
seem to provide __libc_start_main in its C library.
llvm-svn: 352411
Jessica Paquette [Mon, 28 Jan 2019 19:22:29 +0000 (19:22 +0000)]
[GlobalISel] Add ISel support for @llvm.lifetime.start and @llvm.lifetime.end
This adds ISel support for lifetime markers in opt levels above O0.
It also updates the arm64-irtranslator test, and updates some AArch64 tests that
use them for added coverage.
It also adds a testcase taken from the X86 codegen tests which verified a bug
caused by lifetime markers + stack colouring in the past. This is intended to
make sure that GISel doesn't re-introduce the bug.
(This is basically a straight copy from what SelectionDAG does in
SelectionDAGBuilder.cpp)
https://reviews.llvm.org/D57187
llvm-svn: 352410
Nikita Popov [Mon, 28 Jan 2019 19:19:09 +0000 (19:19 +0000)]
[CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD
Followup to D56636, this time handling the UADDSAT case by expanding
uadd.sat(a, b) to umin(a, ~b) + b.
Differential Revision: https://reviews.llvm.org/D56869
llvm-svn: 352409
Vedant Kumar [Mon, 28 Jan 2019 19:13:37 +0000 (19:13 +0000)]
[CodeExtractor] Add support for the `swifterror` attribute
When passing a `swifterror` argument or alloca as an input to an
extraction region, mark the input parameter `swifterror`.
llvm-svn: 352408
Rui Ueyama [Mon, 28 Jan 2019 19:11:52 +0000 (19:11 +0000)]
Refactoring. NFC.
llvm-svn: 352407
Alina Sbirlea [Mon, 28 Jan 2019 19:01:32 +0000 (19:01 +0000)]
[AliasSetTracker] Cleanup comments. [NFCI]
llvm-svn: 352406
Sterling Augustine [Mon, 28 Jan 2019 18:56:44 +0000 (18:56 +0000)]
Correct help text for --unwindlib options.
llvm-svn: 352405
Sterling Augustine [Mon, 28 Jan 2019 18:56:43 +0000 (18:56 +0000)]
Add --unwindlib=[libgcc|compiler-rt] to parallel --rtlib=
Summary:
"clang++ hello.cc --rtlib=compiler-rt"
now works without specifying additional unwind or exception
handling libraries.
Reviewers: rsmith
Subscribers: srhines, dberris, aheejin, llvm-commits
Differential Revision: https://reviews.llvm.org/D57128
llvm-svn: 352404
Bruno Ricci [Mon, 28 Jan 2019 18:40:26 +0000 (18:40 +0000)]
Revert "[AST] Introduce GenericSelectionExpr::Association"
This breaks GCC 4.8.4. Reported by email by Hans Wennborg.
llvm-svn: 352403
Jessica Paquette [Mon, 28 Jan 2019 18:34:18 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add instruction selection support for G_FCOS and G_FSIN
This contains all of the legalizer changes from D57197 necessary to select
G_FCOS and G_FSIN. It also updates several existing IR tests in
test/CodeGen/AArch64 that verify that we correctly lower the G_FCOS and G_FSIN
instructions.
https://reviews.llvm.org/D57197
3/3
llvm-svn: 352402
Jessica Paquette [Mon, 28 Jan 2019 18:34:17 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add IRTranslator support for G_FCOS and G_FSIN
This adds IRTranslator support for the G_FCOS and G_FSIN generic instructions.
https://reviews.llvm.org/D57197
2/3
llvm-svn: 352401
Jessica Paquette [Mon, 28 Jan 2019 18:34:16 +0000 (18:34 +0000)]
[GlobalISel] Add G_FSIN and G_FCOS generic instructions
This introduces generic instrutions for floating point sin and cos, G_FCOS and
G_FSIN. It updates the tests, etc.
https://reviews.llvm.org/D57197
1/3
llvm-svn: 352400
Alina Sbirlea [Mon, 28 Jan 2019 18:30:05 +0000 (18:30 +0000)]
[AliasSetTracker] Update signature to aliasesPointer [NFCI].
llvm-svn: 352399
Jonas Devlieghere [Mon, 28 Jan 2019 18:07:41 +0000 (18:07 +0000)]
[testsuite] Remove unused seven module imports.
llvm-svn: 352398
Jonas Devlieghere [Mon, 28 Jan 2019 18:07:28 +0000 (18:07 +0000)]
[testsuite] Remove trailing characters from command output.
When running the test suite on macOS with Python 3 we noticed a
difference in behavior between Python 2 and Python 3 for
seven.get_command_output. The output contained a newline with Python 3,
but not for Python 2. This resulted in an invalid SDK path passed to the
compiler.
Differential revision: https://reviews.llvm.org/D57275
llvm-svn: 352397
Michael Berg [Mon, 28 Jan 2019 18:03:08 +0000 (18:03 +0000)]
[NFC] TLI query with default(on) behavior wrt DAG combines for fmin/fmax target control
llvm-svn: 352396
Jonathan Metzman [Mon, 28 Jan 2019 17:51:13 +0000 (17:51 +0000)]
[libFuzzer][Windows] Use dllexport for all declarations in FuzzerInterface.h
Summary:
Use dllexport for all declarations in FuzzerInterface.h Use it for clang
even though clang supports default visibility attribute to prevent a
warning from being thrown when LLVMFuzzerMutate is defined with dllexport.
This makes `FUZZER_INTERFACE_VISIBILITY` (FuzzerInterface.h) consistent with
`ATTRIBUTE_INTERFACE` (FuzzerDefs.h) when using clang on Windows.
Reviewers: vitalybuka, morehouse
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D57305
llvm-svn: 352395
Adrian Prantl [Mon, 28 Jan 2019 17:49:33 +0000 (17:49 +0000)]
Make Type::GetByteSize optional (NFC)
This is a continuation of my quest to make the size 0 a supported value.
Differential Revision: https://reviews.llvm.org/D57273
llvm-svn: 352394
Alina Sbirlea [Mon, 28 Jan 2019 17:48:45 +0000 (17:48 +0000)]
[SimpleLoopUnswitch] Early check exit for trivial unswitch with MemorySSA.
Summary:
If MemorySSA is avaiable, we can skip checking all instructions if block has any Defs.
(volatile loads are also Defs).
We still need to check all instructions for "canThrow", even if no Defs are found.
Reviewers: chandlerc
Subscribers: sanjoy, jlebar, Prazek, george.burgess.iv, llvm-commits
Differential Revision: https://reviews.llvm.org/D57129
llvm-svn: 352393
Jonathan Metzman [Mon, 28 Jan 2019 17:15:49 +0000 (17:15 +0000)]
[fuzzer][afl] Remove AFL_DRIVER_EXTRA_STATS_FILENAME
Summary:
Remove this feature as it is unused, buggy, and not worth correcting
since the forkserver makes it difficult.
Reviewers: morehouse, jfb
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D57308
llvm-svn: 352392
Scott Linder [Mon, 28 Jan 2019 17:12:19 +0000 (17:12 +0000)]
Add -fapply-global-visibility-to-externs for -cc1
Introduce an option to request global visibility settings be applied to
declarations without a definition or an explicit visibility, rather than
the existing behavior of giving these default visibility. When the
visibility of all or most extern definitions are known this allows for
the same optimisations -fvisibility permits without updating source code
to annotate all declarations.
Differential Revision: https://reviews.llvm.org/D56868
llvm-svn: 352391
Roman Lebedev [Mon, 28 Jan 2019 17:04:11 +0000 (17:04 +0000)]
[clang][OpenMP] OMPFlushClause is synthetic, no such clause exists
Summary:
As discussed in https://reviews.llvm.org/D57112#inline-506781,
'flush' clause does not exist in the OpenMP spec, it can not be
specified, and `OMPFlushClause` class is just a helper class.
Therefore `OPENMP_CLAUSE()` in `clang/Basic/OpenMPKinds.def`
should not contain 'flush' "clause".
I have simply removed the `OPENMP_CLAUSE(flush, OMPFlushClause)`
from `clang/Basic/OpenMPKinds.def`, grepped for `OPENMP_CLAUSE`
and added `OPENMP_CLAUSE(flush, OMPFlushClause)` back to the **every**
place where `OPENMP_CLAUSE` is defined and `clang/Basic/OpenMPKinds.def`
is then included.
So as-is, this patch is a NFC. Possibly, some of these
`OPENMP_CLAUSE(flush, OMPFlushClause)` should be dropped,
i don't really know.
Test plan: `ninja check-clang`
Reviewers: ABataev
Reviewed By: ABataev
Subscribers: guansong, arphaman, cfe-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D57280
llvm-svn: 352390
Simon Pilgrim [Mon, 28 Jan 2019 17:02:35 +0000 (17:02 +0000)]
[X86][AVX] Remove lowerShuffleByMerging128BitLanes 2-lane restriction
First step towards adding support for 64-bit unary "sublane" handling (a bit like lowerShuffleAsRepeatedMaskAndLanePermute).
This allows us to add lowerV64I8Shuffle handling.
llvm-svn: 352389
Stefan Granitz [Mon, 28 Jan 2019 16:57:23 +0000 (16:57 +0000)]
[CMake] Add code signing for lldb-server on iOS
llvm-svn: 352388
Stefan Granitz [Mon, 28 Jan 2019 16:57:19 +0000 (16:57 +0000)]
[CMake] Dump LLDB.framework tools at configuration time
llvm-svn: 352387
Simon Pilgrim [Mon, 28 Jan 2019 16:56:38 +0000 (16:56 +0000)]
[LangRef] Mention vector support for bitreverse/bswap intrinsics (PR38012)
Differential Revision: https://reviews.llvm.org/D57309
llvm-svn: 352386
Petr Hosek [Mon, 28 Jan 2019 16:44:56 +0000 (16:44 +0000)]
[libunwind] Drop the dependency on <algorithm>, add placement new inline
We haven't eliminated C++ library dependency altogether in D57251,
UnwindCursor.hpp had an unused dependency on <algorithm> which was
pulling in other C++ headers. Removing that dependency also revealed
(correctly) that we need our own global placement new declaration. Now
libunwind should be independent of the C++ library.
Differential Revision: https://reviews.llvm.org/D57262
llvm-svn: 352384
George Rimar [Mon, 28 Jan 2019 16:36:12 +0000 (16:36 +0000)]
[llvm-objdump] - Restore a piece of code removed by mistake in r352366.
Seems when committed the r352366
("[llvm-objdump] - Print LMAs when dumping section headers.")
I resolved merge conflict incorrectly and removed this piece by mistake.
Bots did not catch this yet, seems they are slow today,
but the `X86/adjust-vma.test` test case fails locally for me without that.
llvm-svn: 352383
Stefan Granitz [Mon, 28 Jan 2019 16:15:27 +0000 (16:15 +0000)]
[CMake] Quick-Fix targets don't exist when building against LLVM install-tree with LLDB_INCLUDE_TESTS=ON
The issue came up during release testing for LLVM 8: https://bugs.llvm.org/show_bug.cgi?id=40443
Differential Revision: https://reviews.llvm.org/D57233
llvm-svn: 352382
Stefan Granitz [Mon, 28 Jan 2019 16:14:57 +0000 (16:14 +0000)]
[CMake] Quick-Fix FileCheck target does not exist when building against LLVM install-tree with COMPILER_RT_INCLUDE_TESTS=ON
The issue came up during release testing for LLVM 8: https://bugs.llvm.org/show_bug.cgi?id=40443
Differential Revision: https://reviews.llvm.org/D57224
llvm-svn: 352381
Sanjay Patel [Mon, 28 Jan 2019 15:51:34 +0000 (15:51 +0000)]
[x86] allow more shuffle splitting to avoid vpermps (PR40434)
This is tricky to make optimal: sometimes we're better off using
a single wider op, but other times it makes more sense to combine
a narrow ops to achieve the same result.
This solves the case from:
https://bugs.llvm.org/show_bug.cgi?id=40434
There's potentially a similar change for vectors with 64-bit elements,
but it needs adjustments similar to rL352333 to avoid creating infinite
loops.
llvm-svn: 352380
George Rimar [Mon, 28 Jan 2019 15:49:41 +0000 (15:49 +0000)]
[llvm-objdump] - Update test after r352366. NFC.
Change the column name.
llvm-svn: 352379
Ranjeet Singh [Mon, 28 Jan 2019 15:48:07 +0000 (15:48 +0000)]
VERSION_GREATER_EQUAL not supported in llvm cmake.
Patch https://reviews.llvm.org/D56329 caused build failures for me when
building on Windows because of the use of cmake operator
'VERSION_GREATER_EQUAL' which isn't supported in older versions of cmake. The
llvm website states that minimum required version of cmake for building llvm is
3.4.3 https://llvm.org/docs/CMake.html
Differential Revision: https://reviews.llvm.org/D57326
llvm-svn: 352378
Arnaud A. de Grandmaison [Mon, 28 Jan 2019 15:42:58 +0000 (15:42 +0000)]
Remove no longer needed Arm specific words in the LICENSE.txt file.
As the codebase is now under the Apache 2.0 license with LLVM
Exceptions, and all Arm's contributions, past or future, are under that
new license, this Arm specific words in LICENSE.txt are no longer
needed.
llvm-svn: 352377
Arnaud A. de Grandmaison [Mon, 28 Jan 2019 15:38:01 +0000 (15:38 +0000)]
Remove no longer needed Arm specific LICENSE.TXT file.
As the codebase is now under the Apache 2.0 license with LLVM
Exceptions, and all Arm's contributions, past or future, are under that
new license, this Arm specific LICENSE.TXT is no longer needed, thus
removing it.
llvm-svn: 352376
Michal Gorny [Mon, 28 Jan 2019 15:16:03 +0000 (15:16 +0000)]
[cmake] Fix get_llvm_lit_path() to respect LLVM_EXTERNAL_LIT always
Refactor the get_llvm_lit_path() logic to respect LLVM_EXTERNAL_LIT,
and require the fallback to be defined explicitly
as LLVM_DEFAULT_EXTERNAL_LIT. This fixes building libcxx standalone
after r346888.
The old logic was using LLVM_EXTERNAL_LIT both as user-defined cache
variable and an optional pre-definition of default value from caller
(e.g. libcxx). It included a hack to make this work by assigning
the value back and forth but it was fragile and stopped working
in libcxx.
The new logic is simpler and more transparent. Default value is
provided in a separate variable, and used only when user-specified
variable is empty (i.e. not overriden).
Differential Revision: https://reviews.llvm.org/D57282
llvm-svn: 352374
George Rimar [Mon, 28 Jan 2019 15:05:10 +0000 (15:05 +0000)]
[obj2yaml] - Dump the sh_entsize section field.
I faced with the fact that obj2yaml does not dump the sh_entsize field.
A problem arose when I tried to dump ELF versioning sections.
This is close to what D50235 did, but D50235 did the change for yaml2obj, and now
I had to do the same for obj2yaml.
Differential revision: https://reviews.llvm.org/D57229
llvm-svn: 352373
George Rimar [Mon, 28 Jan 2019 15:03:47 +0000 (15:03 +0000)]
[LLD][ELF] - Update tests after r352366.
r352366 "[llvm-objdump] - Print LMAs when dumping section headers." changed the format of
llvm-objdump output. We have to update the LLD tests.
llvm-svn: 352372
Jordan Rupprecht [Mon, 28 Jan 2019 15:02:40 +0000 (15:02 +0000)]
[llvm-objcopy] Fix crash when writing empty binary output
Summary: When using llvm-objcopy -O binary and the resulting file will be empty (e.g. removing the only section that would be written, or using --only-keep with a section that doesn't exist/isn't SHF_ALLOC), we crash because FileOutputBuffer expects Size > 0. Add a regression test, and change Buffer to open/truncate the output file in this case.
Reviewers: alexshap, jhenderson, jakehehrlich, espindola
Reviewed By: alexshap, jhenderson
Subscribers: jfb, llvm-commits, emaste, arichardson
Differential Revision: https://reviews.llvm.org/D56806
llvm-svn: 352371
Aleksandar Beserminji [Mon, 28 Jan 2019 14:59:30 +0000 (14:59 +0000)]
[mips] Support for +abs2008 attribute
Instruction abs.[ds] is not generating correct result when working
with NaNs for revisions prior mips32r6 and mips64r6.
To generate a sequence which always produce a correct result, but also
to allow user more control on how his code is compiled, attribute
+abs2008 is added, so user can choose legacy or 2008.
By default legacy mode is used on revisions prior R6. Mips32r6 and
mips64r6 use abs2008 mode by default.
Differential Revision: https://reviews.llvm.org/D35983
llvm-svn: 352370
Bruno Ricci [Mon, 28 Jan 2019 14:18:11 +0000 (14:18 +0000)]
[AST] Introduce GenericSelectionExpr::Association
Introduce a new class GenericSelectionExpr::Association which bundle together
an association expression and its TypeSourceInfo.
An iterator GenericSelectionExpr::AssociationIterator is additionally added to
make it possible to iterate over ranges of Associations. This iterator is a
kind of proxy iterator which abstract over how exactly the expressions and the
TypeSourceInfos are stored.
Differential Revision: https://reviews.llvm.org/D57106
Reviewed By: aaron.ballman
Reviewers: aaron.ballman, steveire, dblaikie, mclow.lists
llvm-svn: 352369
Haojian Wu [Mon, 28 Jan 2019 14:11:49 +0000 (14:11 +0000)]
[clangd] Index main-file macros (bug 39761)
Patch by Nathan Ridge!
Differential Revision: https://reviews.llvm.org/D55739
llvm-svn: 352367
George Rimar [Mon, 28 Jan 2019 14:11:35 +0000 (14:11 +0000)]
[llvm-objdump] - Print LMAs when dumping section headers.
When --section-headers is used, GNU objdump prints both LMA and VMA for sections.
llvm-objdump does not do that what makes it's output be slightly inconsistent.
Patch teaches llvm-objdump to print LMA/VMA for ELF file formats.
The behavior for other formats remains unchanged.
Differential revision: https://reviews.llvm.org/D57146
llvm-svn: 352366
Haojian Wu [Mon, 28 Jan 2019 14:07:45 +0000 (14:07 +0000)]
[clang-tidy] Fix a build error.
llvm-svn: 352364
Hyrum Wright [Mon, 28 Jan 2019 14:03:09 +0000 (14:03 +0000)]
[clang-tidy] Add the abseil-duration-addition check
Differential Revision: https://reviews.llvm.org/D57185
llvm-svn: 352362
Eric Liu [Mon, 28 Jan 2019 14:01:55 +0000 (14:01 +0000)]
[clangd] Suggest adding missing includes for incomplete type diagnostics.
Summary:
This enables clangd to intercept compiler diagnostics and attach fixes (e.g. by
querying index). This patch adds missing includes for incomplete types e.g.
member access into class with only forward declaration. This would allow adding
missing includes for user-typed symbol names that are missing declarations
(e.g. typos) in the future.
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: mgorny, ilya-biryukov, javed.absar, MaskRay, jkorous, mgrang, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D56903
llvm-svn: 352361
Tim Corringham [Mon, 28 Jan 2019 13:50:37 +0000 (13:50 +0000)]
[AMDGPU] Add interpolation builtins
Summary:
Added builtins for the interpolation intrinsics, and related LIT
test.
Reviewers: arsenm, tpr, dstuttard, #amdgpu
Reviewed By: arsenm, #amdgpu
Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, cfe-commits
Differential Revision: https://reviews.llvm.org/D46871
llvm-svn: 352358
Tim Corringham [Mon, 28 Jan 2019 13:48:59 +0000 (13:48 +0000)]
[AMDGPU] Add intrinsics for 16 bit interpolation
Summary:
Added the intrinsics llvm.amdgcn.interp.p1.f16() and
llvm.amdgcn.interp.p2.f16() and related LIT test.
The p1 intrinsic generates code appropriate for both 16 and 32
bank LDS.
Reviewers: #amdgpu, dstuttard, arsenm, tpr
Reviewed By: #amdgpu, arsenm
Subscribers: jvesely, mgorny, arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D46754
llvm-svn: 352357
James Y Knight [Mon, 28 Jan 2019 13:25:57 +0000 (13:25 +0000)]
[opaque pointer types] Remove GraphTraits specialization for Type.
The only caller has been deleted in r352076, and I'd like to minimize
the amount of code walking Type hierarchies generically, to make it
easier to identify code depending on pointee types.
llvm-svn: 352353
Petar Avramovic [Mon, 28 Jan 2019 12:10:17 +0000 (12:10 +0000)]
[MIPS GlobalISel] Select sub
Lower G_USUBO and G_USUBE. Add narrowScalar for G_SUB.
Legalize and select G_SUB for MIPS 32.
Differential Revision: https://reviews.llvm.org/D53416
llvm-svn: 352351
Jeremy Morse [Mon, 28 Jan 2019 12:08:31 +0000 (12:08 +0000)]
[DebugInfo][DAG] Avoid re-ordering of DBG_VALUEs
This patch improves the placement of DBG_VALUEs when by SelectionDAG, which
as documented in PR40427 can go very wrong. At the core of this is
ProcessSourceNode, which assumes the last instruction in a BB is the start
of the last processed IR instruction, which isn't always true.
Instead, use a helper function to call InstrEmitter::EmitNode, that records
before-and-after iterators and determines the first of any new instruction
created during emission. This is passed to ProcessSourceNode, which can
then make more elightened decisions about ordering for DBG_VALUE placement.
Differential revision: https://reviews.llvm.org/D57163
llvm-svn: 352350
Anastasia Stulova [Mon, 28 Jan 2019 11:37:49 +0000 (11:37 +0000)]
Rename getTypeQualifiers to getMethodQualifiers.
Use more descriptive name for the method qualifiers getter.
Differential Revision: https://reviews.llvm.org/D56792
llvm-svn: 352349
George Rimar [Mon, 28 Jan 2019 10:48:54 +0000 (10:48 +0000)]
[llvm-objdump] - Fix comment. NFC.
This was mentioned by James Henderson
in review for https://reviews.llvm.org/D57051.
llvm-svn: 352348
George Rimar [Mon, 28 Jan 2019 10:44:01 +0000 (10:44 +0000)]
[llvm-objdump] - Implement the --adjust-vma option.
GNU objdump's help says: "--adjust-vma: Add OFFSET to all displayed section addresses"
In real life what it does is a bit more complicated
(and IMO not always reasonable. For example, GNU objdump prints not only VMA, but also LMA
for sections. And with --adjust-vma it adjusts LMA, but only when a section has relocations.
llvm-objsump does not seem to support printing LMAs yet, but GNU's logic anyways does not
make sense for me here).
This patch tries to adjust VMA. I tried to implement a reasonable approach.
I am not adjusting sections that are not allocatable. As, for example, adjusting debug sections
VA's and rel[a] sections VA's should not make sense. This behavior seems to be GNU compatible.
Differential revision: https://reviews.llvm.org/D57051
llvm-svn: 352347
Diana Picus [Mon, 28 Jan 2019 10:37:30 +0000 (10:37 +0000)]
[ARM GlobalISel] Support integer division for Thumb2
Support G_SDIV, G_UDIV, G_SREM and G_UREM.
The only significant difference between arm and thumb mode is that we
need to check a different subtarget feature.
llvm-svn: 352346
Gabor Marton [Mon, 28 Jan 2019 10:01:11 +0000 (10:01 +0000)]
[AST] Add structural eq tests for template args
Summary:
New tests added to verify equivalency of templates when their
parameters are different.
Reviewers: a_sidorin, shafik
Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits
Differential Revision: https://reviews.llvm.org/D57235
llvm-svn: 352345
Craig Topper [Mon, 28 Jan 2019 07:03:10 +0000 (07:03 +0000)]
[X86] Add new variadic avx512 compress/expand intrinsics that use vXi1 types for the mask argument.
Custom lower the builtins to these intrinsics. This enables the middle end to optimize out bitcasts for the masks.
llvm-svn: 352344
Craig Topper [Mon, 28 Jan 2019 07:03:03 +0000 (07:03 +0000)]
[X86] Add new variadic avx512 compress/expand intrinsics that use vXi1 types for the mask argument.
Remove and autoupgrade the old intrinsics
llvm-svn: 352343
Craig Topper [Mon, 28 Jan 2019 05:42:39 +0000 (05:42 +0000)]
[X86] Add vbmi2 compressstore and expandload tests that aren't fast-isel tests.
These got removed when we autoupgraded to target independent intrinsics, but we didn't have coverage anywhere else. The avx512f/avx512vl versions do have coverage.
Also move some tests back from the upgrade file that aren't really upgraded.
llvm-svn: 352342
Petr Hosek [Mon, 28 Jan 2019 04:12:54 +0000 (04:12 +0000)]
[CMake] Use __libc_start_main rather than fopen when checking for C library
The check_library_exists CMake uses a custom symbol definition. This
is a problem when checking for C library symbols because Clang
recognizes many of them as builtins, and returns the
-Wbuiltin-requires-header (or -Wincompatible-library-redeclaration)
error. When building with -Werror which is the default, this causes
the check_library_exists check fail making the build think that C
library isn't available.
To avoid this issue, we should use a symbol that isn't recognized by
Clang and wouldn't cause the same issue. __libc_start_main seems like
reasonable choice that fits the bill.
Differential Revision: https://reviews.llvm.org/D57142
llvm-svn: 352341
Amara Emerson [Mon, 28 Jan 2019 03:21:14 +0000 (03:21 +0000)]
[AArch64][GlobalISel] Teach RBS about G_FNEG default mapping.
llvm-svn: 352340
Eric Fiselier [Mon, 28 Jan 2019 02:59:01 +0000 (02:59 +0000)]
update upcoming meeting issue status
llvm-svn: 352339
Amara Emerson [Mon, 28 Jan 2019 02:28:22 +0000 (02:28 +0000)]
[AArch64][GlobalISel] Add some missing vector support for FP arithmetic ops.
Moved the fneg lowering legalization test from AArch64 to X86, as we want to
specify that it's already legal.
llvm-svn: 352338
Amara Emerson [Mon, 28 Jan 2019 02:27:59 +0000 (02:27 +0000)]
[AArch64][GlobalISel] Add some vector support for fp <-> int conversions.
Some unrelated, but benign, test changes as well due to the test update script.
llvm-svn: 352337
Alexandre Ganea [Mon, 28 Jan 2019 01:45:35 +0000 (01:45 +0000)]
[LLD][COFF] Partial sections
Persist (input) sections that make up an OutputSection. This is a supporting patch for the upcoming D54802.
Differential Revision: https://reviews.llvm.org/D55293
llvm-svn: 352336
Dan Liew [Sun, 27 Jan 2019 22:45:11 +0000 (22:45 +0000)]
Make more allocator methods work correctly with in an out-of-process mode.
Summary:
This makes `GetBlockBegin()` and `GetBlockBeginFastLocked()` work correctly with `RemoteAddressSpaceView`.
This has a knock on effect of also making the `PointerIsMine()` and
`GetMetaData()` methods behave correctly when `RemoteAddressSpaceView`
is used to instantiate the allocators.
This will be used by future out-of-process allocator enumeration
patches.
rdar://problem/
45284065
Reviewers: kcc, vitalybuka, dvyukov, cryptoad, eugenis, george.karpenkov, yln
Subscribers: #sanitizers, llvm-commits, kubamracek
Differential Revision: https://reviews.llvm.org/D56964
llvm-svn: 352335
Matt Arsenault [Sun, 27 Jan 2019 22:36:24 +0000 (22:36 +0000)]
GlobalISel: Don't reduce elements for atomic load/store
This is invalid for the same reason as in the narrowScalar handling
for load.
llvm-svn: 352334
Sanjay Patel [Sun, 27 Jan 2019 21:53:33 +0000 (21:53 +0000)]
[x86] add restriction for lowering to vpermps
This transform was added with rL351346, and we had
an escape for shufps, but we also want one for
unpckps vs. vpermps because vpermps doesn't take
an immediate shuffle index operand.
llvm-svn: 352333
Matt Arsenault [Sun, 27 Jan 2019 21:53:09 +0000 (21:53 +0000)]
GlobalISel: Factor fewerElementVectors into separate functions
llvm-svn: 352332