OSDN Git Service

android-x86/external-llvm.git
5 years ago[HotColdSplit] Simplify tests by lowering their splitting thresholds
Vedant Kumar [Thu, 17 Jan 2019 21:29:34 +0000 (21:29 +0000)]
[HotColdSplit] Simplify tests by lowering their splitting thresholds

This gets rid of the brittle/mysterious calls to @sink()/@sideeffect()
peppered throughout the test cases. They are no longer needed to force
splitting to occur.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351480 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix an MSVC bot failure from r351474.
Erik Pilkington [Thu, 17 Jan 2019 20:52:10 +0000 (20:52 +0000)]
Fix an MSVC bot failure from r351474.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351477 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SampleFDO] Skip profile reading when flattened profile used in ThinLTO postlink
Wei Mi [Thu, 17 Jan 2019 20:48:34 +0000 (20:48 +0000)]
[SampleFDO] Skip profile reading when flattened profile used in ThinLTO postlink

If the sample profile has no inlining hierachy information included, we call
the sample profile is flattened. For flattened profile, in ThinLTO postlink
phase, SampleProfileLoader's hot function inlining and profile annotation will
do nothing, so it is better to save the effort to read in the profile and run
the sample profile loader pass. It is helpful for reducing compile time when
the flattened profile is huge.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351476 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Don't sink dynamic allocas
Reid Kleckner [Thu, 17 Jan 2019 20:46:53 +0000 (20:46 +0000)]
[InstCombine] Don't sink dynamic allocas

Summary:
InstCombine's sinking algorithm only thinks about memory. It doesn't
think about non-memory constraints like stack object lifetime. It can
sink dynamic allocas across a stacksave call, which may be used with
stackrestore, which can incorrectly reduce the lifetime of the dynamic
alloca.

Fixes PR40365

Reviewers: hfinkel, efriedma

Subscribers: hiraditya, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351475 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoNFC: Make the copies of the demangler byte-for-byte identical
Erik Pilkington [Thu, 17 Jan 2019 20:37:51 +0000 (20:37 +0000)]
NFC: Make the copies of the demangler byte-for-byte identical

With this patch, the copies of the files ItaniumDemangle.h,
StringView.h, and Utility.h are kept byte-for-byte in sync between
libcxxabi and llvm. All differences (namespaces, fallthrough, and
unreachable macros) are defined in each copies' DemanglerConfig.h.

This patch also adds a script to copy changes from libcxxabi
(cp-to-llvm.sh), and a README.txt explaining the situation.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351474 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix the buildbot failure introduced by r351404
Sanjin Sijaric [Thu, 17 Jan 2019 20:24:14 +0000 (20:24 +0000)]
Fix the buildbot failure introduced by r351404

EXPENSIVE_CHECKS buildbots are failing due to r351404.

Add x1 as live in to the funclet basic block for SEH funclets, as well as
-verify-machineinstrs to the test case that triggered the failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351472 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agollvm build: Merge r351448
Nico Weber [Thu, 17 Jan 2019 20:20:56 +0000 (20:20 +0000)]
llvm build: Merge r351448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351469 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Fixing 2 more symbol offset related tests.
Wouter van Oortmerssen [Thu, 17 Jan 2019 19:18:05 +0000 (19:18 +0000)]
[WebAssembly] Fixing 2 more symbol offset related tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351465 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Test] Fix debug-loc-0.mir with EXPENSIVE_CHECKS
Jonas Devlieghere [Thu, 17 Jan 2019 18:35:14 +0000 (18:35 +0000)]
[Test] Fix debug-loc-0.mir with EXPENSIVE_CHECKS

The `llc` invocation was missing `-start-before=machine-cp`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351464 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Fixed objdump not parsing function headers.
Wouter van Oortmerssen [Thu, 17 Jan 2019 18:14:09 +0000 (18:14 +0000)]
[WebAssembly] Fixed objdump not parsing function headers.

Summary:
objdump was interpreting the function header containing the locals
declaration as instructions. To parse these without injecting target
specific code in objdump, MCDisassembler::onSymbolStart was added to
be implemented by the WebAssembly implemention.

WasmObjectFile now returns a code offset for the "address" of a symbol,
rather than the index. This is also more in-line with what other
targets do.

Also ensured that the AsmParser correctly puts each function
in its own segment to enable this test case.

Reviewers: sbc100, dschuff

Subscribers: jgravelle-google, aheejin, sunfish, rupprecht, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351460 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd a missing dependency to fix build.
Rui Ueyama [Thu, 17 Jan 2019 17:55:47 +0000 (17:55 +0000)]
Add a missing dependency to fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351458 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[ThinLTO] Add summary entries for index-based WPD"
Teresa Johnson [Thu, 17 Jan 2019 16:05:04 +0000 (16:05 +0000)]
Revert "[ThinLTO] Add summary entries for index-based WPD"

Mistaken commit of something still under review!

This reverts commit r351453.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351455 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd -dump-input=always to cfi-devirt test to debug flake
Teresa Johnson [Thu, 17 Jan 2019 15:49:04 +0000 (15:49 +0000)]
Add -dump-input=always to cfi-devirt test to debug flake

To help diagnose flaky bot failures in PR40351.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351454 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ThinLTO] Add summary entries for index-based WPD
Teresa Johnson [Thu, 17 Jan 2019 15:49:03 +0000 (15:49 +0000)]
[ThinLTO] Add summary entries for index-based WPD

