platform/upstream/llvm.git
7 years agoCodegen: Tail-duplicate during placement.
Kyle Butt [Tue, 4 Oct 2016 00:00:09 +0000 (00:00 +0000)]
Codegen: Tail-duplicate during placement.

The tail duplication pass uses an assumed layout when making duplication
decisions. This is fine, but passes up duplication opportunities that
may arise when blocks are outlined. Because we want the updated CFG to
affect subsequent placement decisions, this change must occur during
placement.

In order to achieve this goal, TailDuplicationPass is split into a
utility class, TailDuplicator, and the pass itself. The pass delegates
nearly everything to the TailDuplicator object, except for looping over
the blocks in a function. This allows the same code to be used for tail
duplication in both places.

This change, in concert with outlining optional branches, allows
triangle shaped code to perform much better, esepecially when the
taken/untaken branches are correlated, as it creates a second spine when
the tests are small enough.

llvm-svn: 283164

7 years agoMark a couple more Issaquah issues as done: 2578 and 2738
Marshall Clow [Mon, 3 Oct 2016 23:42:31 +0000 (23:42 +0000)]
Mark a couple more Issaquah issues as done: 2578 and 2738

llvm-svn: 283163

7 years agoChange a couple of 'template <typename's to 'template <class' which is what we use...
Marshall Clow [Mon, 3 Oct 2016 23:40:48 +0000 (23:40 +0000)]
Change a couple of 'template <typename's to 'template <class' which is what we use in the rest of the library.

llvm-svn: 283162

7 years agoAdd tests to make sure that is_constructible<cv-void> is false. We already checked...
Marshall Clow [Mon, 3 Oct 2016 23:39:52 +0000 (23:39 +0000)]
Add tests to make sure that is_constructible<cv-void> is false. We already checked 'unqualified void'. This was brought up by LWG#2738

llvm-svn: 283161

7 years agoChanges to the std::multimap formatter to make it work against trunk libc++
Enrico Granata [Mon, 3 Oct 2016 23:33:00 +0000 (23:33 +0000)]
Changes to the std::multimap formatter to make it work against trunk libc++

Fixes rdar://28237486

llvm-svn: 283160

7 years agoModernize some code related to Args usage / implementation.
Zachary Turner [Mon, 3 Oct 2016 23:20:36 +0000 (23:20 +0000)]
Modernize some code related to Args usage / implementation.

Mostly this involves simplifying some logical constructs and using
some ranges instead of index-based iteration.  NFC

llvm-svn: 283159

7 years ago[MSSA] Allow unittests to use BasicAA when building.
George Burgess IV [Mon, 3 Oct 2016 23:12:35 +0000 (23:12 +0000)]
[MSSA] Allow unittests to use BasicAA when building.

We now build MemorySSA in its ctor, instead of waiting until the user
calls MemorySSA::getWalker. This silently changed our unittests, since
we add BasicAA to AAResults *after* constructing MemorySSA (...but
before calling MemorySSA::getWalker).

None of them broke because we do most of our "did this get optimized
correctly?" tests in .ll files.

llvm-svn: 283158

7 years agoRefactor the Args class.
Zachary Turner [Mon, 3 Oct 2016 22:51:09 +0000 (22:51 +0000)]
Refactor the Args class.

There were a number of issues with the Args class preventing
efficient use of strings and incoporating LLVM's StringRef class.
The two biggest were:

1. Backing memory stored in a std::string, so we would frequently
   have to use const_cast to get a mutable buffer for passing to
   various low level APIs.
2. backing std::strings stored in a std::list, which doesn't
   provide random access.

I wanted to solve these two issues so that we could provide
StringRef access to the underlying arguments, and also a way
to provide range-based access to the underlying argument array
while still providing convenient c-style access via an argv style
const char**.

The solution here is to store arguments in a single "entry" class
which contains the backing memory, a StringRef with precomputed
length, and the quote char.  The backing memory is a manually
allocated const char* so that it is not invalidated when the
container is resized, and there is a separate argv array provided
for c-style access.

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

llvm-svn: 283157

7 years agoadd a simple test case to validate test id()
Todd Fiala [Mon, 3 Oct 2016 22:49:13 +0000 (22:49 +0000)]
add a simple test case to validate test id()

Since we count on it in a few places, the test verifies that the
test instance has an id() method that returns something non-None.

llvm-svn: 283156

7 years ago[coroutines] Adding builtins for coroutine intrinsics and backendutil support.
Gor Nishanov [Mon, 3 Oct 2016 22:44:48 +0000 (22:44 +0000)]
[coroutines] Adding builtins for coroutine intrinsics and backendutil support.

Summary:
With this commit simple coroutines can be created in plain C using coroutine builtins.

Reviewers: rnk, EricWF, rsmith

Subscribers: modocache, mgorny, mehdi_amini, beanz, cfe-commits

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

llvm-svn: 283155

7 years ago[WebAssembly] Update to more stack-machine-oriented terminology.
Dan Gohman [Mon, 3 Oct 2016 22:43:53 +0000 (22:43 +0000)]
[WebAssembly] Update to more stack-machine-oriented terminology.

WebAssembly has officially switched from being an AST to being a stack
machine. Update various bits of terminology and README.md entries
accordingly.

llvm-svn: 283154

