platform/upstream/llvm.git
7 years agoTurn some C-style vararg into variadic templates
Serge Guelton [Tue, 11 Apr 2017 08:36:52 +0000 (08:36 +0000)]
Turn some C-style vararg into variadic templates

Module::getOrInsertFunction is using C-style vararg instead of
variadic templates.

From a user prospective, it forces the use of an annoying nullptr
to mark the end of the vararg, and there's not type checking on the
arguments. The variadic template is an obvious solution to both
issues.

llvm-svn: 299925

7 years agoSimplify the code and remove dead code
Sylvestre Ledru [Tue, 11 Apr 2017 08:21:27 +0000 (08:21 +0000)]
Simplify the code and remove dead code

Summary: Fix coverity cid 1374240

Reviewers: dberlin

Reviewed By: dberlin

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

llvm-svn: 299924

7 years ago[lsan] Enable LSan for arm Linux
Maxim Ostapenko [Tue, 11 Apr 2017 08:13:38 +0000 (08:13 +0000)]
[lsan] Enable LSan for arm Linux

This patch enables LSan for arm Linux.

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

llvm-svn: 299923

7 years ago[XRay][compiler-rt] Add support for TSC emulation for x86_64 to xray_fdr_logging.cc
Douglas Yung [Tue, 11 Apr 2017 07:45:16 +0000 (07:45 +0000)]
[XRay][compiler-rt] Add support for TSC emulation for x86_64 to xray_fdr_logging.cc

Previously in r297800, a work-around was created to use TSC emulation on x86_64 when RDTSCP was not available on the host. A similar change was needed in the file xray_fdr_logging.cc which this patch ports over to that file.

Eventually the code should be refactored as there will be 3 locations with the same code, but that can be done as a separate step. This patch is just to keep the test from failing on my machine due to an illegal instruction since RDTSCP is not available on my x86_64 linux VM.

Reviewers: dberris

Subscribers: llvm-commits

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

llvm-svn: 299922

7 years ago[lsan] Enable LSan on arm Linux, clang part
Maxim Ostapenko [Tue, 11 Apr 2017 07:22:11 +0000 (07:22 +0000)]
[lsan] Enable LSan on arm Linux, clang part

This is a compiler part of https://reviews.llvm.org/D29586. Enable LSan on arm Linux.

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

llvm-svn: 299921

7 years agoAdd more examples to clang tidy checkers
Sylvestre Ledru [Tue, 11 Apr 2017 07:10:48 +0000 (07:10 +0000)]
Add more examples to clang tidy checkers

Reviewers: alexfh

Reviewed By: alexfh

Subscribers: cfe-commits

Tags: #clang-tools-extra

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

llvm-svn: 299920

7 years agoAdd more examples to clang-format configuration
Sylvestre Ledru [Tue, 11 Apr 2017 07:07:05 +0000 (07:07 +0000)]
Add more examples to clang-format configuration

Reviewers: djasper

Reviewed By: djasper

Subscribers: Eugene.Zelenko, klimek, cfe-commits

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

llvm-svn: 299919

7 years ago[IR] Fix a typo in a comment. NFC
Craig Topper [Tue, 11 Apr 2017 06:41:55 +0000 (06:41 +0000)]
[IR] Fix a typo in a comment. NFC

llvm-svn: 299918

7 years ago[InstCombine] Refinement of r299915. Only consider a ConstantVector for Neg if all...
Craig Topper [Tue, 11 Apr 2017 06:32:48 +0000 (06:32 +0000)]
[InstCombine] Refinement of r299915. Only consider a ConstantVector for Neg if all the elements are Undef or ConstantInt.

llvm-svn: 299917

7 years ago[XRay][compiler-rt] Remove the xray_fdr_log_printer_tool
Dean Michael Berris [Tue, 11 Apr 2017 06:04:08 +0000 (06:04 +0000)]
[XRay][compiler-rt] Remove the xray_fdr_log_printer_tool

Summary:
We can move this functionality into LLVM's tools instead, as it no
longer is strictly required for the compiler-rt testing infrastructure.
It also is blocking the successful bootstrapping of the clang compiler
due to a missing virtual destructor in one of the flag parsing library.

Since this binary isn't critical for the XRay runtime testing effort
anymore (yet), we remove it in the meantime with the hope of moving the
functionality in LLVM proper instead.

Reviewers: kpw, pelikan, rnk, seurer, eugenis

Subscribers: llvm-commits, mgorny

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

llvm-svn: 299916

7 years ago[InstCombine] Support weird size element types in dyn_castNegVal.
Craig Topper [Tue, 11 Apr 2017 05:42:47 +0000 (05:42 +0000)]
[InstCombine] Support weird size element types in dyn_castNegVal.

llvm-svn: 299915

7 years agoExploit BasicBlock::getModule to shorten code
Tobias Grosser [Tue, 11 Apr 2017 04:59:13 +0000 (04:59 +0000)]
Exploit BasicBlock::getModule to shorten code

Suggested-by: Roman Gareev <gareevroman@gmail.com>
llvm-svn: 299914