Summary:
If LTOUnit splitting is disabled, the module summary analysis computes
the summary information necessary to perform single implementation
devirtualization during the thin link with the index and no IR. The
information collected from the regular LTO IR in the current hybrid WPD
algorithm is summarized, including:
1) For vtable definitions, record the function pointers and their offset
within the vtable initializer (subsumes the information collected from
IR by tryFindVirtualCallTargets).
2) A record for each type metadata summarizing the vtable definitions
decorated with that metadata (subsumes the TypeIdentiferMap collected
from IR).

Also added are the necessary bitcode records, and the corresponding
assembly support.

The index-based WPD will be sent as a follow-on.

Depends on D53890.

Reviewers: pcc

Subscribers: mehdi_amini, Prazek, inglorion, eraman, steven_wu, dexonsmith, arphaman, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351453 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj][ELF]Add demangling support
James Henderson [Thu, 17 Jan 2019 15:34:12 +0000 (15:34 +0000)]
[llvm-readobj][ELF]Add demangling support

This change adds demangling support to the ELF side of llvm-readobj,
under the switch --demangle/-C.

The following places are demangled: symbol table dumps (static and
dynamic), relocation dumps (static and dynamic), addrsig dumps, call
graph profile dumps, and group section signature symbols.

Although GNU readelf doesn't support demangling, it is still a useful
feature to have, and brings it on a par with llvm-objdump's
capabilities.

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

Reviewed by: grimar, rupprecht

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351450 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMove demangling function from llvm-objdump to Demangle library
James Henderson [Thu, 17 Jan 2019 15:18:44 +0000 (15:18 +0000)]
Move demangling function from llvm-objdump to Demangle library

This allows it to be used in an upcoming llvm-readobj change.

A small change in internal behaviour of the function is to always call
the microsoftDemangle function if the string does not have an itanium
encoding prefix, rather than only if it starts with '?'. This is
harmless because the microsoftDemangle function does the same check
already.

Reviewed by: grimar, erik.pilkington

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351448 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agobuild_llvm_package.bat: Run more tests
Hans Wennborg [Thu, 17 Jan 2019 13:11:15 +0000 (13:11 +0000)]
build_llvm_package.bat: Run more tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351436 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LoopSimplifyCFG] Form LCSSA when a parent loop becomes a sibling
Max Kazantsev [Thu, 17 Jan 2019 12:51:10 +0000 (12:51 +0000)]
[LoopSimplifyCFG] Form LCSSA when a parent loop becomes a sibling

During the transforms in LoopSimplifyCFG, when we remove a dead exiting edge, the
parent loop may stop being reachable from the child loop, and therefore they become
siblings. If the former child loop had uses of some values from its former parent loop,
now such uses will require LCSSA Phis, even if they weren't needed before. So we must
form LCSSA for all loops that stopped being ancestors of the current loop in this case.

Differential Revision: https://reviews.llvm.org/D56144
Reviewed By: fedor.sergeev

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351434 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LoopSimplifyCFG] Fix order of deletion of complex dead subloops
Max Kazantsev [Thu, 17 Jan 2019 12:25:40 +0000 (12:25 +0000)]
[LoopSimplifyCFG] Fix order of deletion of complex dead subloops

Function `DeleteDeadBlock` requires that all predecessors of a block
being deleted have already been deleted, with the exception of a
single-block loop. When we use it for removal of dead subloops that
contain more than one block, we may not fulfull this requirement and
fail an assertion.

This patch replaces invocation of `DeleteDeadBlock` with a generalized
version `DeleteDeadBlocks` that is able to deal with multiple dead blocks,
even if they contain some cycles.

Differential Revision: https://reviews.llvm.org/D56121
Reviewed By: fedor.sergeev

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351433 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][SSE] Add PR40340 test case
Simon Pilgrim [Thu, 17 Jan 2019 11:20:23 +0000 (11:20 +0000)]
[X86][SSE] Add PR40340 test case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351430 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add AVX512 test to insertps
Simon Pilgrim [Thu, 17 Jan 2019 11:11:15 +0000 (11:11 +0000)]
[X86] Add AVX512 test to insertps

Pre-commit for PR40340

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351429 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoGlobalISel: Add comment to clarify G_BUILD_VECTOR
Matt Arsenault [Thu, 17 Jan 2019 10:50:07 +0000 (10:50 +0000)]
GlobalISel: Add comment to clarify G_BUILD_VECTOR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351428 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAllow FP types for atomicrmw xchg
Matt Arsenault [Thu, 17 Jan 2019 10:49:01 +0000 (10:49 +0000)]
Allow FP types for atomicrmw xchg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351427 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MC] Remove unused variable
Benjamin Kramer [Thu, 17 Jan 2019 10:25:18 +0000 (10:25 +0000)]
[MC] Remove unused variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351426 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix capitalization. NFC
Diana Picus [Thu, 17 Jan 2019 10:11:59 +0000 (10:11 +0000)]
Fix capitalization. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351425 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM GlobalISel] Allow calls to varargs functions
Diana Picus [Thu, 17 Jan 2019 10:11:55 +0000 (10:11 +0000)]
[ARM GlobalISel] Allow calls to varargs functions

Allow varargs functions to be called, both in arm and thumb mode. This
boils down to choosing the correct calling convention, which we can
easily test by making sure arm_aapcscc is used instead of
arm_aapcs_vfpcc when the callee is variadic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351424 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Add codegen support for RV64A
Alex Bradbury [Thu, 17 Jan 2019 10:04:39 +0000 (10:04 +0000)]
[RISCV] Add codegen support for RV64A

In order to support codegen RV64A, this patch:
* Introduces masked atomics intrinsics for atomicrmw operations and cmpxchg
  that use the i64 type. These are ultimately lowered to masked operations
  using lr.w/sc.w, but we need to use these alternate intrinsics for RV64
  because i32 is not legal