7 years ago[WebAssemby] Clean up an obsolete comment.
Dan Gohman [Mon, 3 Oct 2016 22:32:21 +0000 (22:32 +0000)]
[WebAssemby] Clean up an obsolete comment.

The comment is present inside the body of GetVRegDef.

llvm-svn: 283153

7 years ago[lit] Use argparse instead of optparse
Chris Bieneman [Mon, 3 Oct 2016 22:12:42 +0000 (22:12 +0000)]
[lit] Use argparse instead of optparse

Summary:
optparse is deprecated in Python 2.7, which is the minimum version of
Python required to run the LLVM test suite. Replace its usage in lit
with argparse, optparse's 2.7 replacement module.

argparse has several benefits over optparse, but this commit does not
make use of those benefits yet. Instead, it simply uses the new API,
and attempts to keep the number of changes to a minimum.

Confirmed that lit's test suite, as well as LLVM's regression test suite,
still pass with these changes.

Patch By Brian Gesiak!

Reviewers: ddunbar, echristo, beanz, delcypher

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283152

7 years agoTargetMachine: Make the win32-macho workaround more specific.
Matthias Braun [Mon, 3 Oct 2016 22:12:37 +0000 (22:12 +0000)]
TargetMachine: Make the win32-macho workaround more specific.

This is to avoid problems with win32 + ELF which surprisingly happens a
lot in practice: If a user just specifies -march on the commandline the
object format changes along with the architecture to ELF in many
instances while the OS stays with the default/host OS.

llvm-svn: 283151

7 years ago[WebAssembly] Delete an unused function. NFC.
Dan Gohman [Mon, 3 Oct 2016 22:06:28 +0000 (22:06 +0000)]
[WebAssembly] Delete an unused function. NFC.

llvm-svn: 283150

7 years agoSet some tests to an unknown vendor and OS
Matthias Braun [Mon, 3 Oct 2016 21:58:20 +0000 (21:58 +0000)]
Set some tests to an unknown vendor and OS

This avoids llc using the hosts OS/vendor as defaults and triggering
unwanted behaviour in the tests. This should deal with the buildbot
breakages on windows after r283140.

llvm-svn: 283149

7 years ago[LTO] Fix test to not depend on the exact address of symbols, just their linkage
Mehdi Amini [Mon, 3 Oct 2016 21:40:50 +0000 (21:40 +0000)]
[LTO] Fix test to not depend on the exact address of symbols, just their linkage

llvm-svn: 283148

7 years ago[WebAssembly] Fix indentation. NFC.
Dan Gohman [Mon, 3 Oct 2016 21:33:09 +0000 (21:33 +0000)]
[WebAssembly] Fix indentation. NFC.

llvm-svn: 283147

7 years ago[WebAssembly] Rename OPERAND_FP32IMM to OPERAND_F32IMM.
Dan Gohman [Mon, 3 Oct 2016 21:31:31 +0000 (21:31 +0000)]
[WebAssembly] Rename OPERAND_FP32IMM to OPERAND_F32IMM.

WebAssembly documentation consistently says "f32" rather than "fp32" to
describe 32-bit floating-point.

llvm-svn: 283146

7 years agoObjectiveC: fix a seg fault when deserialing redeclaration of ObjCMethodDecl.
Manman Ren [Mon, 3 Oct 2016 21:26:46 +0000 (21:26 +0000)]
ObjectiveC: fix a seg fault when deserialing redeclaration of ObjCMethodDecl.

The deserialization of redeclartion can cause seg fault since getCanonicalDecl
of the redeclaration returns the lookup result on the ObjCContainerDecl,
which can be null if FindExternalVisibleDeclsByName is not done updating
the lookup results.

The fix is to return the redeclaration itself as the canonical decl. Note that
the handling for redeclaration of ObjCMethodDecl is not in line with other
redeclarables.

rdar://28488466

llvm-svn: 283145

7 years ago[AArch64][RegisterBankInfo] Add getSameKindofOperandsMapping.
Quentin Colombet [Mon, 3 Oct 2016 20:20:13 +0000 (20:20 +0000)]
[AArch64][RegisterBankInfo] Add getSameKindofOperandsMapping.

Refactor the code so that the same function can be used for all
instructions with all the same operands for up to 3 operands.

This is going to be useful for cast instructions.
NFC.

llvm-svn: 283144

7 years ago[RDF] Fix liveness propagation through shadows
Krzysztof Parzyszek [Mon, 3 Oct 2016 20:17:20 +0000 (20:17 +0000)]
[RDF] Fix liveness propagation through shadows

Each shadow only represents data flow that is restricted to its reaching
def. Propagating more than that could lead to spurious register liveness,
resulting in extra (incorrectly) block live-ins.

llvm-svn: 283143

7 years agoAArch64Subtarget: Remove unused CPUString field
Matthias Braun [Mon, 3 Oct 2016 20:17:02 +0000 (20:17 +0000)]
AArch64Subtarget: Remove unused CPUString field

llvm-svn: 283142

7 years ago[analyzer] A blind attempt to fix a buildbot after r283092.
Artem Dergachev [Mon, 3 Oct 2016 20:12:12 +0000 (20:12 +0000)]
[analyzer] A blind attempt to fix a buildbot after r283092.