7 years agoSAdjust to recent change in constructor definition of AllocaInst
Tobias Grosser [Tue, 11 Apr 2017 04:23:38 +0000 (04:23 +0000)]
SAdjust to recent change in constructor definition of AllocaInst

llvm-svn: 299913

7 years ago[LoopUnswitch] Fix a test case
Sanjoy Das [Tue, 11 Apr 2017 04:11:47 +0000 (04:11 +0000)]
[LoopUnswitch] Fix a test case

(h/t to Chandler for pointing this out)

The test in question was not at all testing what it was supposed to
test.  We do not //care// about placing `!make.implicit` in inner
constant branch (since it will be folded away anyway).  We care about
placing `!make.implicit` in the outer branch that switches between
either version of the loop.

Having said that, it is _correct_ to leave behind the `!make.implicit`
in the inner branch, but there is no need to do so.

llvm-svn: 299912

7 years ago[LICM] Hoist fp division from the loops and replace by a reciprocal
Hal Finkel [Tue, 11 Apr 2017 02:22:54 +0000 (02:22 +0000)]
[LICM] Hoist fp division from the loops and replace by a reciprocal

When allowed, we can hoist a division out of a loop in favor of a
multiplication by the reciprocal. Fixes PR32157.

Patch by vit9696!

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

llvm-svn: 299911

7 years ago[PowerPC] multiply-with-overflow might use the CTR register
Hal Finkel [Tue, 11 Apr 2017 02:03:17 +0000 (02:03 +0000)]
[PowerPC] multiply-with-overflow might use the CTR register

Check the legality of ISD::[US]MULO to see whether
Intrinsic::[us]mul_with_overflow will legalize into a function call (and, thus,
will use the CTR register).  Fixes PR32485.

Patch by Tim Neumann!

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

llvm-svn: 299910

7 years agoFix a C++03 failure
Marshall Clow [Tue, 11 Apr 2017 01:54:48 +0000 (01:54 +0000)]
Fix a C++03 failure

llvm-svn: 299909

7 years ago[bugpoint] Also remove comdat's from externalized GVs
Hal Finkel [Tue, 11 Apr 2017 00:18:42 +0000 (00:18 +0000)]
[bugpoint] Also remove comdat's from externalized GVs