* Modifies RISCVExpandPseudoInsts.cpp to handle PseudoAtomicLoadNand64 and
  PseudoCmpXchg64
* Modifies the AtomicExpandPass hooks in RISCVTargetLowering to sext/trunc as
  needed for RV64 and to select the i64 intrinsic IDs when necessary
* Adds appropriate patterns to RISCVInstrInfoA.td
* Updates test/CodeGen/RISCV/atomic-*.ll to show RV64A support

This ends up being a fairly mechanical change, as the logic for RV32A is
effectively reused.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351422 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM64][Windows] Share unwind codes between epilogues
Sanjin Sijaric [Thu, 17 Jan 2019 09:45:17 +0000 (09:45 +0000)]
[ARM64][Windows] Share unwind codes between epilogues

There are cases where we have multiple epilogues that have the exact same unwind
code sequence.  In that case, the epilogues can share the same unwind codes in
the .xdata section.  This should get us past the assert "SEH unwind data
splitting not yet implemented" in many cases.

We still need to add support for generating multiple .pdata/.xdata sections for
those functions that need to be split into fragments.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351421 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] - Fix comment. NFC.
George Rimar [Thu, 17 Jan 2019 09:14:33 +0000 (09:14 +0000)]
[llvm-objdump] - Fix comment. NFC.

Forgot to address this one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351418 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] - Simplify the getRelocationValueString. NFCI.
George Rimar [Thu, 17 Jan 2019 09:13:17 +0000 (09:13 +0000)]
[llvm-objdump] - Simplify the getRelocationValueString. NFCI.

This refactors the getRelocationValueString method.
It is a bit overcomplicated and it is possible to reduce it without
losing the functionality it seems.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351417 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Factor out some local vars
Max Kazantsev [Thu, 17 Jan 2019 06:20:42 +0000 (06:20 +0000)]
[NFC] Factor out some local vars

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351416 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Parse llvm.ident into producers section
Thomas Lively [Thu, 17 Jan 2019 02:29:55 +0000 (02:29 +0000)]
[WebAssembly] Parse llvm.ident into producers section

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351413 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MergeFunc] Prevent silent miscompile of vararg functions
Vedant Kumar [Thu, 17 Jan 2019 02:15:05 +0000 (02:15 +0000)]
[MergeFunc] Prevent silent miscompile of vararg functions

The function merging pass miscompiles identical vararg functions. The
forwarding thunk it emits doesn't forward the full variable-length list
of arguments. Disable merging for vararg functions for now.

I've filed llvm.org/PR40345 to track the issue.

rdar://47326238

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351411 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[WebAssembly] Parse llvm.ident into producers section"
Thomas Lively [Thu, 17 Jan 2019 00:39:49 +0000 (00:39 +0000)]
Revert "[WebAssembly] Parse llvm.ident into producers section"

This reverts commit eccdbba3a02a33e13b5262e92200a33e2ead873d.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351410 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Remove GCCBuiltin from deprecated avx512 scatter intrinsics that use scalar...
Craig Topper [Thu, 17 Jan 2019 00:34:04 +0000 (00:34 +0000)]
[X86] Remove GCCBuiltin from deprecated avx512 scatter intrinsics that use scalar integers for mask.

We will custom emit these builtins in clang using the new intrinsics that take a vXi1 mask.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351407 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Fix formatting.
Eli Friedman [Thu, 17 Jan 2019 00:31:35 +0000 (00:31 +0000)]
[docs] Fix formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351406 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[FunctionComparator] Consider tail call kinds
Vedant Kumar [Thu, 17 Jan 2019 00:29:14 +0000 (00:29 +0000)]
[FunctionComparator] Consider tail call kinds

Essentially, do not treat `call` and `musttail call` as the same thing.

As a drive-by, fold CallInst and InvokeInst handling together using the
CallSite helper.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351405 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SEH] [ARM64] Retrieve the frame pointer from SEH funclets
Sanjin Sijaric [Thu, 17 Jan 2019 00:24:38 +0000 (00:24 +0000)]
[SEH] [ARM64] Retrieve the frame pointer from SEH funclets

The Windows ARM64 runtime passes the establisher frame to funclets as the first
argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351404 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Add more ARM/AArch64 links to CompilerWriterInfo.rst .
Eli Friedman [Thu, 17 Jan 2019 00:21:08 +0000 (00:21 +0000)]
[docs] Add more ARM/AArch64 links to CompilerWriterInfo.rst .

Also, fix a few existing links so they don't require registration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351403 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Parse llvm.ident into producers section
Thomas Lively [Wed, 16 Jan 2019 23:46:14 +0000 (23:46 +0000)]
[WebAssembly] Parse llvm.ident into producers section

Summary:
Everything before the word "version" is the tool, and everything after
the word "version" is the version.

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351399 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix a mistake in rL351392.
Wei Mi [Wed, 16 Jan 2019 23:31:40 +0000 (23:31 +0000)]
Fix a mistake in rL351392.

PGOInstrGen should be initialized to "" instead of false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351397 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AsmPrinter] Collapse .loc 0 0 directives
Jonas Devlieghere [Wed, 16 Jan 2019 23:26:29 +0000 (23:26 +0000)]
[AsmPrinter] Collapse .loc 0 0 directives

Currently we do not always collapse subsequent .loc 0 0 directives. The
reason is that we were checking for a PrevInstLoc which is not set when
we emit a line-0 record. We should only check the LastAsmLine, which
seems to be created exactly for this purpose.

  // When we emit a line-0 record, we don't update PrevInstLoc; so look at
  // the last line number actually emitted, to see if it was line 0.
  unsigned LastAsmLine =
    Asm->OutStreamer->getContext().getCurrentDwarfLoc().getLine();

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351395 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PGO] Make pgo related options in opt more consistent.
Wei Mi [Wed, 16 Jan 2019 23:19:02 +0000 (23:19 +0000)]
[PGO] Make pgo related options in opt more consistent.