The msvc compiler seems to crash compiling the BugReport class.

llvm-svn: 283141

7 years agoX86: Do not produce GOT relocations on windows
Matthias Braun [Mon, 3 Oct 2016 20:11:24 +0000 (20:11 +0000)]
X86: Do not produce GOT relocations on windows

Windows has no GOT relocations the way elf/darwin has. Some people use
x86_64-pc-win32-macho to build EFI firmware; Do not produce GOT
relocations for this target.

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

llvm-svn: 283140

7 years ago[esan] Fix ESan test failure on Debian Sid bot
Qin Zhao [Mon, 3 Oct 2016 20:03:10 +0000 (20:03 +0000)]
[esan] Fix ESan test failure on Debian Sid bot

Summary:
Handles early allocation from dlsym by allocating memory from a local
static buffer.

Reviewers: bruening

Subscribers: kubabrecka

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

llvm-svn: 283139

7 years agoAdd unit tests for StringSwitch.
Zachary Turner [Mon, 3 Oct 2016 19:56:50 +0000 (19:56 +0000)]
Add unit tests for StringSwitch.

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

llvm-svn: 283138

7 years ago[PruneEH] Be correct in the face IPO
Sanjoy Das [Mon, 3 Oct 2016 19:35:30 +0000 (19:35 +0000)]
[PruneEH] Be correct in the face IPO

This fixes one spot I had missed in r265762.  Credit goes to Philip
Reames for spotting this one!

llvm-svn: 283137

7 years ago[sancov] using env for better portability
Mike Aizatsky [Mon, 3 Oct 2016 19:22:05 +0000 (19:22 +0000)]
[sancov] using env for better portability

llvm-svn: 283136

7 years agoAdded more comments to tooling::Replacements.
Eric Liu [Mon, 3 Oct 2016 19:14:30 +0000 (19:14 +0000)]
Added more comments to tooling::Replacements.

Summary: Also test phabricator commit processing.

Subscribers: klimek, cfe-commits

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

llvm-svn: 283135

7 years agoRefactor LICM pass in preparation for LoopSink pass.
Dehao Chen [Mon, 3 Oct 2016 18:52:08 +0000 (18:52 +0000)]
Refactor LICM pass in preparation for LoopSink pass.

Summary: LoopSink pass uses some common function in LICM. This patch refactor the LICM code to make it usable by LoopSink pass (https://reviews.llvm.org/D22778).

Reviewers: davidxl, danielcdh, hfinkel, chandlerc

Subscribers: hfinkel, llvm-commits

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

llvm-svn: 283134

7 years ago[AMDGPU] Pass optimization level to SelectionDAGISel
Konstantin Zhuravlyov [Mon, 3 Oct 2016 18:47:26 +0000 (18:47 +0000)]
[AMDGPU] Pass optimization level to SelectionDAGISel

llvm-svn: 283133

7 years agoFactor out a diagnostic kind enum for use in two %select expressions
Reid Kleckner [Mon, 3 Oct 2016 18:34:23 +0000 (18:34 +0000)]
Factor out a diagnostic kind enum for use in two %select expressions

NFC

llvm-svn: 283131

7 years ago[AMDGPU] Sign extend AShr when promoting (instead of zero extending)
Konstantin Zhuravlyov [Mon, 3 Oct 2016 18:29:01 +0000 (18:29 +0000)]
[AMDGPU] Sign extend AShr when promoting (instead of zero extending)

llvm-svn: 283130

7 years agoJump threading: avoid trying to split edge into landingpad block (PR27840)
Hans Wennborg [Mon, 3 Oct 2016 18:18:04 +0000 (18:18 +0000)]
Jump threading: avoid trying to split edge into landingpad block (PR27840)

Splitting the edge is nontrivial because of the landing pad, and we would
currently assert trying to do it.

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

llvm-svn: 283129

7 years agoRename Error -> ReportError.
Zachary Turner [Mon, 3 Oct 2016 18:17:18 +0000 (18:17 +0000)]
Rename Error -> ReportError.

Error conflicts with the llvm::Error datatype, creating
ambiguities.

llvm-svn: 283128

7 years agoRevert "Use getSize instead of data().size(). NFC."
Rafael Espindola [Mon, 3 Oct 2016 18:01:10 +0000 (18:01 +0000)]
Revert "Use getSize instead of data().size(). NFC."

This reverts commit r283125.

lld needs to be updated.

llvm-svn: 283127

7 years ago[RDF] Further improve readability of the graph
Krzysztof Parzyszek [Mon, 3 Oct 2016 17:54:33 +0000 (17:54 +0000)]
[RDF] Further improve readability of the graph

Print target basic block for a branch.

llvm-svn: 283126

7 years agoUse getSize instead of data().size(). NFC.
Rafael Espindola [Mon, 3 Oct 2016 17:49:19 +0000 (17:49 +0000)]
Use getSize instead of data().size(). NFC.

Also assert isFinalized in getSize(). This just reduces the noise from
another patch.

llvm-svn: 283125

7 years agoMark a couple issues as done (2742 and 2760)
Marshall Clow [Mon, 3 Oct 2016 17:35:08 +0000 (17:35 +0000)]
Mark a couple issues as done (2742 and 2760)

llvm-svn: 283124

7 years ago[RTDyld] Fix a bug in RTDyldMemoryManager::deregisterEHFrames.
Lang Hames [Mon, 3 Oct 2016 17:34:56 +0000 (17:34 +0000)]
[RTDyld] Fix a bug in RTDyldMemoryManager::deregisterEHFrames.

It should forward to deregisterEHFramesInProcess by default, not
registerEHFramesInProcess.

No test case: I haven't come up with a good way to unit test EH frame
registration yet.

llvm-svn: 283123

7 years ago[RDF] Replace RegisterAliasInfo with target-independent code using lane masks
Krzysztof Parzyszek [Mon, 3 Oct 2016 17:14:48 +0000 (17:14 +0000)]
[RDF] Replace RegisterAliasInfo with target-independent code using lane masks

llvm-svn: 283122

7 years ago[CUDA] Clean up some comments in Sema::IsOverload. NFC
Justin Lebar [Mon, 3 Oct 2016 16:48:27 +0000 (16:48 +0000)]
[CUDA] Clean up some comments in Sema::IsOverload.  NFC

llvm-svn: 283121

7 years ago[CUDA] Disallow overloading destructors.
Justin Lebar [Mon, 3 Oct 2016 16:48:23 +0000 (16:48 +0000)]
[CUDA] Disallow overloading destructors.

Summary:
We'd attempted to allow this, but turns out we were doing a very bad
job.  :)