We were removing comdats from externalized functions (function declarations
can't be comdat), but were not doing the same for variable. Failure to do this
would cause bugpoint to fail ("Declaration may not be in a Comdat!").

llvm-svn: 299908

7 years agoRemove some trigraphs that GCC was complaining about
Marshall Clow [Tue, 11 Apr 2017 00:18:28 +0000 (00:18 +0000)]
Remove some trigraphs that GCC was complaining about

llvm-svn: 299907

7 years ago[IR] Sink some AttributeListImpl methods out of headers NFC
Reid Kleckner [Tue, 11 Apr 2017 00:16:00 +0000 (00:16 +0000)]
[IR] Sink some AttributeListImpl methods out of headers NFC

llvm-svn: 299906

7 years agoUpdate for alloca construction changes
Matt Arsenault [Tue, 11 Apr 2017 00:12:58 +0000 (00:12 +0000)]
Update for alloca construction changes

llvm-svn: 299905

7 years agoRevert "NewGVN: Don't propagate over phi backedges where undef causes us to have...
Daniel Berlin [Tue, 11 Apr 2017 00:07:26 +0000 (00:07 +0000)]
Revert "NewGVN: Don't propagate over phi backedges where undef causes us to have >1 value."
It's not ready yet this was an accidental commit :(

This reverts r299903

llvm-svn: 299904

7 years agoNewGVN: Don't propagate over phi backedges where undef causes us to have >1 value.
Daniel Berlin [Tue, 11 Apr 2017 00:02:38 +0000 (00:02 +0000)]
NewGVN: Don't propagate over phi backedges where undef causes us to have >1 value.

Fixes PR 32607.

llvm-svn: 299903

7 years agodocs: Use the term "whole-program devirtualization" instead of "virtual function...
Peter Collingbourne [Mon, 10 Apr 2017 23:54:28 +0000 (23:54 +0000)]
docs: Use the term "whole-program devirtualization" instead of "virtual function call optimization".

The former term is probably more familiar to users. Also add references to
the command line flags used to enable the features described in the doc.

llvm-svn: 299902

7 years agoFix PR#32605: common_type<T> is not SFINAE-friendly
Marshall Clow [Mon, 10 Apr 2017 23:47:47 +0000 (23:47 +0000)]
Fix PR#32605: common_type<T> is not SFINAE-friendly

llvm-svn: 299901

7 years agoRemove AttributeSetNode::get(AttributeList, unsigned) and sink constructor
Reid Kleckner [Mon, 10 Apr 2017 23:46:08 +0000 (23:46 +0000)]
Remove AttributeSetNode::get(AttributeList, unsigned) and sink constructor

The getter was equivalent to AttributeList::getAttributes(unsigned),
which seems like a better way to express getting the AttributeSet for a
given index. This static helper was only used in one place anyway.

The constructor doesn't benefit from inlining and doesn't need to be in
a header.

llvm-svn: 299900

7 years agoReland "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"
Reid Kleckner [Mon, 10 Apr 2017 23:31:05 +0000 (23:31 +0000)]
Reland "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"

This re-lands r299875.

I introduced a bug in Clang code responsible for replacing K&R, no
prototype declarations with a real function definition with a prototype.
The bug was here:

       // Collect any return attributes from the call.
  -    if (oldAttrs.hasAttributes(llvm::AttributeList::ReturnIndex))
  -      newAttrs.push_back(llvm::AttributeList::get(newFn->getContext(),
  -                                                  oldAttrs.getRetAttributes()));
  +    newAttrs.push_back(oldAttrs.getRetAttributes());

Previously getRetAttributes() carried AttributeList::ReturnIndex in its
AttributeList. Now that we return the AttributeSetNode* directly, it no
longer carries that index, and we call this overload with a single node:
  AttributeList::get(LLVMContext&, ArrayRef<AttributeSetNode*>)

That aborted with an assertion on x86_32 targets. I added an explicit
triple to the test and added CHECKs to help find issues like this in the
future sooner.

llvm-svn: 299899

7 years agoUpdate for alloca construction changes
Matt Arsenault [Mon, 10 Apr 2017 23:27:53 +0000 (23:27 +0000)]
Update for alloca construction changes

llvm-svn: 299898

7 years ago[ARM, x86] add tests to show possible improvement for bool math; NFC
Sanjay Patel [Mon, 10 Apr 2017 23:26:31 +0000 (23:26 +0000)]
[ARM, x86] add tests to show possible improvement for bool math; NFC

llvm-svn: 299897

7 years ago[PPC64, Sanitizers] Proper stack frame for the thread spawned in internal_clone
Alex Shlyapnikov [Mon, 10 Apr 2017 23:24:50 +0000 (23:24 +0000)]
[PPC64, Sanitizers] Proper stack frame for the thread spawned in internal_clone

Summary:
Set up the proper stack frame for the thread spawned in internal_clone,
the current code does not follow ABI (and causes SEGV trying to use this
malformed frame).

Reviewers: wschmidt

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 299896

7 years ago[NewGVN] Surround with parens to clarify allegedly ambiguous precedence.
Davide Italiano [Mon, 10 Apr 2017 23:08:35 +0000 (23:08 +0000)]
[NewGVN] Surround with parens to clarify allegedly ambiguous precedence.

This Placates GCC7 with -Werror. Also, clang-format the assertions
while I'm here.

llvm-svn: 299895

7 years agoFix PR#32606: std::decay mishandles abominable function types
Marshall Clow [Mon, 10 Apr 2017 22:51:07 +0000 (22:51 +0000)]
Fix PR#32606: std::decay mishandles abominable function types

llvm-svn: 299894

7 years ago[MemorySSA] We don't need to compute dominator levels anymore.
Davide Italiano [Mon, 10 Apr 2017 22:44:46 +0000 (22:44 +0000)]
[MemorySSA] We don't need to compute dominator levels anymore.

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

llvm-svn: 299893

7 years agoCodeGen: BlockPlacement: Don't always tail-duplicate with no other successor.
Kyle Butt [Mon, 10 Apr 2017 22:28:22 +0000 (22:28 +0000)]
CodeGen: BlockPlacement: Don't always tail-duplicate with no other successor.

The math works out where it can actually be counter-productive. The probability
calculations correctly handle the case where the alternative is 0 probability,
rely on those calculations.

Includes a test case that demonstrates the problem.

llvm-svn: 299892

7 years agoCodeGen: BlockPlacement: Minor probability changes.
Kyle Butt [Mon, 10 Apr 2017 22:28:18 +0000 (22:28 +0000)]
CodeGen: BlockPlacement: Minor probability changes.

Qin may be large, and Succ may be more frequent than BB. Take these both into
account when deciding if tail-duplication is profitable.

llvm-svn: 299891

7 years agoCodeGen: BranchFolding: Merge identical blocks, even if they are short.
Kyle Butt [Mon, 10 Apr 2017 22:28:12 +0000 (22:28 +0000)]
CodeGen: BranchFolding: Merge identical blocks, even if they are short.

Merging identical blocks when it doesn't reduce fallthrough. It is common for
the blocks created from critical edge splitting to be identical. We would like
to merge these blocks whenever doing so would not reduce fallthrough.

llvm-svn: 299890

7 years agoUpdate for AllocaInst construction changes
Matt Arsenault [Mon, 10 Apr 2017 22:28:02 +0000 (22:28 +0000)]
Update for AllocaInst construction changes

llvm-svn: 299889

7 years agoAllow DataLayout to specify addrspace for allocas.
Matt Arsenault [Mon, 10 Apr 2017 22:27:50 +0000 (22:27 +0000)]
Allow DataLayout to specify addrspace for allocas.

LLVM makes several assumptions about address space 0. However,
alloca is presently constrained to always return this address space.
There's no real way to avoid using alloca, so without this
there is no way to opt out of these assumptions.

The problematic assumptions include:
- That the pointer size used for the stack is the same size as
  the code size pointer, which is also the maximum sized pointer.

- That 0 is an invalid, non-dereferencable pointer value.

These are problems for AMDGPU because alloca is used to
implement the private address space, which uses a 32-bit
index as the pointer value. Other pointers are 64-bit
and behave more like LLVM's notion of generic address
space. By changing the address space used for allocas,
we can change our generic pointer type to be LLVM's generic
pointer type which does have similar properties.

llvm-svn: 299888

7 years agoGet the TOC save offset off of PPCFrameLowering rather than a separate copy of the...
Eric Christopher [Mon, 10 Apr 2017 22:22:11 +0000 (22:22 +0000)]
Get the TOC save offset off of PPCFrameLowering rather than a separate copy of the same data.

llvm-svn: 299887

7 years agoBitcode: Merge the code for parsing global value module codes in the summary bitcode...
Peter Collingbourne [Mon, 10 Apr 2017 21:17:54 +0000 (21:17 +0000)]
Bitcode: Merge the code for parsing global value module codes in the summary bitcode reader. NFCI.

This code will need to be taught to handle string tables and it's better if
there is only one copy of it.

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

llvm-svn: 299886

7 years ago[tsan] Fall-back to IPv6 if IPv4 is not available.
Vitaly Buka [Mon, 10 Apr 2017 21:03:21 +0000 (21:03 +0000)]
[tsan] Fall-back to IPv6 if IPv4 is not available.

Reviewers: eugenis

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 299885

7 years ago[msan] Choose in runtime if IPv4 or IPv6 are supported.
Vitaly Buka [Mon, 10 Apr 2017 21:03:18 +0000 (21:03 +0000)]
[msan] Choose in runtime if IPv4 or IPv6 are supported.

Summary: This reverts commit cab5051c691ce27a7ffac41e8e76ceb222ad9549.

Reviewers: eugenis

Subscribers: mgorny, llvm-commits

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

llvm-svn: 299884

7 years agoEmit less compiler optimization remarks in samplepgo to reduce a call to findCalleeFu...
Dehao Chen [Mon, 10 Apr 2017 20:49:16 +0000 (20:49 +0000)]
Emit less compiler optimization remarks in samplepgo to reduce a call to findCalleeFunctionSamples which is going to be refactored.

Summary: Now the SamplePGO support is more stable, we do not need so many verbose optimization remarks emitted.

Reviewers: dnovillo, davidxl

Reviewed By: davidxl

Subscribers: fhahn, llvm-commits

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

llvm-svn: 299883

7 years ago[GVNHoist] Call isGuaranteedToTransferExecutionToSuccessor on each instruction
Geoff Berry [Mon, 10 Apr 2017 20:45:17 +0000 (20:45 +0000)]
[GVNHoist] Call isGuaranteedToTransferExecutionToSuccessor on each instruction

w.r.t. https://bugs.llvm.org/show_bug.cgi?id=32153
The consensus seems to be isGuaranteedToTransferExecutionToSuccessor should be called for each function.

Patch by Aditya Kumar

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

llvm-svn: 299882

7 years agoRevert "[asan] Fix dead stripping of globals on Linux (compiler-rt)."
Evgeniy Stepanov [Mon, 10 Apr 2017 20:36:43 +0000 (20:36 +0000)]
Revert "[asan] Fix dead stripping of globals on Linux (compiler-rt)."

This reverts r299698, which caused a big increase in object file size.

llvm-svn: 299881

7 years agoRevert "[asan] Put ctor/dtor in comdat."
Evgeniy Stepanov [Mon, 10 Apr 2017 20:36:36 +0000 (20:36 +0000)]
Revert "[asan] Put ctor/dtor in comdat."

This reverts commit r299696, which is causing mysterious test failures.

llvm-svn: 299880

7 years agoRevert "[asan] Fix dead stripping of globals on Linux."
Evgeniy Stepanov [Mon, 10 Apr 2017 20:36:30 +0000 (20:36 +0000)]
Revert "[asan] Fix dead stripping of globals on Linux."

This reverts commit r299697, which caused a big increase in object file size.

llvm-svn: 299879

7 years agoRevert "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"
Reid Kleckner [Mon, 10 Apr 2017 20:34:19 +0000 (20:34 +0000)]
Revert "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"

This reverts r299875. A Linux bot came back with a test failure:
http://bb.pgr.jp/builders/test-clang-i686-linux-RA/builds/741/steps/test_clang/logs/Clang%20%3A%3A%20CodeGen__2006-05-19-SingleEltReturn.c

llvm-svn: 299878

7 years agoUpdate for lifetime intrinsic signature change
Matt Arsenault [Mon, 10 Apr 2017 20:18:45 +0000 (20:18 +0000)]
Update for lifetime intrinsic signature change

llvm-svn: 299877

7 years agoAdd address space mangling to lifetime intrinsics
Matt Arsenault [Mon, 10 Apr 2017 20:18:21 +0000 (20:18 +0000)]
Add address space mangling to lifetime intrinsics

In preparation for allowing allocas to have non-0 addrspace.

llvm-svn: 299876

7 years ago[IR] Make AttributeSetNode public, avoid temporary AttributeList copies
Reid Kleckner [Mon, 10 Apr 2017 20:18:10 +0000 (20:18 +0000)]
[IR] Make AttributeSetNode public, avoid temporary AttributeList copies

Summary:
AttributeList::get(Fn|Ret|Param)Attributes no longer creates a temporary
AttributeList just to hide the AttributeSetNode type.

I've also added a factory method to create AttributeLists from a
parallel array of AttributeSetNodes. I think this simplifies
construction of AttributeLists when rewriting function prototypes.
Previously we would test if a particular index had attributes, and
conditionally add a temporary attribute list to a vector. Now the
attribute set vector is parallel to the argument vector already that
these passes already construct.

My long term vision is to wrap AttributeSetNode* inside an AttributeSet
type that holds the enum attributes, but that will come in a follow up
change.

I haven't done any performance measurements for this change because
profiling hasn't shown that any of the affected code is hot.

Reviewers: pete, chandlerc, sanjoy, hfinkel

Reviewed By: pete

Subscribers: jfb, llvm-commits

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

llvm-svn: 299875

7 years agoRemove svn:eol-style properties from some files so 'git llvm push' works for them
Reid Kleckner [Mon, 10 Apr 2017 20:16:54 +0000 (20:16 +0000)]
Remove svn:eol-style properties from some files so 'git llvm push' works for them

llvm-svn: 299874

7 years agoFix signed / unsigned comparison warnings.
Zachary Turner [Mon, 10 Apr 2017 20:01:50 +0000 (20:01 +0000)]
Fix signed / unsigned comparison warnings.

llvm-svn: 299873

7 years ago[mips] Use Triple::isLittleEndian to check endianness. NFC
Simon Atanasyan [Mon, 10 Apr 2017 19:42:44 +0000 (19:42 +0000)]
[mips] Use Triple::isLittleEndian to check endianness. NFC

llvm-svn: 299872

7 years ago[InstCombine] improve variable names; NFCI
Sanjay Patel [Mon, 10 Apr 2017 19:38:36 +0000 (19:38 +0000)]
[InstCombine] improve variable names; NFCI

llvm-svn: 299871

7 years ago[InstSimplify] Use cast instead of dyn_cast after isa<> check. NFCI
Craig Topper [Mon, 10 Apr 2017 19:37:10 +0000 (19:37 +0000)]
[InstSimplify] Use cast instead of dyn_cast after isa<> check. NFCI

llvm-svn: 299870

7 years ago[llvm-pdbdump] Display padding bytes on record layout
Zachary Turner [Mon, 10 Apr 2017 19:33:29 +0000 (19:33 +0000)]
[llvm-pdbdump] Display padding bytes on record layout

When dumping classes, show where padding occurs, and at the end of the
class print statistics about how many bytes total of padding exist in a
class.

Since PDB doesn't specifically contain information about padding, we have
to mimic this by sort of reversing a small portion of the record layout
algorithm (e.g. looking at offsets and sizes and trying to determine
whether something is part of the same field or a new field).

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

llvm-svn: 299869

7 years ago[OPENMP] Fix for PR32333: Crash in call of outlined Function.
Alexey Bataev [Mon, 10 Apr 2017 19:16:45 +0000 (19:16 +0000)]
[OPENMP] Fix for PR32333: Crash in call of outlined Function.

If the type of the captured variable is a pointer(s) to variably
modified type, this type was not processed correctly. Need to drill into
the type, find the innermost variably modified array type and convert it
to canonical parameter type.

llvm-svn: 299868

7 years ago[Asan] Eliminate SHADOW_TO_MEM() macro
Ivan A. Kosarev [Mon, 10 Apr 2017 19:13:47 +0000 (19:13 +0000)]
[Asan] Eliminate SHADOW_TO_MEM() macro
Differential Revision: https://reviews.llvm.org/D31592

llvm-svn: 299867

7 years ago[MemCpyOpt] Only replace memcpy with bitcast if address spaces match
Matt Arsenault [Mon, 10 Apr 2017 19:00:25 +0000 (19:00 +0000)]
[MemCpyOpt] Only replace memcpy with bitcast if address spaces match

Patch by James Price

llvm-svn: 299866

7 years agoMemorySSA: Make lifetime starts defs for mustaliased pointers
Daniel Berlin [Mon, 10 Apr 2017 18:46:00 +0000 (18:46 +0000)]
MemorySSA: Make lifetime starts defs for mustaliased pointers

Summary:
While we don't want them aliasing with other pointers, there seems to
be no point in not having them clobber must-aliased'd pointers.

If some day, we split the aliasing and ordering chains, we'd make this
not aliasing but an ordering barrier (IE it doesn't affect it's
memory, but we can't hoist it above it).

Reviewers: hfinkel, george.burgess.iv

Subscribers: Prazek, llvm-commits

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

llvm-svn: 299865

7 years ago[ARM/AArch64] Ensure valid vector element types for interleaved accesses
Matthew Simpson [Mon, 10 Apr 2017 18:34:37 +0000 (18:34 +0000)]
[ARM/AArch64] Ensure valid vector element types for interleaved accesses

This patch refactors and strengthens the type checks performed for interleaved
accesses. The primary functional change is to ensure that the interleaved
accesses have valid element types. The added test cases previously failed
because the element type is f128.

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

llvm-svn: 299864

7 years ago[InstCombine] Use commutable matchers and m_OneUse in visitSub to shorten code. Add...
Craig Topper [Mon, 10 Apr 2017 18:09:25 +0000 (18:09 +0000)]
[InstCombine] Use commutable matchers and m_OneUse in visitSub to shorten code. Add missing test cases.

In one case I removed commute handling for a multiply with a constant since we'll eventually get the constant on the right hand side.

llvm-svn: 299863

7 years ago[msan] Make test to fall-back to IPv6 if IPv4 is not available.
Vitaly Buka [Mon, 10 Apr 2017 17:59:07 +0000 (17:59 +0000)]
[msan] Make test to fall-back to IPv6 if IPv4 is not available.

Reviewers: eugenis

Subscribers: llvm-commits

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

llvm-svn: 299862

7 years agoAMDGPU: Fix crash when disassembling VOP3 mac
Matt Arsenault [Mon, 10 Apr 2017 17:58:06 +0000 (17:58 +0000)]
AMDGPU: Fix crash when disassembling VOP3 mac

The unused dummy src2_modifiers is missing, so it crashes
when trying to print it.

I tried to fully remove src2_modifiers, but there are some
irritations in the places where it is converted to mad since
it starts to require modifying use lists while iterating over
them.

llvm-svn: 299861

7 years ago[msan] Replace AF_INET with AF_UNIX to avoid IPv4 vs IPv6 issues.
Vitaly Buka [Mon, 10 Apr 2017 17:58:03 +0000 (17:58 +0000)]
[msan] Replace AF_INET with AF_UNIX to avoid IPv4 vs IPv6 issues.

Summary: This reverts commit 79cf16bf224d6ac9fb9e0356c5947ebc4fd6ff92.

Reviewers: eugenis

Subscribers: llvm-commits

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

llvm-svn: 299860

7 years ago[msan] Wrap sockaddr_in and socket for future IPv6 support.
Vitaly Buka [Mon, 10 Apr 2017 17:56:37 +0000 (17:56 +0000)]
[msan] Wrap sockaddr_in and socket for future IPv6 support.

Reviewers: eugenis

Subscribers: llvm-commits

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

llvm-svn: 299859

7 years ago[msan] Reorder unittests for future parametrization.
Vitaly Buka [Mon, 10 Apr 2017 17:22:06 +0000 (17:22 +0000)]
[msan] Reorder unittests for future parametrization.

Reviewers: eugenis

Subscribers: llvm-commits

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

llvm-svn: 299858

7 years ago[Support] Add support for finding unset bits in a BitVector.
Zachary Turner [Mon, 10 Apr 2017 17:18:54 +0000 (17:18 +0000)]
[Support] Add support for finding unset bits in a BitVector.

BitVector had methods for searching for the first and next
set bits, but it did not have analagous methods for finding
the first and next unset bits.  This is useful when your ones
and zeros are grouped together and you want to iterate over
ranges of ones and zeros.

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

llvm-svn: 299857

7 years agoFix line endings.
Zachary Turner [Mon, 10 Apr 2017 17:17:11 +0000 (17:17 +0000)]
Fix line endings.

llvm-svn: 299856

7 years agoRemove eol-style:native from BitVector.h
Zachary Turner [Mon, 10 Apr 2017 17:15:11 +0000 (17:15 +0000)]
Remove eol-style:native from BitVector.h

llvm-svn: 299855

7 years ago[clangd] Relax absolute path checking assertion
Reid Kleckner [Mon, 10 Apr 2017 17:03:44 +0000 (17:03 +0000)]
[clangd] Relax absolute path checking assertion

clangd can process absolute paths from systems that don't use the native
path style, so this assertion needs to check both Windows and Posix path
styles.

Fixes PR32596

llvm-svn: 299854

7 years ago[InstCombine] Use m_c_Add to shorten some code. Add testcases for this fold since...
Craig Topper [Mon, 10 Apr 2017 16:59:40 +0000 (16:59 +0000)]
[InstCombine] Use m_c_Add to shorten some code. Add testcases for this fold since they were missing. NFC

llvm-svn: 299853

7 years ago[X86][MMX] Add fast-isel support for MMX non-temporal writes
Simon Pilgrim [Mon, 10 Apr 2017 16:58:07 +0000 (16:58 +0000)]
[X86][MMX] Add fast-isel support for MMX non-temporal writes

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

llvm-svn: 299852

7 years ago[InstCombine] fix matching of or-of-icmps constants (PR32524)
Sanjay Patel [Mon, 10 Apr 2017 16:55:57 +0000 (16:55 +0000)]
[InstCombine] fix matching of or-of-icmps constants (PR32524)

Also, make the same change in and-of-icmps and remove a hack for detecting that case.

Finally, add some FIXME comments because the code duplication here is awful.

This should fix the remaining IR problem noted in:
https://bugs.llvm.org/show_bug.cgi?id=32524

llvm-svn: 299851

7 years agoRevert "XFAIL clangd tests on Windows"
Reid Kleckner [Mon, 10 Apr 2017 16:55:48 +0000 (16:55 +0000)]
Revert "XFAIL clangd tests on Windows"

This reverts r299849, apparently these tests only fail on my machine.

llvm-svn: 299850

7 years agoXFAIL clangd tests on Windows
Reid Kleckner [Mon, 10 Apr 2017 16:50:55 +0000 (16:50 +0000)]
XFAIL clangd tests on Windows

They all assert. Filed as PR32596.

llvm-svn: 299849

7 years agoImproves pretty printing of variable types in llvm-pdbdump
Adrian McCarthy [Mon, 10 Apr 2017 16:43:09 +0000 (16:43 +0000)]
Improves pretty printing of variable types in llvm-pdbdump

* Adds support for pointers to arrays, which was missing
* Adds some tests
* Improves consistency of const and volatile qualifiers
* Eliminates non-composable special case code for arrays and function by using
  a more general recursive approach
* Has a hack for getting the calling convention into the right spot for
  pointer-to-functions

Given the rapid changes happenning in llvm-pdbdump, this may be difficult to
merge.

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

llvm-svn: 299848

7 years ago[InstCombine] Support folding of add instructions with vector constants into select...
Craig Topper [Mon, 10 Apr 2017 16:40:00 +0000 (16:40 +0000)]
[InstCombine] Support folding of add instructions with vector constants into select operations

We currently only fold scalar add of constants into selects. This improves this to support vectors too.

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

llvm-svn: 299847

7 years ago[InstCombine] add test for PR32524; NFC
Sanjay Patel [Mon, 10 Apr 2017 16:28:08 +0000 (16:28 +0000)]
[InstCombine] add test for PR32524; NFC

llvm-svn: 299846

7 years ago[lldb] Fix ninja URL
Shoaib Meenai [Mon, 10 Apr 2017 15:41:15 +0000 (15:41 +0000)]
[lldb] Fix ninja URL

The old URL is a 404 now. Pointed out by Smirftsch1 on IRC.

llvm-svn: 299845

7 years ago[clangd] Fix nondeterminism in clangd test
Krasimir Georgiev [Mon, 10 Apr 2017 14:06:54 +0000 (14:06 +0000)]
[clangd] Fix nondeterminism in clangd test

llvm-svn: 299844

7 years ago[clangd] Remove ASTUnits for closed documents and cache CompilationDatabase per direc...
Krasimir Georgiev [Mon, 10 Apr 2017 13:31:39 +0000 (13:31 +0000)]
[clangd] Remove ASTUnits for closed documents and cache CompilationDatabase per directory.

Contributed by ilya-biryukov!

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

llvm-svn: 299843

7 years ago[ARM] GlobalISel: Support G_FPOW for float and double
Diana Picus [Mon, 10 Apr 2017 09:27:39 +0000 (09:27 +0000)]
[ARM] GlobalISel: Support G_FPOW for float and double

Legalize to a libcall.

llvm-svn: 299841

7 years ago[InstCombine] Use commutable and/or/xor matchers to simplify some code
Craig Topper [Mon, 10 Apr 2017 07:13:40 +0000 (07:13 +0000)]
[InstCombine] Use commutable and/or/xor matchers to simplify some code

Summary:
This is my first time using the commutable matchers so wanted to make sure I was doing it right.

Are there any other matcher tricks to further shrink this? Can we commute the whole match so we don't have to LHS and RHS separately?

Reviewers: davide, spatel

Reviewed By: davide

Subscribers: llvm-commits

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

llvm-svn: 299840

7 years ago[SelectionDAG] TargetLowering::SimplifyDemandedBits how to properly calculate KnownZe...
Craig Topper [Mon, 10 Apr 2017 07:06:44 +0000 (07:06 +0000)]
[SelectionDAG] TargetLowering::SimplifyDemandedBits how to properly calculate KnownZero bits for ISD::SETCC and ISD::AssertZExt

Summary:
For SETCC we aren't calculating the KnownZero bits at all. I've copied the code from computeKnownZero over for this.

For AssertZExt we were only setting KnownZero for bits that were demanded. But the upper bits are zero whether they were demanded or not.

I'm interested in fixing this because my belief is the first part of the ISD::AND handling code in SimplifyDemandedBits largely exists because of these two bugs. In that code we go to computeKnownBits for the LHS and optimize a RHS constant. Because computeKnownBits handles SETCC and AssertZExt correctly we get better information sometimes than when we call SimplifyDemandedBits on the LHS later. With these two issues fixed in SimplifyDemandedBits I was able to remove that computeKnownBits call and still pass all X86 tests. I'll submit that change in a separate patch.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 299839

7 years ago[InstCombine] Make sure we preserve fast math flags when folding fp instructions...
Craig Topper [Mon, 10 Apr 2017 07:00:10 +0000 (07:00 +0000)]
[InstCombine] Make sure we preserve fast math flags when folding fp instructions into phi nodes

Summary: I noticed in the select folding code that we copied fast math flags, but did not do the same for the similar handling in phi nodes. This patch fixes that to do the same thing as select

Reviewers: spatel, davide, majnemer, hfinkel

Reviewed By: davide

Subscribers: llvm-commits

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

llvm-svn: 299838

7 years ago[InstCombine] use m_c_And and m_c_Xor to handle commuted versions of a transform.
Craig Topper [Mon, 10 Apr 2017 06:53:28 +0000 (06:53 +0000)]
[InstCombine] use m_c_And and m_c_Xor to handle commuted versions of a transform.

llvm-svn: 299837

7 years ago[InstCombine] Add test cases demonstrating missing handling for the commuted version...
Craig Topper [Mon, 10 Apr 2017 06:53:25 +0000 (06:53 +0000)]
[InstCombine] Add test cases demonstrating missing handling for the commuted version of a transform. NFC.

llvm-svn: 299836

7 years ago[InstCombine] Remove unnecessary dyn_cast to BinaryOperator around some matcher check...
Craig Topper [Mon, 10 Apr 2017 06:53:23 +0000 (06:53 +0000)]
[InstCombine] Remove unnecessary dyn_cast to BinaryOperator around some matcher checks in visitXor.

The matchers themselves should be enough.

llvm-svn: 299835

7 years ago[InstCombine] Make the (A|B)^B -> A & ~B transform code consistent with the very...
Craig Topper [Mon, 10 Apr 2017 06:53:21 +0000 (06:53 +0000)]
[InstCombine] Make the (A|B)^B -> A & ~B transform code consistent with the very similar (A&B)^B -> ~A & B code. This should be NFC except for the addition of hasOneUse check.

I think this code is still overly complicated and should use matchers, but first I wanted to make it consistent.

llvm-svn: 299834

7 years ago[InstCombine] Use m_OneUse to shorten some code. NFC
Craig Topper [Mon, 10 Apr 2017 06:53:19 +0000 (06:53 +0000)]
[InstCombine] Use m_OneUse to shorten some code. NFC

llvm-svn: 299833

7 years agoRemove unused method.
Zachary Turner [Mon, 10 Apr 2017 06:30:28 +0000 (06:30 +0000)]
Remove unused method.

This is causing build breaks, but it's unused anyway, so delete
it.

llvm-svn: 299832

7 years agoGeneral usability improvements to generic PDB library.
Zachary Turner [Mon, 10 Apr 2017 06:14:09 +0000 (06:14 +0000)]
General usability improvements to generic PDB library.

1. Added some asserts to make sure concrete symbol types don't
   get constructed with RawSymbols that have an incompatible
   SymTag enum value.
2. Added new forwarding macros that auto-define an Id/Sym method
   pair whenever there is a method that returns a SymIndexId.
   Previously we would just provide one method that returned only
   the SymIndexId and it was up to the caller to use the Session
   object to get a pointer to the symbol.  Now we automatically
   get both the method that returns the Id, as well as a method
   that returns the pointer directly with just one macro.
3. Added some methods for dumping straight to stdout that can
   be used from inside the debugger for diagnostics during a
   debug session.
4. Added a clone() method and a cast<T>() method to PDBSymbol
   that can shorten some usage patterns.

llvm-svn: 299831

7 years ago[SCCP] Resolve indirect branch target when possible.
Xin Tong [Mon, 10 Apr 2017 00:33:25 +0000 (00:33 +0000)]
[SCCP] Resolve indirect branch target when possible.

Summary:
Resolve indirect branch target when possible.
This potentially eliminates more basicblocks and result in better evaluation for phi and other things.

Reviewers: davide, efriedma, sanjoy

Subscribers: llvm-commits

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

llvm-svn: 299830

7 years ago[InstCombine] remove dead cases from icmp pair switches; NFCI
Sanjay Patel [Sun, 9 Apr 2017 21:51:34 +0000 (21:51 +0000)]
[InstCombine] remove dead cases from icmp pair switches; NFCI

"PredicatesFoldable" returns false for signed/unsigned mismatched pairs,
so these cases should never exist. We'll default to 'unreachable' on those
predicate combos instead.

Most of what's left in these switches belongs in InstSimplify (and may
already be there), so there's probably more that can be done to reduce
this code.

llvm-svn: 299829

7 years ago[InstCombine] remove duplicate test; NFC
Sanjay Patel [Sun, 9 Apr 2017 21:45:52 +0000 (21:45 +0000)]
[InstCombine] remove duplicate test; NFC

I moved this test to 'not.ll' in r299824 but accidentally added a copy here.

llvm-svn: 299828

7 years ago[Mem2Reg] Remove AliasSetTracker updating logic from the pass.
Davide Italiano [Sun, 9 Apr 2017 20:47:14 +0000 (20:47 +0000)]
[Mem2Reg] Remove AliasSetTracker updating logic from the pass.

No caller has been passing it for a long time.

llvm-svn: 299827

7 years ago[SimplifyCFG] auto-generate better checks; NFC
Sanjay Patel [Sun, 9 Apr 2017 16:16:32 +0000 (16:16 +0000)]
[SimplifyCFG] auto-generate better checks; NFC

llvm-svn: 299825

7 years ago[InstCombine] auto-generate better checks; NFC
Sanjay Patel [Sun, 9 Apr 2017 15:44:59 +0000 (15:44 +0000)]
[InstCombine] auto-generate better checks; NFC

Also, move a test next to its sibling to eliminate a file with just one test.

llvm-svn: 299824