Currently we have pgo options defined in PassManagerBuilder.cpp only for
instrument pgo, but not for sample pgo. We also have pgo options defined
in NewPMDriver.cpp in opt only for new pass manager and for all kinds of
pgo. They have some inconsistency.

To make the options more consistent and make tests writing easier, the
patch let old pass manager to share the same pgo options with new pass
manager in opt, and removes the options in PassManagerBuilder.cpp.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351392 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Remove GCCBuiltin from deprecated gather builtins in preparation for custom...
Craig Topper [Wed, 16 Jan 2019 22:34:24 +0000 (22:34 +0000)]
[X86] Remove GCCBuiltin from deprecated gather builtins in preparation for custom handling in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351389 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Remove expected failure from known_gcc_test_failures.txt. NFC.
Sam Clegg [Wed, 16 Jan 2019 22:26:59 +0000 (22:26 +0000)]
[WebAssembly] Remove expected failure from known_gcc_test_failures.txt.  NFC.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351388 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Factor out + document build requirements
JF Bastien [Wed, 16 Jan 2019 22:22:38 +0000 (22:22 +0000)]
[NFC] Factor out + document build requirements

Summary: This change factors out compiler checking / warning, and documents LLVM_FORCE_USE_OLD_TOOLCHAIN. It doesn't introduce any functional changes nor policy changes, these will come late.

Subscribers: mgorny, jkorous, dexonsmith, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351387 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TSan] Fix comment. NFC.
Philip Pfaffe [Wed, 16 Jan 2019 22:08:42 +0000 (22:08 +0000)]
[TSan] Fix comment. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351386 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Sink complex MCU CC helper to .cpp file from .h file, NFC
Reid Kleckner [Wed, 16 Jan 2019 22:05:36 +0000 (22:05 +0000)]
[X86] Sink complex MCU CC helper to .cpp file from .h file, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351384 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv
Craig Topper [Wed, 16 Jan 2019 21:46:32 +0000 (21:46 +0000)]
[X86] Add X86ISD::VSHLV and X86ISD::VSRLV nodes for psllv and psrlv

Previously we used ISD::SHL and ISD::SRL to represent these in SelectionDAG. ISD::SHL/SRL interpret an out of range shift amount as undefined behavior and will constant fold to undef. While the intrinsics are defined to return 0 for out of range shift amounts. A previous patch added a special node for VPSRAV to produce all sign bits.

This was previously believed safe because undefs frequently get turned into 0 either from the constant pool or a desire to not have a false register dependency. But undef is treated specially in some optimizations. For example, its ignored in detection of vector splats. So if the ISD::SHL/SRL can be constant folded and all of the elements with in bounds shift amounts are the same, we might fold it to single element broadcast from the constant pool. This would not put 0s in the elements with out of bounds shift amounts.

We do have an existing InstCombine optimization to use shl/lshr when the shift amounts are all constant and in bounds. That should prevent some loss of constant folding from this change.

Patch by zhutianyang and Craig Topper

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351381 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just...
Craig Topper [Wed, 16 Jan 2019 21:46:28 +0000 (21:46 +0000)]
[X86] Use X86ISD::BLENDV for blendv intrinsics. Replace vselect with blendv just before isel table lookup. Remove vselect isel patterns.

This cleans up the duplication we have with both intrinsic isel patterns and vselect isel patterns. This should also allow the intrinsics to get SimplifyDemandedBits support for the condition.

I've switched the canonical pattern in isel to use the X86ISD::BLENDV node instead of VSELECT. Since it always seemed weird to move from BLENDV with its relaxed rules on condition bits to VSELECT which has strict rules about all bits of the condition element being the same. Its more correct to go from VSELECT to BLENDV.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351380 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Adjust the chain for loads writing to the HI part of a register.
Changpeng Fang [Wed, 16 Jan 2019 21:32:53 +0000 (21:32 +0000)]
AMDGPU: Adjust the chain for loads writing to the HI part of a register.

Summary:
  For these loads that write to the HI part of a register, we should chain them to the op that writes to the LO part
of the register to maintain the appropriate order.

Reviewers:
  rampitec, arsenm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351379 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add a one use check to the setcc inversion code in combineVSelectWithAllOnesOrZeros
Craig Topper [Wed, 16 Jan 2019 21:29:29 +0000 (21:29 +0000)]
[X86] Add a one use check to the setcc inversion code in combineVSelectWithAllOnesOrZeros

If we're going to generate a new inverted setcc, we should make sure we will be able to remove the old setcc.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351378 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add test case for D56765. NFC
Craig Topper [Wed, 16 Jan 2019 21:29:26 +0000 (21:29 +0000)]
[X86] Add test case for D56765. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351377 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add additional saturating add/sub vector tests; NFC
Nikita Popov [Wed, 16 Jan 2019 20:53:23 +0000 (20:53 +0000)]
[X86] Add additional saturating add/sub vector tests; NFC

Additional tests for vNi32 and vNi64. I've added these for
usub.sat before, this covers uadd.sat, ssub.sat and sadd.sat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351375 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix most of LLVM's tests with LLVM_ENABLE_PIC=OFF
Nico Weber [Wed, 16 Jan 2019 20:44:36 +0000 (20:44 +0000)]
Fix most of LLVM's tests with LLVM_ENABLE_PIC=OFF

Lots of tests rely on llvm-lto being present, but LLVM_ENABLE_PIC=OFF currently
disables building that executable.