Making this work properly would be a giant change in clang.  For
example, we'd need to make CXXRecordDecl::getDestructor()
context-sensitive, because the destructor you end up with depends on
where you're calling it from.

For now (and hopefully for ever), just disallow overloading of
destructors in CUDA.

Reviewers: rsmith

Subscribers: cfe-commits, tra

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

llvm-svn: 283120

7 years ago[x86, SSE/AVX] allow 128/256-bit lowering for copysign vector intrinsics (PR30433)
Sanjay Patel [Mon, 3 Oct 2016 16:38:27 +0000 (16:38 +0000)]
[x86, SSE/AVX] allow 128/256-bit lowering for copysign vector intrinsics (PR30433)

This should fix:
https://llvm.org/bugs/show_bug.cgi?id=30433

There are a couple of open questions about the codegen:
1. Should we let scalar ops be scalars and avoid vector constant loads/splats?
2. Should we have a pass to combine constants such as the inverted pair that we have here?

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

llvm-svn: 283119

7 years ago[lit] Allow more file extensions for test cases.
Logan Chien [Mon, 3 Oct 2016 16:00:22 +0000 (16:00 +0000)]
[lit] Allow more file extensions for test cases.

This commit splits the file extensions before determining the test
format.  This allows libc++abi to add assembly-based test cases.

llvm-svn: 283118

7 years agoDon't drop the llvm. prefix when renaming.
Rafael Espindola [Mon, 3 Oct 2016 15:51:42 +0000 (15:51 +0000)]
Don't drop the llvm. prefix when renaming.

If the llvm. prefix is dropped other parts of llvm don't see this as
an intrinsic.  This means that the number of regular symbols depends
on the context the module is loaded into, which causes LTO to abort.

Fixes PR30509.

llvm-svn: 283117

7 years ago[ARC] Ignore qualifiers in copy-restore expressions
Vedant Kumar [Mon, 3 Oct 2016 15:29:22 +0000 (15:29 +0000)]
[ARC] Ignore qualifiers in copy-restore expressions

When ARC is enabled, an ObjCIndirectCopyRestoreExpr models the passing
of a function argument s.t:

  * The argument is copied into a temporary,
  * The temporary is passed into the function, and
  * After the function call completes, the temporary is move-assigned
    back to the original location of the argument.

The argument type and the parameter type must agree "except possibly in
qualification". This commit weakens an assertion in EmitCallArg() to
actually reflect that.

llvm-svn: 283116

7 years agofix formatting; NFC
Sanjay Patel [Mon, 3 Oct 2016 15:18:36 +0000 (15:18 +0000)]
fix formatting; NFC

llvm-svn: 283115

7 years ago[OpenCL] Fix bug in __builtin_astype causing invalid LLVM cast instructions
Yaxun Liu [Mon, 3 Oct 2016 14:41:50 +0000 (14:41 +0000)]
[OpenCL] Fix bug in __builtin_astype causing invalid LLVM cast instructions

__builtin_astype is used to cast OpenCL opaque types to other types, as such, it needs to be able to handle casting from and to pointer types correctly.

Current it cannot handle 1) casting between pointers of different addr spaces 2) casting between pointer type and non-pointer types.

This patch fixes that.

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

llvm-svn: 283114

7 years agoChange titie of page from Oulu to Issaquah
Marshall Clow [Mon, 3 Oct 2016 14:24:21 +0000 (14:24 +0000)]
Change titie of page from Oulu to Issaquah

llvm-svn: 283113

7 years agoList tentatively ready issues for Issaquah
Marshall Clow [Mon, 3 Oct 2016 14:23:04 +0000 (14:23 +0000)]
List tentatively ready issues for Issaquah

llvm-svn: 283112

7 years agoPrevent out of order HashDirective lexing in AsmLexer.
Nirav Dave [Mon, 3 Oct 2016 13:48:27 +0000 (13:48 +0000)]
Prevent out of order HashDirective lexing in AsmLexer.

Retrying after buildbot reset.

To lex hash directives we peek ahead to find component tokens, create a
unified token, and unlex the peeked tokens so the parser does not need
to parse the tokens then. Make sure we do not to lex another hash
directive during peek operation.

This fixes PR28921.

Reviewers: rnk, loladiro

Subscribers: llvm-commits

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

llvm-svn: 283111

7 years agoThis adds a separate file for the fp denormal regression tests. NFC.
Sjoerd Meijer [Mon, 3 Oct 2016 13:13:50 +0000 (13:13 +0000)]
This adds a separate file for the fp denormal regression tests. NFC.
I forgot to svn add the new file in my previous commit.

llvm-svn: 283110

7 years agoThis adds a separate file for the fp denormal regression tests. NFC.
Sjoerd Meijer [Mon, 3 Oct 2016 13:12:20 +0000 (13:12 +0000)]
This adds a separate file for the fp denormal regression tests. NFC.

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

llvm-svn: 283109

7 years agoAMDGPU: Fix typo
Matt Arsenault [Mon, 3 Oct 2016 13:06:58 +0000 (13:06 +0000)]
AMDGPU: Fix typo

llvm-svn: 283108

7 years agoAMDGPU: Fix missing -verify-machineinstrs in test
Matt Arsenault [Mon, 3 Oct 2016 12:58:59 +0000 (12:58 +0000)]
AMDGPU: Fix missing -verify-machineinstrs in test

llvm-svn: 283107

7 years agoWdocumentation fix
Simon Pilgrim [Mon, 3 Oct 2016 12:37:08 +0000 (12:37 +0000)]
Wdocumentation fix

llvm-svn: 283106

7 years agoFix PR 28885: Fix AST Printer output for the inherited constructor using
Alex Lorenz [Mon, 3 Oct 2016 12:22:17 +0000 (12:22 +0000)]
Fix PR 28885: Fix AST Printer output for the inherited constructor using
declarations.

This commit ensures that the correct record type is printed out for the
using declarations that represent C++ inherited constructors.
It fixes a regression introduced in r274049 which changed the name that's
stored in the using declarations that correspond to inherited constructors.

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

llvm-svn: 283105

7 years agoRevert r283102 (Typo in the phabricator link)
Alex Lorenz [Mon, 3 Oct 2016 12:17:56 +0000 (12:17 +0000)]
Revert r283102 (Typo in the phabricator link)

llvm-svn: 283104

7 years ago[X86][SSE] Add PR30371 (shuffle constant folding) test case
Simon Pilgrim [Mon, 3 Oct 2016 12:16:39 +0000 (12:16 +0000)]
[X86][SSE] Add PR30371 (shuffle constant folding) test case

llvm-svn: 283103

7 years agoFix PR 28885: Fix AST Printer output for the inherited constructor using
Alex Lorenz [Mon, 3 Oct 2016 12:12:03 +0000 (12:12 +0000)]
Fix PR 28885: Fix AST Printer output for the inherited constructor using
declarations.

This commit ensures that the correct record type is printed out for the
using declarations that represent C++ inherited constructors.
It fixes a regression introduced in r274049 which changed the name that's
stored in the using declarations that correspond to inherited constructors.

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

llvm-svn: 283102

7 years ago[ELF] - Apply clang-format. NFC.
George Rimar [Mon, 3 Oct 2016 11:13:55 +0000 (11:13 +0000)]
[ELF] - Apply clang-format. NFC.

llvm-svn: 283101

7 years ago[CMake] Fix libc++abi standalone cmake build.
Logan Chien [Mon, 3 Oct 2016 11:08:17 +0000 (11:08 +0000)]
[CMake] Fix libc++abi standalone cmake build.

The cmake files install directory has been changed to
${prefix}/lib/cmake/llvm since r259821.  Searching cmake modules in
${prefix}/share/llvm/cmake will result in fatal errors.

This commit fixes the out-of-tree build by changing the CMake module
search path to: "$(llvm-config --obj-root)/lib/cmake/llvm"

llvm-svn: 283100

7 years agoAdd new target hooks for LoadStoreVectorizer
Volkan Keles [Mon, 3 Oct 2016 10:31:34 +0000 (10:31 +0000)]
Add new target hooks for LoadStoreVectorizer

Summary: Added 6 new target hooks for the vectorizer in order to filter types, handle size constraints and decide how to split chains.

Reviewers: tstellarAMD, arsenm

Subscribers: arsenm, mzolotukhin, wdng, llvm-commits, nhaehnle

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

llvm-svn: 283099

7 years ago[ARM] Code size optimisation to lower udiv+urem to udiv+mls instead of a
Sjoerd Meijer [Mon, 3 Oct 2016 10:12:32 +0000 (10:12 +0000)]
[ARM] Code size optimisation to lower udiv+urem to udiv+mls instead of a
library call to __aeabi_uidivmod. This is an improved implementation of
r280808, see also D24133, that got reverted because isel was stuck in a loop.
That was caused by the optimisation incorrectly triggering on i64 ints, which
shouldn't happen because there is no 64bit hwdiv support; that put isel's type
legalization and this optimisation in a loop. A native ARM compiler and testing
now shows that this is fixed.

Patch mostly by Pablo Barrio.

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