There's no reason for not building llvm-lto with LLVM_ENABLE_PIC=OFF so just
build it. r191042 moved it into a "if (!WIN)" block at the time, and then
211852 made that "if(NOT CYGWIN AND LLVM_ENABLE_PIC)" -- but that's only needed
for LTO (the ld64 plugin), not for the llvm-lto binary.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351374 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[COFF, ARM64] Implement support for SEH extensions __try/__except/__finally
Mandeep Singh Grang [Wed, 16 Jan 2019 19:52:59 +0000 (19:52 +0000)]
[COFF, ARM64] Implement support for SEH extensions __try/__except/__finally

Summary:
This patch supports MS SEH extensions __try/__except/__finally. The intrinsics localescape and localrecover are responsible for communicating escaped static allocas from the try block to the handler.

We need to preserve frame pointers for SEH. So we create a new function/property HasLocalEscape.

Reviewers: rnk, compnerd, mstorsjo, TomTan, efriedma, ssijaric

Reviewed By: rnk, efriedma

Subscribers: smeenai, jrmuizel, alex, majnemer, ssijaric, ehsan, dmajor, kristina, javed.absar, kristof.beyls, chrib, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351370 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Hexagon] Do not promote terminator instructions in Hexagon loop idioms
Krzysztof Parzyszek [Wed, 16 Jan 2019 19:40:27 +0000 (19:40 +0000)]
[Hexagon] Do not promote terminator instructions in Hexagon loop idioms

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351369 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Add headers to compiler-rt build files.
Peter Collingbourne [Wed, 16 Jan 2019 18:45:12 +0000 (18:45 +0000)]
gn build: Add headers to compiler-rt build files.

Also fix sort order in llvm/lib/CodeGen/GlobalISel/BUILD.gn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351367 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][BtVer2] Update latency of horizontal operations.
Andrea Di Biagio [Wed, 16 Jan 2019 18:18:01 +0000 (18:18 +0000)]
[X86][BtVer2] Update latency of horizontal operations.

On Jaguar, horizontal adds/subs have local forwarding disable.
That means, we pay a compulsory extra cycle of write-back stage, and the value
is not available until the end of that stage.

This patch changes the latency of horizontal operations by adding an extra
cycle. With this patch, latency numbers now match what is reported by perf.

I plan to send another patch to also 'fix' the latency of shuffle operations (on
Jaguar, local forwarding is disabled for vector shuffles too).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351366 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] getFauxShuffleMask - bail for non-byte aligned shuffle types
Simon Pilgrim [Wed, 16 Jan 2019 18:15:31 +0000 (18:15 +0000)]
[X86] getFauxShuffleMask - bail for non-byte aligned shuffle types

Remove the existing assertion and just return false for unexpected shuffle value types (<X x i1> mainly....).

Found while updating combineX86ShufflesRecursively to run within SimplifyDemandedVectorElts/SimplifyDemandedBits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351365 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Regenerate test
Simon Pilgrim [Wed, 16 Jan 2019 18:00:09 +0000 (18:00 +0000)]
[X86] Regenerate test

Split check-prefixes to support a future commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351362 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[elfabi] Add support for reading DT_SONAME from binaries
Armando Montanez [Wed, 16 Jan 2019 17:47:16 +0000 (17:47 +0000)]
[elfabi] Add support for reading DT_SONAME from binaries

This change gives the llvm-elfabi tool the ability to read DT_SONAME from a binary ELF file into an ELFStub.

Added:

 - DynamicEntries struct for storing dynamic entries that are relevant to elfabi.
 - terminatedSubstr() retrieves a null-terminated substring from a StringRef.
 - appendToError() appends a string to an error, allowing more specific error messages.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351361 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Allow creation of DBG_VALUEs in blocks where the operand is not used
Jeremy Morse [Wed, 16 Jan 2019 17:25:27 +0000 (17:25 +0000)]
[DebugInfo] Allow creation of DBG_VALUEs in blocks where the operand is not used

dbg.value intrinsics can appear in blocks where their operand is not used,
meaning the operand never receives an SDNode, and thus no DBG_VALUE will
be created. Get around this by looking to see whether the operand has already
been allocated a virtual register. This allows dbg.values of Phi node and
Values that are used across basic blocks to successfully be translated into
DBG_VALUEs.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351358 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRemove misleading line about git's lack of revision numbers.
Erich Keane [Wed, 16 Jan 2019 16:59:11 +0000 (16:59 +0000)]
Remove misleading line about git's lack of revision numbers.

Change-Id: I8a22cb4b4bef9bceee1f43381435d664c2cfd770

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351357 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj] Set correct offset when dumping hex section output.
Sid Manning [Wed, 16 Jan 2019 16:17:19 +0000 (16:17 +0000)]
[llvm-readobj] Set correct offset when dumping hex section output.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351356 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] add tests for extracted scalar casts (PR39974); NFC
Sanjay Patel [Wed, 16 Jan 2019 16:11:30 +0000 (16:11 +0000)]
[x86] add tests for extracted scalar casts (PR39974); NFC

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351354 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add combineX86ShufflesRecursively helper. NFCI.
Simon Pilgrim [Wed, 16 Jan 2019 16:01:42 +0000 (16:01 +0000)]
[X86] Add combineX86ShufflesRecursively helper. NFCI.

combineX86ShufflesRecursively is pretty cumbersome with a lot of arguments that only matter later in recursion.

This commit adds a wrapper version that only takes the initial root Op to simplify calls that don't need to worry about these.