llvm-svn: 283098

7 years ago[ELF] - Do not crash on invalid section alignment.
George Rimar [Mon, 3 Oct 2016 10:04:38 +0000 (10:04 +0000)]
[ELF] - Do not crash on invalid section alignment.

Case was revealed by id_000010,sig_08,src_000000,op_havoc,rep_4 from PR30540.

Out implementation uses uint32 for storing section alignment value,
what seems reasonable, though if value exceeds 32 bits bounds we have
truncation and final value of 0.

Patch fixes the issue.

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

llvm-svn: 283097

7 years ago[StaticAnalyser] Add test case to ensure that unreachable code is found.
Daniel Marjamaki [Mon, 3 Oct 2016 09:45:35 +0000 (09:45 +0000)]
[StaticAnalyser] Add test case to ensure that unreachable code is found.

https://reviews.llvm.org/D24905

llvm-svn: 283096

7 years ago[StaticAnalyzer] Fix UnreachableCode false positives.
Daniel Marjamaki [Mon, 3 Oct 2016 08:28:51 +0000 (08:28 +0000)]
[StaticAnalyzer] Fix UnreachableCode false positives.

When there is 'do { } while (0);' in the code the ExplodedGraph and UnoptimizedCFG did not match.

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

llvm-svn: 283095

7 years ago[analyzer] Improve CloneChecker diagnostics
Artem Dergachev [Mon, 3 Oct 2016 08:11:50 +0000 (08:11 +0000)]
[analyzer] Improve CloneChecker diagnostics

Highlight code clones referenced by the warning message with the help of
the extra notes feature recently introduced in r283092.

Change warning text to more clang-ish. Remove suggestions from the copy-paste
error checker diagnostics, because currently our suggestions are strictly 50%
wrong (we do not know which of the two code clones contains the error), and
for that reason we should not sound as if we're actually suggesting this.
Hopefully a better solution would bring them back.

Make sure the suspicious clone pair structure always mentions
the correct variable for the second clone.

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

llvm-svn: 283094

7 years ago[analyzer] Add extra notes to ObjCDeallocChecker
Artem Dergachev [Mon, 3 Oct 2016 08:03:51 +0000 (08:03 +0000)]
[analyzer] Add extra notes to ObjCDeallocChecker

The report is now highlighting instance variables and properties
referenced by the warning message with the help of the
extra notes feature recently introduced in r283092.

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

llvm-svn: 283093

7 years ago[analyzer] Extend bug reports with extra notes
Artem Dergachev [Mon, 3 Oct 2016 07:58:26 +0000 (07:58 +0000)]
[analyzer] Extend bug reports with extra notes

These diagnostics are separate from the path-sensitive engine's path notes,
and can be added manually on top of path-sensitive or path-insensitive reports.

The new note diagnostics would appear as note:-diagnostic on console and
as blue bubbles in scan-build. In plist files they currently do not appear,
because format needs to be discussed with plist file users.

The analyzer option "-analyzer-config notes-as-events=true" would convert
notes to normal path notes, and put them at the beginning of the path.
This is a temporary hack to show the new notes in plist files.

A few checkers would be updated in subsequent commits,
including tests for this new feature.

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

llvm-svn: 283092

7 years ago[CodeGen] Adding a test showing the current state of poor code gen of
Alexey Bataev [Mon, 3 Oct 2016 07:47:01 +0000 (07:47 +0000)]
[CodeGen] Adding a test showing the current state of poor code gen of
search loop, by Andrey Tischenko

PR27136 shows failure to hoist constant out of loop. This test is used
as start point to fix the failure: it shows the current state of codegen
and discovers what should be fixed

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

llvm-svn: 283091

7 years ago[lit] Throw in unimplemented method (NFC)
Chris Bieneman [Mon, 3 Oct 2016 04:48:22 +0000 (04:48 +0000)]
[lit] Throw in unimplemented method (NFC)

Summary:
lit's `OneCommandFileTest` class implements an abstract method that
raises if called. However, it raises by referencing an undefined
symbol. Instead, raise explicitly by throwing a `NotImplementedError`.
This is clearer, and appeases Python linters.

Patch By Brian Gesiak!

Reviewers: ddunbar, echristo, beanz

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283090

7 years ago[lit] Remove unused imports (NFC)
Chris Bieneman [Mon, 3 Oct 2016 04:48:18 +0000 (04:48 +0000)]
[lit] Remove unused imports (NFC)

Reviewers: ddunbar, echristo, beanz

Patch by Brian Gesiak!

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283089

7 years ago[lit] Compare to None using identity, not equality
Chris Bieneman [Mon, 3 Oct 2016 04:48:13 +0000 (04:48 +0000)]
[lit] Compare to None using identity, not equality

Summary:
In Python, `None` is a singleton, so checking whether a variable is
`None` may be done with `is` or `is not`. This has a slight advantage
over equiality comparisons `== None` and `!= None`, since `__eq__` may
be overridden in Python to produce sometimes unexpected results.

Using `is None` and `is not None` is also recommended practice in
https://www.python.org/dev/peps/pep-0008:

> Comparisons to singletons like `None` should always be done with `is` or
> `is not`, never the equality operators.

Patch by Brian Gesiak!

Reviewers: ddunbar, echristo, beanz

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 283088