An early, cleanup step towards merging combineX86ShufflesRecursively into SimplifyDemandedVectorElts/SimplifyDemandedBits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351352 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Add llvm.amdgcn.ds.ordered.add & swap
Marek Olsak [Wed, 16 Jan 2019 15:43:53 +0000 (15:43 +0000)]
AMDGPU: Add llvm.amdgcn.ds.ordered.add & swap

Reviewers: arsenm, nhaehnle

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351351 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SLP] Fix PR40310: The reduction nodes should stay scalar.
Alexey Bataev [Wed, 16 Jan 2019 15:39:52 +0000 (15:39 +0000)]
[SLP] Fix PR40310: The reduction nodes should stay scalar.

Summary:
Sometimes the SLP vectorizer tries to vectorize the horizontal reduction
nodes during regular vectorization. This may happen inside of the loops,
when there are some vectorizable PHIs. Patch fixes this by checking if
the node is the reduction node and thus it must not be vectorized, it must
be gathered.

Reviewers: RKSimon, spatel, hfinkel, fedor.sergeev

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351349 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-nm] Allow --size-sort to print symbols with only Symbol size
Saurabh Badhwar [Wed, 16 Jan 2019 14:38:22 +0000 (14:38 +0000)]
[llvm-nm] Allow --size-sort to print symbols with only Symbol size

Summary:
When llvm-nm is passed only the --size-sort option for an object file, there is no output generated.
The commit modifies the behavior to print the symbols sorted and their size which is also inline with
the output of the GNU nm tool.

Signed-off-by: Saurabh Badhwar <sbsaurabhbadhwar9@gmail.com>
Reviewers: enderby, rupprecht

Reviewed By: rupprecht

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351347 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] lower shuffle of extracts to AVX2 vperm instructions
Sanjay Patel [Wed, 16 Jan 2019 14:15:18 +0000 (14:15 +0000)]
[x86] lower shuffle of extracts to AVX2 vperm instructions

I was trying to prevent shuffle regressions while matching more horizontal ops
and ended up here:
  shuf (extract X, 0), (extract X, 4), Mask --> extract (shuf X, undef, Mask'), 0

The affected tests were added for:
https://bugs.llvm.org/show_bug.cgi?id=34380

This patch won't change the examples in the bug report itself, but we should be
able to extend this to catch more types.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351346 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MSP430] Emit a separate section for every interrupt vector
Anton Korobeynikov [Wed, 16 Jan 2019 14:03:41 +0000 (14:03 +0000)]
[MSP430] Emit a separate section for every interrupt vector

This is LLVM part of D56663

Linker scripts shipped by TI require to have every
interrupt vector in a separate section with a specific name:

 SECTIONS
 {
   __interrupt_vector_XX   : { KEEP (*(__interrupt_vector_XX )) } > VECTXX
   ...
 }

Follow the requirement emit the section for every vector
which contain address of interrupt handler:

  .section  __interrupt_vector_XX,"ax",@progbits
  .word %isr%

Patch by Kristina Bessonova!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351345 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][SSE] Add additional PR40318 shuffle test cases
Simon Pilgrim [Wed, 16 Jan 2019 13:15:59 +0000 (13:15 +0000)]
[X86][SSE] Add additional PR40318 shuffle test cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351333 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r351324 "Build LLVM-C.dll by default on windows and enable in release package"
Hans Wennborg [Wed, 16 Jan 2019 12:36:28 +0000 (12:36 +0000)]
Revert r351324 "Build LLVM-C.dll by default on windows and enable in release package"

This broke the build, ending up with too long command-lines when invoking gen-mscv-exports.py.

> As it says in the subject, should have gone long enough now that this
> should be safe. This will greatly simplify dealing with LLVM for people
> that just want to use the C API on windows. This is a follow up from
> D35077.
>
> Patch by Jakob Bornecrantz!
>
> Differential revision: https://reviews.llvm.org/D56774

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351329 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAssertion in isAllocaPromotable due to extra bitcast goes into lifetime marker
Gabor Buella [Wed, 16 Jan 2019 12:06:17 +0000 (12:06 +0000)]
Assertion in isAllocaPromotable due to extra bitcast goes into lifetime marker

For the given test SROA detects possible replacement and creates a correct alloca. After that SROA is adding lifetime markers for this new alloca. The function getNewAllocaSlicePtr is trying to deduce the pointer type based on the original alloca, which is split, to use it later in lifetime intrinsic.

For the test we ended up with such code (rA is initial alloca [10 x float], which is split, and rA.sroa.0.0 is a new split allocation)

```
%rA.sroa.0.0.rA.sroa_cast = bitcast i32* %rA.sroa.0 to [10 x float]*    <----- this one causing the assertion and is an extra bitcast
%5 = bitcast [10 x float]* %rA.sroa.0.0.rA.sroa_cast to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* %5)
```

isAllocaPromotable code assumes that a user of alloca may go into lifetime marker through bitcast but it must be the only one bitcast to i8* type. In the test it's not a i8* type, return false and throw the assertion.

As we are creating a pointer, which will be used in lifetime markers only, the proposed fix is to create a bitcast to i8* immediately to avoid extra bitcast creation.

The test is a greatly simplified to just reproduce the assertion.

Author: Igor Tsimbalist <igor.v.tsimbalist@intel.com>

Reviewers: chandlerc, craig.topper

Reviewed By: chandlerc

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351325 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoBuild LLVM-C.dll by default on windows and enable in release package
Hans Wennborg [Wed, 16 Jan 2019 11:47:56 +0000 (11:47 +0000)]
Build LLVM-C.dll by default on windows and enable in release package

As it says in the subject, should have gone long enough now that this
should be safe. This will greatly simplify dealing with LLVM for people
that just want to use the C API on windows. This is a follow up from
D35077.