7 years ago[AMDGPU] Remove unused variables from SIOptimizeExecMasking
Konstantin Zhuravlyov [Mon, 3 Oct 2016 04:43:22 +0000 (04:43 +0000)]
[AMDGPU] Remove unused variables from SIOptimizeExecMasking

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

llvm-svn: 283087

7 years ago[PowerPC] Account for the ELFv2 function prologue during branch selection
Hal Finkel [Mon, 3 Oct 2016 04:06:44 +0000 (04:06 +0000)]
[PowerPC] Account for the ELFv2 function prologue during branch selection

The PPC branch-selection pass, which performs branch relaxation, needs to
account for the padding that might be introduced to satisfy block alignment
requirements. We were assuming that the first block was at offset zero (i.e.
had the alignment of the function itself), but under the ELFv2 ABI, a global
entry function prologue is added to the first block, and it is a
two-instruction sequence (i.e. eight-bytes long). If the function has 16-byte
alignment, the fact that the first block is eight bytes offset from the start
of the function is relevant to calculating where padding will be added in
between later blocks.

Unfortunately, I don't have a small test case.

llvm-svn: 283086

7 years agoKeep the test only for Itanium abi
Aditya Kumar [Mon, 3 Oct 2016 02:36:33 +0000 (02:36 +0000)]
Keep the test only for Itanium abi

llvm-svn: 283085

7 years ago[AVX-512] Remove isCheapAsAMove flag from VMOVAPSZ128rm_NOVLX and friends.
Craig Topper [Mon, 3 Oct 2016 02:22:33 +0000 (02:22 +0000)]
[AVX-512] Remove isCheapAsAMove flag from VMOVAPSZ128rm_NOVLX and friends.

This was accidentally copy and pasted from other Pseudos in the file.

llvm-svn: 283084

7 years ago[X86] Mark all sizes of (V)MOVUPD as trivially rematerializable.
Craig Topper [Mon, 3 Oct 2016 02:00:29 +0000 (02:00 +0000)]
[X86] Mark all sizes of (V)MOVUPD as trivially rematerializable.

I don't know for sure that we truly needs this, but its the only vector load that isn't rematerializable. Making it consistent allows it to not be a special case in the td files.

llvm-svn: 283083

7 years agoFix regex in lldb lit test TestCallStopAndContinue
Tim Hammerquist [Mon, 3 Oct 2016 00:07:24 +0000 (00:07 +0000)]
Fix regex in lldb lit test TestCallStopAndContinue

https://reviews.llvm.org/D25167

llvm-svn: 283082

7 years ago[CMake] Fixing a few missing dependencies on intrinsics_gen
Chris Bieneman [Mon, 3 Oct 2016 00:03:43 +0000 (00:03 +0000)]
[CMake] Fixing a few missing dependencies on intrinsics_gen

These are missing dependencies that have been exposed in builds as a result of my change to make lldb libraries depend on CLANG_TABLEGEN_TARGETS instead of libclang.

llvm-svn: 283081

7 years ago[X86][AVX2] Add support for combining target shuffles to VPERMD/VPERMPS
Simon Pilgrim [Sun, 2 Oct 2016 21:07:58 +0000 (21:07 +0000)]
[X86][AVX2] Add support for combining target shuffles to VPERMD/VPERMPS

llvm-svn: 283080

7 years ago[SCEV] Rely on ConstantRange instead of custom logic; NFCI
Sanjoy Das [Sun, 2 Oct 2016 20:59:10 +0000 (20:59 +0000)]
[SCEV] Rely on ConstantRange instead of custom logic; NFCI

This was first landed in rL283058 and subsequenlty reverted since a
change this depends on (rL283057) was buggy and had to be reverted.

llvm-svn: 283079

7 years ago[ConstantRange] Make getEquivalentICmp smarter
Sanjoy Das [Sun, 2 Oct 2016 20:59:05 +0000 (20:59 +0000)]
[ConstantRange] Make getEquivalentICmp smarter

This change teaches getEquivalentICmp to be smarter about generating
ICMP_NE and ICMP_EQ predicates.

An earlier version of this change was landed as rL283057 which had a
use-after-free bug.  This new version has a fix for that bug, and a (C++
unittests/) test case that would have triggered it rL283057.

llvm-svn: 283078

7 years ago[X86][AVX2] Missed opportunities to combine to VPERMD/VPERMPS
Simon Pilgrim [Sun, 2 Oct 2016 20:43:02 +0000 (20:43 +0000)]
[X86][AVX2] Missed opportunities to combine to VPERMD/VPERMPS

llvm-svn: 283077

7 years ago[X86][AVX2] Fix typo in test names
Simon Pilgrim [Sun, 2 Oct 2016 19:31:58 +0000 (19:31 +0000)]
[X86][AVX2] Fix typo in test names

We are testing vpermps not vpermd

llvm-svn: 283076

7 years ago[cmake] Install 'clang-cpp' symlink
Michal Gorny [Sun, 2 Oct 2016 19:28:57 +0000 (19:28 +0000)]
[cmake] Install 'clang-cpp' symlink