Patch by Jakob Bornecrantz!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351324 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MSan] Apply the ctor creation scheme of TSan
Philip Pfaffe [Wed, 16 Jan 2019 11:14:07 +0000 (11:14 +0000)]
[MSan] Apply the ctor creation scheme of TSan

Summary: To avoid adding an extern function to the global ctors list, apply the changes of D56538 also to MSan.

Reviewers: chandlerc, vitalybuka, fedor.sergeev, leonardchan

Subscribers: hiraditya, bollu, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351322 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoBump the trunk version to 9.0.0svn
Hans Wennborg [Wed, 16 Jan 2019 10:57:02 +0000 (10:57 +0000)]
Bump the trunk version to 9.0.0svn

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351320 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SelectionDAG] Update check in createOperands to reflect max() is a valid value.
Florian Hahn [Wed, 16 Jan 2019 10:06:04 +0000 (10:06 +0000)]
[SelectionDAG] Update check in createOperands to reflect max() is a valid value.

The value returned by max() is the last valid value, adjust the
comparison accordingly.

The code added in D55073 creates TokenFactors with max() operands.

Reviewers: aemerson, efriedma, RKSimon, craig.topper

Reviewed By: aemerson

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351318 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Support] Remove error return value from one overload of fs::make_absolute
Pavel Labath [Wed, 16 Jan 2019 09:55:32 +0000 (09:55 +0000)]
[Support] Remove error return value from one overload of fs::make_absolute

Summary:
The version of make_absolute which accepted a specific directory to use
as the "base" for the computation could never fail, even though it
returned a std::error_code. The reason for that seems to be historical
-- the CWD flavour (which can fail due to failure to retrieve CWD) was
there first, and the new version was implemented by extending that.

This removes the error return value from the non-CWD overload and
reimplements the CWD version on top of that. This enables us to remove
some dead code where people were pessimistically trying to handle the
errors returned from this function.

Reviewers: zturner, sammccall

Subscribers: hiraditya, kristina, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351317 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NewPM][TSan] Reiterate the TSan port
Philip Pfaffe [Wed, 16 Jan 2019 09:28:01 +0000 (09:28 +0000)]
[NewPM][TSan] Reiterate the TSan port

Summary:
Second iteration of D56433 which got reverted in rL350719. The problem
in the previous version was that we dropped the thunk calling the tsan init
function. The new version keeps the thunk which should appease dyld, but is not
actually OK wrt. the current semantics of function passes. Hence, add a
helper to insert the functions only on the first time. The helper
allows hooking into the insertion to be able to append them to the
global ctors list.

Reviewers: chandlerc, vitalybuka, fedor.sergeev, leonardchan

Subscribers: hiraditya, bollu, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351314 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombine] Fix ReduceLoadWidth for shifted offsets
Sam Parker [Wed, 16 Jan 2019 08:40:12 +0000 (08:40 +0000)]
[DAGCombine] Fix ReduceLoadWidth for shifted offsets

ReduceLoadWidth can trigger using a shifted mask is used and this
requires that the function return a shl node to correct for the
offset. However, the way that this was implemented meant that the
returned result could be an existing node, which would be incorrect.
This fixes the method of inserting the new node and replacing uses.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351310 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoInclude lldb in Win snapshots again (PR37307)
Hans Wennborg [Wed, 16 Jan 2019 08:38:28 +0000 (08:38 +0000)]
Include lldb in Win snapshots again (PR37307)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351309 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-rc] Support '--' for delimiting options from input paths
Martin Storsjo [Wed, 16 Jan 2019 08:09:22 +0000 (08:09 +0000)]
[llvm-rc] Support '--' for delimiting options from input paths

This allows avoiding conflicts between paths that begin with the same
chars as some llvm-rc options (which can be used with either slashes
or dashes).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351305 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-symbolizer] Add -C as a short alias to -demangle
Dmitry Venikov [Wed, 16 Jan 2019 07:05:58 +0000 (07:05 +0000)]
[llvm-symbolizer] Add -C as a short alias to -demangle

Summary: Provides -C as alias to -demangle. Motivation: https://bugs.llvm.org/show_bug.cgi?id=40069.

Reviewers: jhenderson, ruiu, rnk, fjricci

Reviewed By: jhenderson, ruiu

Subscribers: rupprecht, erik.pilkington, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351300 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] COWS has been renamed to WASI.
Dan Gohman [Wed, 16 Jan 2019 05:23:52 +0000 (05:23 +0000)]
[WebAssembly] COWS has been renamed to WASI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351297 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoOnly promote args when function attributes are compatible
Tom Stellard [Wed, 16 Jan 2019 05:15:31 +0000 (05:15 +0000)]
Only promote args when function attributes are compatible

Summary:
Check to make sure that the caller and the callee have compatible
function arguments before promoting arguments.  This uses the same
TargetTransformInfo queries that are used to determine if attributes
are compatible for inlining.

The goal here is to avoid breaking ABI when a called function's ABI
depends on a target feature that is not enabled in the caller.

This is a very conservative fix for PR37358.  Ideally we would have a more
sophisticated check for ABI compatiblity rather than checking if the
attributes are compatible for inlining.

Reviewers: echristo, chandlerc, eli.friedman, craig.topper

Reviewed By: echristo, chandlerc

Subscribers: nikic, xbolva00, rkruppe, alexcrichton, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351296 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine]Avoid introduction of unaligned mem access
Serguei Katkov [Wed, 16 Jan 2019 04:36:26 +0000 (04:36 +0000)]
[InstCombine]Avoid introduction of unaligned mem access