Install the 'clang-cpp' symlink used to spawn the preprocessor. The code
handling this suffix is already included in Driver. FreeBSD is already
creating such a symlink in ports, and a similar one was requested
by Gentoo/FreeBSD team. The goal is to handle software that takes a C
preprocessor via a variable but does not handle passing options
correctly (i.e. 'clang -E' does not work).

Bug: https://bugs.gentoo.org/478810

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

llvm-svn: 283075

7 years agoRangify for loops.
Yaron Keren [Sun, 2 Oct 2016 19:21:41 +0000 (19:21 +0000)]
Rangify for loops.

llvm-svn: 283074

7 years ago[AVX-512] Use native IR for masked 512-bit add/sub/mul/div ps/pd intrinsics when...
Craig Topper [Sun, 2 Oct 2016 17:43:00 +0000 (17:43 +0000)]
[AVX-512] Use native IR for masked 512-bit add/sub/mul/div ps/pd intrinsics when rounding mode isn't used.

llvm-svn: 283073

7 years ago[x86] remove 'nan' strings from copysign assertions; NFC
Sanjay Patel [Sun, 2 Oct 2016 17:07:24 +0000 (17:07 +0000)]
[x86] remove 'nan' strings from copysign assertions; NFC

Preemptively scrubbing these to avoid a bot fail as in PR30443:
https://llvm.org/bugs/show_bug.cgi?id=30443

I'm nearly done with a patch to fix these cases, so not trying very
hard to do better for the temporary win.

I plan to use better checks than what the script produces for the vectorized cases.

llvm-svn: 283072

7 years ago[x86] add test to show unnecessary scalarization of copysign intrinsics (PR30433)
Sanjay Patel [Sun, 2 Oct 2016 16:31:35 +0000 (16:31 +0000)]
[x86] add test to show unnecessary scalarization of copysign intrinsics (PR30433)

llvm-svn: 283071

7 years ago[X86][AVX] Ensure broadcast loads respect dependencies
Simon Pilgrim [Sun, 2 Oct 2016 15:59:15 +0000 (15:59 +0000)]
[X86][AVX] Ensure broadcast loads respect dependencies

To allow broadcast loads of a non-zero'th vector element, lowerVectorShuffleAsBroadcast can replace a load with a new load with an adjusted address, but unfortunately we weren't ensuring that the new load respected the same dependencies.

This patch adds a TokenFactor and updates all dependencies of the old load to reference the new load instead.

Bug found during internal testing.

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

llvm-svn: 283070

7 years agoRevert "XFAIL TestSBData for gcc-4.9 i386"
Pavel Labath [Sun, 2 Oct 2016 15:56:33 +0000 (15:56 +0000)]
Revert "XFAIL TestSBData for gcc-4.9 i386"

Test fixed.

llvm-svn: 283069

7 years ago[CUDA] Allow extern __shared__ on empty-length arrays.
Justin Lebar [Sun, 2 Oct 2016 15:24:50 +0000 (15:24 +0000)]
[CUDA] Allow extern __shared__ on empty-length arrays.

"extern __shared__ int x[]" is OK.

llvm-svn: 283068

7 years ago[clang-rename] Overhaul clang-rename.el.
Kirill Bobyrev [Sun, 2 Oct 2016 14:51:33 +0000 (14:51 +0000)]
[clang-rename] Overhaul clang-rename.el.

* Use lexical binding, as recommended for new libraries.
* Fix customization variable (set correct group and type).
* Create a new customization group for the library.
* Autoload the main clang-rename command so that users don't have to explicitly load the library.
* Correctly translate between file and buffer positions using bufferpos-to-filepos (if available) or a fallback.
* Don't invoke the shell, it's not necessary and adds complexity.
* Save clang-rename output in a buffer and display that on failure.
* Save all buffers before calling clang-rename. This is required anyway and prevents data loss when the buffer is later reverted.
* In revert-buffer, use keywords instead of t for Boolean arguments to improve readability.
* Don't reset buffer modes when reverting.
* Emacs treats the character after a symbol as part of the symbol, while clang-rename doesn't; resolve this inconsistency.
* Formatting.

Patch by Philipp Stephani!

Reviewers: omtcyfz

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

llvm-svn: 283067

7 years ago[X86] Don't set i64 ADDC/ADDE/SUBC/SUBE as Custom if the target isn't 64-bit. This...
Craig Topper [Sun, 2 Oct 2016 06:13:43 +0000 (06:13 +0000)]
[X86] Don't set i64 ADDC/ADDE/SUBC/SUBE as Custom if the target isn't 64-bit. This way we don't have to catch them and do nothing with them in ReplaceNodeResults.

llvm-svn: 283066

7 years ago[X86] Fix indentation. NFC
Craig Topper [Sun, 2 Oct 2016 06:13:40 +0000 (06:13 +0000)]
[X86] Fix indentation. NFC

llvm-svn: 283065

7 years ago[coroutines] Rename driver flag -fcoroutines to -fcoroutines-ts
Gor Nishanov [Sun, 2 Oct 2016 03:31:58 +0000 (03:31 +0000)]
[coroutines] Rename driver flag -fcoroutines to -fcoroutines-ts

Summary:
Also makes -fcoroutines_ts to be both a Driver and CC1 flag.

Patch mostly by EricWF.

Reviewers: rnk, cfe-commits, rsmith, EricWF

Subscribers: mehdi_amini

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

llvm-svn: 283064