InstCombine is able to transform mem transfer instrinsic to alone store or store/load pair.
It might result in generation of unaligned atomic load/store which later in backend
will be transformed to libcall. It is not an evident gain and it is better to keep intrinsic as is
and handle it at backend.

Reviewers: reames, anna, apilipenko, mkazantsev
Reviewed By: reames
Subscribers: t.p.northover, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D56582

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351295 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r351283.
Peter Collingbourne [Wed, 16 Jan 2019 02:27:12 +0000 (02:27 +0000)]
gn build: Merge r351283.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351293 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Store section alignment as a power of 2
Sam Clegg [Wed, 16 Jan 2019 01:34:48 +0000 (01:34 +0000)]
[WebAssembly] Store section alignment as a power of 2

This change bumps for version number of the wasm object file
metadata.

See https://github.com/WebAssembly/tool-conventions/pull/92

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351285 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GISel]: Add support for CSEing continuously during GISel passes.
Aditya Nandakumar [Wed, 16 Jan 2019 00:40:37 +0000 (00:40 +0000)]
[GISel]: Add support for CSEing continuously during GISel passes.

https://reviews.llvm.org/D52803

This patch adds support to continuously CSE instructions during
each of the GISel passes. It consists of a GISelCSEInfo analysis pass
that can be used by the CSEMIRBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351283 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[EH] Rename llvm.x86.seh.recoverfp intrinsic to llvm.eh.recoverfp
Mandeep Singh Grang [Wed, 16 Jan 2019 00:37:13 +0000 (00:37 +0000)]
[EH] Rename llvm.x86.seh.recoverfp intrinsic to llvm.eh.recoverfp

Summary:
Make recoverfp intrinsic target-independent so that it can be implemented for AArch64, etc.
Refer D53541 for the context. Clang counterpart D56748.

Reviewers: rnk, efriedma

Reviewed By: rnk, efriedma

Subscribers: javed.absar, kristof.beyls, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351281 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LangRef] Fix typo adress->address. NFC
Craig Topper [Wed, 16 Jan 2019 00:21:59 +0000 (00:21 +0000)]
[LangRef] Fix typo adress->address. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351279 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Rename SHRUNKBLEND ISD node to BLENDV.
Craig Topper [Wed, 16 Jan 2019 00:20:30 +0000 (00:20 +0000)]
[X86] Rename SHRUNKBLEND ISD node to BLENDV.

That's really what it is. If we didn't use intrinsics for BLENDVPS/BLENDVPD/PBLENDVB all the way to isel, this is the node we would use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351278 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Add check-hwasan target.
Peter Collingbourne [Wed, 16 Jan 2019 00:15:25 +0000 (00:15 +0000)]
gn build: Add check-hwasan target.

The Android sanitizer tests are currently some of the most difficult
to run correctly, requiring at least 3 build directories which have
to be configured in just the right way and built in the correct order
(see e.g. [1] and the functions that it calls).

This patch adds a check-hwasan target which greatly simplifies running
the hwasan tests for gn users, taking advantage of its support for
multiple toolchains. With this the tests can be run simply by setting
an NDK path and running "ninja check-hwasan" with a compatible Android
device connected. The Linux/x86_64 and Android/aarch64 targets are
tested in parallel.

[1] https://github.com/llvm/llvm-zorg/blob/master/zorg/buildbot/builders/sanitizers/buildbot_android.sh

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351277 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add avx512 scatter intrinsics that use a vXi1 mask instead of a scalar integer.
Craig Topper [Tue, 15 Jan 2019 23:36:25 +0000 (23:36 +0000)]
[X86] Add avx512 scatter intrinsics that use a vXi1 mask instead of a scalar integer.

We're trying to have the vXi1 types in IR as much as possible. This prevents the need for bitcasts when the producer of the mask was already a vXi1 value like an icmp. The bitcasts can be subject to code motion and interfere with basic block at a time isel in bad ways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351275 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Raise the priority of MAD24 in instruction selection.
Changpeng Fang [Tue, 15 Jan 2019 23:12:36 +0000 (23:12 +0000)]
AMDGPU: Raise the priority of MAD24 in instruction selection.

Summary:
  We have seen performance regression when v_add3 is generated. The major reason is that the v_mad pattern
is broken when v_add3 is generated. We also see the register pressure increased. While we could not properly
estimate register pressure during instruction selection, we can give mad a higher priority.

In this work, we raise the priority for mad24 in selection and resolve the performance regression.

Reviewers:
  rampitec

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351273 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[VFS] Add getter for mapping entries.
Jonas Devlieghere [Tue, 15 Jan 2019 22:36:56 +0000 (22:36 +0000)]
[VFS] Add getter for mapping entries.

When generating a reproducer in LLDB we build up the mapping but don't
immediately copy over the files on the file system.

Rather than keeping a separate data structure with real and virtual
paths, we might as well reuse the entries already stored in the
YAMLVFSWriter to lazily copy over the files when needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351266 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[VFS] Move RedirectingFileSystem interface into header (NFC)
Jonas Devlieghere [Tue, 15 Jan 2019 22:36:41 +0000 (22:36 +0000)]
[VFS] Move RedirectingFileSystem interface into header (NFC)

This moves the RedirectingFileSystem into the header so it can be
extended. This is needed in LLDB we need a way to obtain the external
path to deal with FILE* and file descriptor APIs.

Discussion on the mailing list:
http://lists.llvm.org/pipermail/llvm-dev/2018-November/127755.html

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351265 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[libObject] Tweak expected error output from llvm-ar
Jordan Rupprecht [Tue, 15 Jan 2019 22:03:08 +0000 (22:03 +0000)]
[libObject] Tweak expected error output from llvm-ar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351259 91177308-0d34-0410-b5e6-96231b3b80d8