platform/upstream/llvm.git
7 years ago[DAGcombiner] Fix incorrect sinking of a truncate into the operand of a shift.
Andrea Di Biagio [Fri, 2 Sep 2016 11:29:09 +0000 (11:29 +0000)]
[DAGcombiner] Fix incorrect sinking of a truncate into the operand of a shift.

This fixes a regression introduced by revision 268094.
Revision 268094 added the following dag combine rule:
// trunc (shl x, K) -> shl (trunc x), K => K < vt.size / 2

That rule converts a truncate of a shift-by-constant into a shift of a truncated
value. We do this only if the shift count is less than half the size in bits of
the truncated value (K < vt.size / 2).

The problem is that the constraint on the shift count is incorrect, so the rule
doesn't work well in some cases involving vector types. The combine rule should
have been written instead like this:
// trunc (shl x, K) -> shl (trunc x), K => K < vt.getScalarSizeInBits()

Basically, if K is smaller than the "scalar size in bits" of the truncated value
then we know that by "sinking" the truncate into the operand of the shift we
would never accidentally make the shift undefined.

This patch fixes the check on the shift count, and adds test cases to make sure
that we don't regress the behavior.

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

llvm-svn: 280482

7 years agoFixed a typo (LLVM/Support/CFG.h -> LLVM/IR/CFG.h)
Andrey Bokhanko [Fri, 2 Sep 2016 11:13:35 +0000 (11:13 +0000)]
Fixed a typo (LLVM/Support/CFG.h -> LLVM/IR/CFG.h)

llvm-svn: 280481

7 years agoReapply "Make Scalar::GetValue more consistent"
Pavel Labath [Fri, 2 Sep 2016 10:58:52 +0000 (10:58 +0000)]
Reapply "Make Scalar::GetValue more consistent"

this is a resubmission of r280476. The problem with the original commit was that it was printing
out all numbers as signed, which was wrong for unsigned numbers with the MSB set. Fix that and
add a unit test covering that case.

llvm-svn: 280480

7 years ago[PM] Try to fix an MSVC2013 failure due to finding a template
Chandler Carruth [Fri, 2 Sep 2016 10:49:58 +0000 (10:49 +0000)]
[PM] Try to fix an MSVC2013 failure due to finding a template
constructor when trying to do copy construction by adding an explicit
move constructor.

Will watch the bots to discover if this is sufficient.

llvm-svn: 280479

7 years agoRevert "Make Scalar::GetValue more consistent"
Pavel Labath [Fri, 2 Sep 2016 09:52:18 +0000 (09:52 +0000)]
Revert "Make Scalar::GetValue more consistent"

This reverts commit r280476 as it breaks several tests on i386. I was fixing an 32-bit
breakage, and I did not run the 32-bit test suite before submitting, oops.

llvm-svn: 280478

7 years agoBump up TestCallWithTimeout timeout
Pavel Labath [Fri, 2 Sep 2016 09:25:42 +0000 (09:25 +0000)]
Bump up TestCallWithTimeout timeout

Still a bit flaky on remote targets. Trying a larger bump this time. :/

llvm-svn: 280477

7 years agoMake Scalar::GetValue more consistent
Pavel Labath [Fri, 2 Sep 2016 09:25:36 +0000 (09:25 +0000)]
Make Scalar::GetValue more consistent

Summary:
It seems the original intention of the function was printing signed values in decimal format, and
unsigned values in hex (without the leading "0x"). However, signed and unsigned long were
exchanged, which lead to amusing test failures in TestMemoryFind.py.

Instead of just switching the two, I think we should just print everything in decimal here, as
the current behaviour is very confusing (especially when one does not request printing of types).
Nothing seems to depend on this behaviour except and we already have a way for the user to
request the format he wants when printing values for most commands (which presumably does not go
through this function).

I also add a unit tests for the function in question.

Reviewers: clayborg, granata.enrico

Subscribers: lldb-commits

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

llvm-svn: 280476

7 years ago[ELF] - Fix for: bug 30237 - lld does not implement -f option
George Rimar [Fri, 2 Sep 2016 09:13:05 +0000 (09:13 +0000)]
[ELF] - Fix for: bug 30237 - lld does not implement -f option

FreeBSD's libstdc++ build (used on tier-2 architectures) uses GNU ld's
-f <name> option, which sets the DT_AUXILIARY field to the specified name.
Multiple -f options may be specified and the DT_AUXILIARY entries
will be added in the order in which they appear.

Patch implements that option.

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

llvm-svn: 280475

7 years ago[InstCombine] Add test for insertelementinsts with constants.
Alexey Bataev [Fri, 2 Sep 2016 09:00:53 +0000 (09:00 +0000)]
[InstCombine] Add test for insertelementinsts with constants.

Added a tests that shows that several insertelementinsts with constant
indexes/data are not folded into a single shuffleinst.

llvm-svn: 280474

7 years ago[Support] - Fix possible crash in match() of llvm::Regex.
George Rimar [Fri, 2 Sep 2016 08:44:46 +0000 (08:44 +0000)]
[Support] - Fix possible crash in match() of llvm::Regex.

Crash was possible if match() method
was called on object that was moved or object
created with empty constructor.

Testcases updated.

DIfferential revision: https://reviews.llvm.org/D24123

llvm-svn: 280473

7 years ago[llvm-readobj] - Teach readobj to print DT_AUXILIARY dynamic tag in human readable...
George Rimar [Fri, 2 Sep 2016 07:35:19 +0000 (07:35 +0000)]
[llvm-readobj] - Teach readobj to print DT_AUXILIARY dynamic tag in human readable form.

Previously DT_AUXILIARY was unknown, patch fixes that.

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

llvm-svn: 280471

7 years ago[SimplifyCFG] Add a workaround to fix PR30188
James Molloy [Fri, 2 Sep 2016 07:29:00 +0000 (07:29 +0000)]
[SimplifyCFG] Add a workaround to fix PR30188

We're sinking stores, which is a good thing, but in the process creating selects for the store address operand, which SROA/Mem2Reg can't look through, which caused serious regressions.

The real fix is in SROA, which I'll be looking into.

llvm-svn: 280470

7 years ago[asan] Move scariness_score_test.cc to a common subdirectory
Filipe Cabecinhas [Fri, 2 Sep 2016 07:18:35 +0000 (07:18 +0000)]
[asan] Move scariness_score_test.cc to a common subdirectory

Summary:
Only one of the tests in it doesn't work on OS X.
On Windows it seems that everything that is being moved is also
supported.

The abort() test wasn't copied over (original case 22). This is because
it doesn't work on OS X.

Reviewers: kcc, eugenis, vitalybuka

Subscribers: kubabrecka, llvm-commits
llvm-svn: 280469

7 years agoDrop '@brief' from doxygen comments
Tobias Grosser [Fri, 2 Sep 2016 06:33:33 +0000 (06:33 +0000)]
Drop '@brief' from doxygen comments

LLVM's coding guideline suggests to not use @brief for one-sentence doxygen
comments to improve readability. Switch this once and for all to ensure people
do not copy @brief comments from other parts of Polly, when writing new code.

llvm-svn: 280468

7 years ago[AVX-512] Move tests for masked floating point logical operations to avx512dqvl-intri...
Craig Topper [Fri, 2 Sep 2016 06:11:31 +0000 (06:11 +0000)]
[AVX-512] Move tests for masked floating point logical operations to avx512dqvl-intrinsics-upgrade.ll since they have now been autoupgraded.

llvm-svn: 280467

7 years ago[AVX-512] Remove floating point logical operation instrinsics and replace them with...
Craig Topper [Fri, 2 Sep 2016 05:29:17 +0000 (05:29 +0000)]
[AVX-512] Remove floating point logical operation instrinsics and replace them with native IR.

llvm-svn: 280466

7 years ago[AVX-512] Add more patterns for masked and broadcasted logical operations where the...
Craig Topper [Fri, 2 Sep 2016 05:29:13 +0000 (05:29 +0000)]
[AVX-512] Add more patterns for masked and broadcasted logical operations where the select or broadcast has a floating point type.

These are needed in order to remove the masked floating point logical operation intrinsics and use native IR.

llvm-svn: 280465

7 years ago[AVX-512] Add execution domain fixing for logical operations with broadcast loads...
Craig Topper [Fri, 2 Sep 2016 05:29:09 +0000 (05:29 +0000)]
[AVX-512] Add execution domain fixing for logical operations with broadcast loads. This builds on the handling of masked ops since we need to keep element size the same.

llvm-svn: 280464

7 years ago[X86] Strengthen some SDNode type constraints.
Craig Topper [Fri, 2 Sep 2016 04:25:33 +0000 (04:25 +0000)]
[X86] Strengthen some SDNode type constraints.

llvm-svn: 280463

7 years ago[AVX-512] Add NoVLX Predicates to some patterns so they don't rely on pattern orderin...
Craig Topper [Fri, 2 Sep 2016 04:25:30 +0000 (04:25 +0000)]
[AVX-512] Add NoVLX Predicates to some patterns so they don't rely on pattern ordering to be lower priority than their equivalent VLX pattern.

llvm-svn: 280462

7 years ago[Docs] Fix another typo in the Error/Expected docs.
Lang Hames [Fri, 2 Sep 2016 03:50:50 +0000 (03:50 +0000)]
[Docs] Fix another typo in the Error/Expected docs.

llvm-svn: 280461

7 years ago[Docs] Fix a couple of typos in the Error/Expected docs.
Lang Hames [Fri, 2 Sep 2016 03:46:08 +0000 (03:46 +0000)]
[Docs] Fix a couple of typos in the Error/Expected docs.

llvm-svn: 280460

7 years ago[ORC] Fix some missing fields in OrcRemoteTargetClient's move constructor.
Lang Hames [Fri, 2 Sep 2016 03:45:44 +0000 (03:45 +0000)]
[ORC] Fix some missing fields in OrcRemoteTargetClient's move constructor.

llvm-svn: 280459

7 years agoAdd missing &. NFC.
George Burgess IV [Fri, 2 Sep 2016 03:38:43 +0000 (03:38 +0000)]
Add missing &. NFC.

llvm-svn: 280458

7 years ago[PowerPC] hasAndNotCompare should return true
Hal Finkel [Fri, 2 Sep 2016 02:58:25 +0000 (02:58 +0000)]
[PowerPC] hasAndNotCompare should return true

As Sanjay suggested when he added the hook, PPC should return true from
hasAndNotCompare. We have an efficient negated 'and' on PPC (which can feed a
compare).

Fixes PR27203.

llvm-svn: 280457

7 years agoAdd clang-reorder-fields to clang-tools-extra
Alexander Shaposhnikov [Fri, 2 Sep 2016 02:56:07 +0000 (02:56 +0000)]
Add clang-reorder-fields to clang-tools-extra

This diff adds v0 of clang-reorder-fields tool to clang/tools/extra.
The main idea behind this tool is to simplify and make less error-prone refactoring of large codebases when
someone needs to change the order fields of a struct/class (for example to remove excessive padding).

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

llvm-svn: 280456

7 years ago[lit] Fail testing if a googletest executable crashes during test discovery
Greg Parker [Fri, 2 Sep 2016 02:44:07 +0000 (02:44 +0000)]
[lit] Fail testing if a googletest executable crashes during test discovery

googletest formatted tests are discovered by running the test executable.
Previously testing would silently succeed if the test executable crashed
during the discovery process. Now testing fails with "error: unable to
discover google-tests ..." if the test executable exits with a non-zero status.

llvm-svn: 280455

7 years ago[PowerPC] Add a pattern for a runtime bit check
Hal Finkel [Fri, 2 Sep 2016 02:34:44 +0000 (02:34 +0000)]
[PowerPC] Add a pattern for a runtime bit check

Following a suggestion by Sanjay, we should lower:

  %shl = shl i32 1, %y
  %and = and i32 %x, %shl
  %cmp = icmp eq i32 %and, %shl
  ret i1 %cmp

into:

  subfic r4, r4, 32
  rlwnm r3, r3, r4, 31, 31

Add this pattern and some associated patterns for the 64-bit case and the
not-equal case. Fixes PR27356.

llvm-svn: 280454

7 years agorevert r280429 and r280425:
Dehao Chen [Fri, 2 Sep 2016 01:59:27 +0000 (01:59 +0000)]
revert r280429 and r280425:

r280425 | dehao | 2016-09-01 16:15:50 -0700 (Thu, 01 Sep 2016) | 9 lines

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).

r280429 | dehao | 2016-09-01 16:31:25 -0700 (Thu, 01 Sep 2016) | 9 lines

Refactor LICM to expose canSinkOrHoistInst to LoopSink pass.

Summary: LoopSink pass shares the same canSinkOrHoistInst functionality with LICM pass. This patch exposes this function in preparation of https://reviews.llvm.org/D22778
llvm-svn: 280453

7 years agorevert r280432:
Dehao Chen [Fri, 2 Sep 2016 01:47:13 +0000 (01:47 +0000)]
revert r280432:

r280432 | dehao | 2016-09-01 16:51:37 -0700 (Thu, 01 Sep 2016) | 9 lines

Explicitly require DominatorTreeAnalysis pass for instsimplify pass.

Summary: DominatorTreeAnalysis is always required by instsimplify.
llvm-svn: 280452

7 years agollvm/test/Transforms/GCOVProfiling/three-element-mdnode.ll: Use %/T instead of %T...
NAKAMURA Takumi [Fri, 2 Sep 2016 01:33:00 +0000 (01:33 +0000)]
llvm/test/Transforms/GCOVProfiling/three-element-mdnode.ll: Use %/T instead of %T, not to emit backslashes.

llvm-svn: 280451

7 years agobugpoint: clang-format all of bugpoint. NFC
Justin Bogner [Fri, 2 Sep 2016 01:21:37 +0000 (01:21 +0000)]
bugpoint: clang-format all of bugpoint. NFC

I'm going to clean up the APIs here a bit and touch many many lines
anyway.

llvm-svn: 280450

7 years agoraw_pwrite_stream_test.cpp: _putenv_s() may be assumed as win32-generic.
NAKAMURA Takumi [Fri, 2 Sep 2016 01:20:18 +0000 (01:20 +0000)]
raw_pwrite_stream_test.cpp: _putenv_s() may be assumed as win32-generic.

llvm-svn: 280449

7 years agoIfConversion: Don't count branches in # of duplicates.
Kyle Butt [Fri, 2 Sep 2016 01:20:06 +0000 (01:20 +0000)]
IfConversion: Don't count branches in # of duplicates.

If the entire blocks match, we would count the branch instructions
toward the number of duplicated instructions. This doesn't match what we
do elsewhere, and was causing a bug.

llvm-svn: 280448

7 years ago[PM] Add a unittest for invalidating module analyses with an SCC pass.
Chandler Carruth [Fri, 2 Sep 2016 01:16:27 +0000 (01:16 +0000)]
[PM] Add a unittest for invalidating module analyses with an SCC pass.

This wasn't really well explicitly tested with a nice unittest before.
It seems good to have reasonably broken out unittests for this kind of
functionality as I'm workin go other invalidation features to make sure
none of the existing ones regress.

This still has too much duplicated code, I plan to factor that out in
a subsequent commit to use common helpers for repeated parts of this.

llvm-svn: 280447

7 years ago[PM] (NFC) Split the IR parsing into a fixture so that I can split out
Chandler Carruth [Fri, 2 Sep 2016 01:14:05 +0000 (01:14 +0000)]
[PM] (NFC) Split the IR parsing into a fixture so that I can split out
more testing into other test routines while using the same core module.

llvm-svn: 280446

7 years agoFix a real temp file leak in FileOutputBuffer
Reid Kleckner [Fri, 2 Sep 2016 01:10:53 +0000 (01:10 +0000)]
Fix a real temp file leak in FileOutputBuffer

If we failed to commit the buffer but did not die to a signal, the temp
file would remain on disk on Windows. Having an open file mapping and
file handle prevents the file from being deleted. I am choosing not to
add an assertion of success on the temp file removal, since virus
scanners and other environmental things can often cause removal to fail
in real world tools.

Also fix more temp file leaks in unit tests.

llvm-svn: 280445

7 years ago[PM] (NFC) Refactor the CGSCC pass manager tests to use lambda-based
Chandler Carruth [Fri, 2 Sep 2016 01:08:04 +0000 (01:08 +0000)]
[PM] (NFC) Refactor the CGSCC pass manager tests to use lambda-based
passes.

This simplifies the test some and makes it more focused and clear what
is being tested. It will also make it much easier to extend with further
testing of different pass behaviors.

I've also replaced a pointless module pass with running the requires
pass directly as that is all that it was really doing.

llvm-svn: 280444

7 years agoTry to fix some temp file leaks in SupportTests, PR18335
Reid Kleckner [Fri, 2 Sep 2016 00:51:34 +0000 (00:51 +0000)]
Try to fix some temp file leaks in SupportTests, PR18335

llvm-svn: 280443

7 years ago[CFGPrinter] Display branch weight on the edges
Adam Nemet [Fri, 2 Sep 2016 00:28:26 +0000 (00:28 +0000)]
[CFGPrinter] Display branch weight on the edges

Summary:
This is pretty useful especially in connection with
BFI's -view-block-freq-propagation-dags.  It helped me to track down the
bug that is being fixed in D24118.

While -view-block-freq-propagation-dags displays the high-level
information with static heuristics included (and block frequencies), the
new thing only shows the raw weight as presented by PGO without any of
the static estimates.  This helps to distinguished what has been
measured vs. estimated.

For the sample loop in D24118, -view-block-freq-propagation-dags=integer
looks like this:

https://reviews.llvm.org/F2381352

While with -view-cfg-only you can see the underlying branch weights:

https://reviews.llvm.org/F2392296

Reviewers: dexonsmith, bogner, davidxl

Subscribers: llvm-commits

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

llvm-svn: 280442

7 years ago[PowerPC] Don't apply the PPC64 address-formation peephole for offsets greater than 7
Hal Finkel [Fri, 2 Sep 2016 00:28:20 +0000 (00:28 +0000)]
[PowerPC] Don't apply the PPC64 address-formation peephole for offsets greater than 7

When applying our address-formation PPC64 peephole, we are reusing the @ha TOC
addis value with the low parts associated with different offsets (i.e.
different effective symbol addends). We were assuming this was okay so long as
the offsets were less than the alignment of the global variable being accessed.
This ignored the fact, however, that the TOC base pointer itself need only be
8-byte aligned. As a result, what we were doing is legal only for offsets less
than 8 regardless of the alignment of the object being accessed.

Fixes PR28727.

llvm-svn: 280441

7 years ago[PowerPC] Don't consider fusion in PPC64 address-formation peephole
Hal Finkel [Fri, 2 Sep 2016 00:27:50 +0000 (00:27 +0000)]
[PowerPC] Don't consider fusion in PPC64 address-formation peephole

The logic in this function assumes that the P8 supports fusion of addis/addi,
but it does not. As a result, there is no advantage to restricting our peephole
application, merging addi instructions into dependent memory accesses, even
when the addi has multiple users, regardless of whether or not we're optimizing
for size.

We might need something like this again for the P9; I suspect we'll revisit
this code when we work on P9 tuning.

llvm-svn: 280440

7 years ago[StreamExecutor] Pass device memory by ref
Jason Henline [Fri, 2 Sep 2016 00:25:52 +0000 (00:25 +0000)]
[StreamExecutor] Pass device memory by ref

Summary:
Step 3 of getting GlobalDeviceMemory to own its handle.

Since GlobalDeviceMemory will no longer by copy-constructible, we must
pass instances by reference rather than by value.

Reviewers: jlebar

Subscribers: jprice, parallel_libs-commits

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

llvm-svn: 280439

7 years agoRevert https://reviews.llvm.org/D23279 because the tests have failed on several platforms
Alexander Shaposhnikov [Fri, 2 Sep 2016 00:24:06 +0000 (00:24 +0000)]
Revert https://reviews.llvm.org/D23279 because the tests have failed on several platforms

llvm-svn: 280438

7 years ago[SE] Make Kernel movable
Jason Henline [Fri, 2 Sep 2016 00:22:05 +0000 (00:22 +0000)]
[SE] Make Kernel movable

Summary:
Kernel is basically just a smart pointer to the underlying
implementation, so making it movable prevents having to store a
std::unique_ptr to it.

Reviewers: jlebar

Subscribers: jprice, parallel_libs-commits

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

llvm-svn: 280437

7 years agoClean up handling of reading module files from stdin. Don't bother trying to
Richard Smith [Fri, 2 Sep 2016 00:18:05 +0000 (00:18 +0000)]
Clean up handling of reading module files from stdin. Don't bother trying to
look for a corresponding file, since we're not going to read it anyway.

No observable behavior change (though we now avoid pointlessly trying to stat
or open a file named "-").

llvm-svn: 280436

7 years agoRefactor to avoid holding a reference to a container element that could go away
Richard Smith [Fri, 2 Sep 2016 00:10:28 +0000 (00:10 +0000)]
Refactor to avoid holding a reference to a container element that could go away
during this function, and to avoid rolling back changes to the module manager's
data structures. Instead, we defer registering the module file until after we
have successfully finished loading it.

llvm-svn: 280434

7 years agoExplicitly require DominatorTreeAnalysis pass for instsimplify pass.
Dehao Chen [Thu, 1 Sep 2016 23:51:37 +0000 (23:51 +0000)]
Explicitly require DominatorTreeAnalysis pass for instsimplify pass.

Summary: DominatorTreeAnalysis is always required by instsimplify.

Reviewers: davidxl, danielcdh

Subscribers: llvm-commits

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

llvm-svn: 280432

7 years agoAdd clang-reorder-fields to clang-tools-extra
Alexander Shaposhnikov [Thu, 1 Sep 2016 23:49:48 +0000 (23:49 +0000)]
Add clang-reorder-fields to clang-tools-extra

This diff adds v0 of clang-reorder-fields tool to clang/tools/extra.
The main idea behind this tool is to simplify and make less error-prone refactoring of large codebases when
someone needs to change the order fields of a struct/class (for example to remove excess padding).

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

llvm-svn: 280431

7 years ago[SelectionDAGBuilder] Add const to relevant places
Aditya Kumar [Thu, 1 Sep 2016 23:35:26 +0000 (23:35 +0000)]
[SelectionDAGBuilder] Add const to relevant places

Reviewers: hans, evandro, sebpop

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

llvm-svn: 280430

7 years agoRefactor LICM to expose canSinkOrHoistInst to LoopSink pass.
Dehao Chen [Thu, 1 Sep 2016 23:31:25 +0000 (23:31 +0000)]
Refactor LICM to expose canSinkOrHoistInst to LoopSink pass.

Summary: LoopSink pass shares the same canSinkOrHoistInst functionality with LICM pass. This patch exposes this function in preparation of https://reviews.llvm.org/D22778

Reviewers: chandlerc, davidxl, danielcdh

Subscribers: llvm-commits

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

llvm-svn: 280429

7 years ago[StreamExecutor] Read dev array directly in test
Jason Henline [Thu, 1 Sep 2016 23:27:39 +0000 (23:27 +0000)]
[StreamExecutor] Read dev array directly in test

Summary:
Step 2 of getting GlobalDeviceMemory to own its handle.

Use the SimpleHostPlatformDevice allocate methods to create device
arrays for tests, and check for successful copies by dereferncing the
device array handle directly because we know it is really a host
pointer.

Reviewers: jlebar

Subscribers: jprice, parallel_libs-commits

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

llvm-svn: 280428

7 years agoRefactor replaceDominatedUsesWith to have a flag to control whether to replace uses...
Dehao Chen [Thu, 1 Sep 2016 23:26:48 +0000 (23:26 +0000)]
Refactor replaceDominatedUsesWith to have a flag to control whether to replace uses in BB itself.

Summary: This is in preparation for LoopSink pass which calls replaceDominatedUsesWith to update after sinking.

Reviewers: chandlerc, davidxl, danielcdh

Subscribers: llvm-commits

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

llvm-svn: 280427

7 years agoRemove excessive padding from MismatchingNewDeleteDetector
Alexander Shaposhnikov [Thu, 1 Sep 2016 23:18:00 +0000 (23:18 +0000)]
Remove excessive padding from MismatchingNewDeleteDetector

The class MismatchingNewDeleteDetector is in
lib/Sema/SemaExprCXX.cpp inside the anonymous namespace.
This diff reorders the fields and removes the excessive padding.
Test plan: make -j8 check-clang

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

llvm-svn: 280426

7 years agoRefactor LICM pass in preparation for LoopSink pass.
Dehao Chen [Thu, 1 Sep 2016 23:15:50 +0000 (23:15 +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: chandlerc, davidxl, danielcdh

Subscribers: llvm-commits

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

llvm-svn: 280425

7 years ago[Legalizer] Don't throw away false low half when expanding GT/LT SETCC
Michael Kuperstein [Thu, 1 Sep 2016 23:02:32 +0000 (23:02 +0000)]
[Legalizer] Don't throw away false low half when expanding GT/LT SETCC

When expanding a SETCC for which the low half is known to evaluate to false,
we can only throw it away for LT/GT comparisons, not LE/GE.

This fixes PR29170.

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

llvm-svn: 280424

7 years agoAdd comments.
Rui Ueyama [Thu, 1 Sep 2016 22:48:05 +0000 (22:48 +0000)]
Add comments.

llvm-svn: 280423

7 years agoUn-XFAIL cfi/stats.cpp, it passes since fixing llvm-symbolizer to look for dwarf...
Reid Kleckner [Thu, 1 Sep 2016 22:46:26 +0000 (22:46 +0000)]
Un-XFAIL cfi/stats.cpp, it passes since fixing llvm-symbolizer to look for dwarf again

llvm-svn: 280422

7 years ago[ELF] Do not omit debug sections when computing build-id
Petr Hosek [Thu, 1 Sep 2016 22:43:03 +0000 (22:43 +0000)]
[ELF] Do not omit debug sections when computing build-id

The primary use of build-id is in debugging, hence omitting debug
sections when computing it significantly reduces its usability as
changes in debug section content wouldn't alter the build-id.

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

llvm-svn: 280421

7 years ago[WebAssembly] Change wasm SizeType to match asmjs
Derek Schuff [Thu, 1 Sep 2016 22:38:37 +0000 (22:38 +0000)]
[WebAssembly] Change wasm SizeType to match asmjs

Summary:
We want wasm and asmjs to have matching ABIs, and right now asmjs uses
unsigned int for its size_t. This causes exported symbols in libcxx to
not match and can cause weird breakage where libcxx doesn't get linked
as a result.  Long-term we probably want wasm32, wasm64, and asmjs to
all use unsigned long, but that would cause unnecessary ABI churn for
asmjs so defer that until we can make all the ABI changes at once.

Patch by Jacob Gravelle

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

llvm-svn: 280420

7 years agoMake the coding standards a bit more clear that we prefer the fancy new
Chandler Carruth [Thu, 1 Sep 2016 22:18:25 +0000 (22:18 +0000)]
Make the coding standards a bit more clear that we prefer the fancy new
auto-brief format for doxygen comments. Most notable is switching to
that in the example doxygen comment. I've also tweaked the wording but
am happy to tweak it further if others have suggestions here.

Mostly doing this to capture something I and others have been writing
consistently and repeatedly in code reviews.

llvm-svn: 280419

7 years ago[SelectionDAG] Generate vector_shuffle nodes for undersized result vector sizes
Michael Kuperstein [Thu, 1 Sep 2016 21:32:09 +0000 (21:32 +0000)]
[SelectionDAG] Generate vector_shuffle nodes for undersized result vector sizes

Prior to this, we could generate a vector_shuffle from an IR shuffle when the
size of the result was exactly the sum of the sizes of the input vectors.
If the output vector was narrower - e.g. a <12 x i8> being formed by a shuffle
with two <8 x i8> inputs - we would lower the shuffle to a sequence of extracts
and inserts.

Instead, we can form a larger vector_shuffle, and then extract a subvector
of the right size - e.g. shuffle the two <8 x i8> inputs into a <16 x i8>
and then extract a <12 x i8>.

This also includes a target-specific X86 combine that in the presence of
AVX2 combines:
(vector_shuffle <mask> (concat_vectors t1, undef)
                       (concat_vectors t2, undef))
into:
(vector_shuffle <mask> (concat_vectors t1, t2), undef)
in cases where this allows us to form VPERMD/VPERMQ.

(This is not a separate commit, as that pattern does not appear without
the DAGBuilder change.)

llvm-svn: 280418

7 years agocstdio: limit gets to CRT versions below 14
Saleem Abdulrasool [Thu, 1 Sep 2016 21:09:19 +0000 (21:09 +0000)]
cstdio: limit gets to CRT versions below 14

Microsoft removed gets from the CRT in Visual Studio 2015 onwards [1].
Attempting to reference it when targeting CRT versions 14 and above will cause
compile errors.

[1] https://msdn.microsoft.com/en-us/library/2029ea5f.aspx

Patch by Shoaib Meenai!

llvm-svn: 280417

7 years ago[CMake] Add option (defaulted off) to exclude atomic.c
Chris Bieneman [Thu, 1 Sep 2016 21:05:49 +0000 (21:05 +0000)]
[CMake] Add option (defaulted off) to exclude atomic.c

The atomic builtin source is problematic when cross-compiling builtins because it requires a variable and sometimes large set of system headers. This option allows users to optionally prevent it from being built.

llvm-svn: 280416

7 years ago[WebAssembly] Add asm.js-style setjmp/longjmp handling for wasm (reland r280302)
Heejin Ahn [Thu, 1 Sep 2016 21:05:15 +0000 (21:05 +0000)]
[WebAssembly] Add asm.js-style setjmp/longjmp handling for wasm (reland r280302)

Summary: This patch adds asm.js-style setjmp/longjmp handling support for WebAssembly. It also uses JavaScript's try and catch mechanism.

Reviewers: jpp, dschuff

Subscribers: jfb, dschuff

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

llvm-svn: 280415

7 years agobugpoint: clang-format and modernize comments in ListReducer. NFC
Justin Bogner [Thu, 1 Sep 2016 21:04:36 +0000 (21:04 +0000)]
bugpoint: clang-format and modernize comments in ListReducer. NFC

llvm-svn: 280414

7 years agobuild: don't add -fPIC on Windows
Saleem Abdulrasool [Thu, 1 Sep 2016 20:49:54 +0000 (20:49 +0000)]
build: don't add -fPIC on Windows

`-fPIC` doesn't make much sense for Windows, since Windows DLLs aren't compiled
position independent and are instead relocated at runtime.

Patch by Shoaib Meenai!

llvm-svn: 280413

7 years agoGlobalISel: add a G_PHI instruction to give phis a type.
Tim Northover [Thu, 1 Sep 2016 20:45:41 +0000 (20:45 +0000)]
GlobalISel: add a G_PHI instruction to give phis a type.

They're another source of generic vregs, which are going to need a type on the
definition when we remove the register width from MachineRegisterInfo.

llvm-svn: 280412

7 years ago[tsan] Bump stack frame size limit.
Evgeniy Stepanov [Thu, 1 Sep 2016 20:43:59 +0000 (20:43 +0000)]
[tsan] Bump stack frame size limit.

llvm-svn: 280411

7 years agoFix the ASan fuse-lld.cc test after LLD r280012
Reid Kleckner [Thu, 1 Sep 2016 20:28:59 +0000 (20:28 +0000)]
Fix the ASan fuse-lld.cc test after LLD r280012

With that change, images built with 'lld-link /debug' always have a
debug directory. If no PDB filename was passed on the command line, then
the filename in the executable is empty.

PDB information would never work anyway if the PDB file name is empty,
so go ahead and try DWARF in that case.

llvm-svn: 280410

7 years agoWhen we reach the end of a #include of a header of a local submodule that we
Richard Smith [Thu, 1 Sep 2016 20:15:25 +0000 (20:15 +0000)]
When we reach the end of a #include of a header of a local submodule that we
textually included, create an ImportDecl just as we would if we reached a
#include of any other modular header. This is necessary in order to correctly
determine the set of variables to initialize for an imported module.

This should hopefully make the modules selfhost buildbot green again.

llvm-svn: 280409

7 years agoAllow mapping scalar MemoryAccesses to array elements.
Michael Kruse [Thu, 1 Sep 2016 19:53:31 +0000 (19:53 +0000)]
Allow mapping scalar MemoryAccesses to array elements.

Change the code around setNewAccessRelation to allow to use a an existing array
element for memory instead of an ad-hoc alloca. This facility will be used for
DeLICM/DeGVN to convert scalar dependencies into regular ones.

The changes necessary include:
- Make the code generator use the implicit locations instead of the alloca ones.
- A test case
- Make the JScop importer accept changes of scalar accesses for that test case.
- Adapt the MemoryAccess interface to the fact that the MemoryKind can change.
  They are named (get|is)OriginalXXX() to get the status of the memory access
  before any change by setNewAccessRelation() (some properties such as
  getIncoming() do not change even if the kind is changed and are still
  required). To get the modified properties, there is (get|is)LatestXXX(). The
  old accessors without Original|Latest become synonyms of the
  (get|is)OriginalXXX() to not make functional changes in unrelated code.

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

llvm-svn: 280408

7 years ago[CMake] NFC. Missed the other uses in r280406
Chris Bieneman [Thu, 1 Sep 2016 19:47:39 +0000 (19:47 +0000)]
[CMake] NFC. Missed the other uses in r280406

Doh! Obviously need to slow down.

llvm-svn: 280407

7 years ago[CMake] NFC. Fixing spelling from r280400
Chris Bieneman [Thu, 1 Sep 2016 19:46:02 +0000 (19:46 +0000)]
[CMake] NFC. Fixing spelling from r280400

Doh!

llvm-svn: 280406

7 years ago[LV] Use ScalarParts for ad-hoc pointer IV scalarization (NFCI)
Matthew Simpson [Thu, 1 Sep 2016 19:40:19 +0000 (19:40 +0000)]
[LV] Use ScalarParts for ad-hoc pointer IV scalarization (NFCI)

We can now maintain scalar values in VectorLoopValueMap. Thus, we no longer
have to create temporary vectors with insertelement instructions when handling
pointer induction variables. This case was mistakenly missed from r279649 when
refactoring the other scalarization code.

llvm-svn: 280405

7 years agoCheck validity of new access relations. NFC.
Michael Kruse [Thu, 1 Sep 2016 19:16:58 +0000 (19:16 +0000)]
Check validity of new access relations. NFC.

There are some constraints on maps that can be access relations. In builds with assertions enabled, verify

  - The access domain is the same space as the statement's domain (modulo parameters).
  - Whether an access is defined for every instance of the statement. (codegen does not yet support partial access relations)
  - Whether the access range links to an array, represented by a ScopArrayInfo.
  - The number of access dimensions equals the dimensions of the array.
  - The array is not an indirect access. (also not supported by codegen)

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

llvm-svn: 280404

7 years ago[InstCombine] add tests to show potential shuffle+insert folds
Sanjay Patel [Thu, 1 Sep 2016 19:14:19 +0000 (19:14 +0000)]
[InstCombine] add tests to show potential shuffle+insert folds

llvm-svn: 280403

7 years ago[X86] Loosen memory folding requirements for cvtdq2pd and cvtps2pd instructions.
Andrey Turetskiy [Thu, 1 Sep 2016 18:50:02 +0000 (18:50 +0000)]
[X86] Loosen memory folding requirements for cvtdq2pd and cvtps2pd instructions.

According to spec cvtdq2pd and cvtps2pd instructions don't require memory operand to be aligned
to 16 bytes. This patch removes this requirement from the memory folding table.

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

llvm-svn: 280402

7 years ago[StreamExecutor] Dev handles in platform interface
Jason Henline [Thu, 1 Sep 2016 18:48:21 +0000 (18:48 +0000)]
[StreamExecutor] Dev handles in platform interface

Summary:
This is the first in a series of patches that will convert
GlobalDeviceMemory to own its device memory handle. The first step is to
remove GlobalDeviceMemoryBase from the PlatformInterface interfaces and
use raw handles there instead. This is useful because
GlobalDeviceMemoryBase is going to lose its importance in this process.

Reviewers: jlebar

Subscribers: jprice, parallel_libs-commits

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

llvm-svn: 280401

7 years ago[CMake] Don't copy headers on fully standalone
Chris Bieneman [Thu, 1 Sep 2016 18:46:53 +0000 (18:46 +0000)]
[CMake] Don't copy headers on fully standalone

In r280108 I tried to make the headers copy relative to LLVM_BINARY_DIR, and the intent was that it would only happen on in-tree builds or runtimes directory builds. It didn't actually work that way.

This patch adds a check for CMAKE_SOURCE_DIR being equal to CMAKE_CURRENT_SOURCE_DIR. In this case we set a variable LIBCXX_USING_INSTLLED_LLVM. This doesn't necessarily mean the LLVM is installed (it could be a build directory), but it means we need to treat the LLVM directory as read-only.

llvm-svn: 280400

7 years agoAMDGPU: Add runtime metadata for pointee alignment of argument.
Yaxun Liu [Thu, 1 Sep 2016 18:46:49 +0000 (18:46 +0000)]
AMDGPU: Add runtime metadata for pointee alignment of argument.

Add runtime metdata for pointee alignment of pointer type kernel argument. The key is KeyArgPointeeAlign and the value is a 32 bit unsigned integer.

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

llvm-svn: 280399

7 years agoRevert "Copy over most of the scariness_score test to the general tests"
Filipe Cabecinhas [Thu, 1 Sep 2016 18:40:12 +0000 (18:40 +0000)]
Revert "Copy over most of the scariness_score test to the general tests"

This reverts commit r280361 until we have the proper change in place.

llvm-svn: 280398

7 years ago[SE] Make Stream movable
Jason Henline [Thu, 1 Sep 2016 18:35:37 +0000 (18:35 +0000)]
[SE] Make Stream movable

Summary:
The example code makes it clear that this is a much better design
decision.

Reviewers: jlebar

Subscribers: jprice, parallel_libs-commits

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

llvm-svn: 280397

7 years ago[lib/LTO] Simplify a bit. NFCI.
Davide Italiano [Thu, 1 Sep 2016 18:34:47 +0000 (18:34 +0000)]
[lib/LTO] Simplify a bit. NFCI.

llvm-svn: 280396

7 years agoWhen updating a ValueObjectRegister, set the flag to remind yourself of whether it...
Enrico Granata [Thu, 1 Sep 2016 18:31:40 +0000 (18:31 +0000)]
When updating a ValueObjectRegister, set the flag to remind yourself of whether it changed

llvm-svn: 280395

7 years ago[CMake] Properly connecting Compiler-RT check and test-depends
Chris Bieneman [Thu, 1 Sep 2016 18:28:49 +0000 (18:28 +0000)]
[CMake] Properly connecting Compiler-RT check and test-depends

This correctly connects compiler-rt-test-depends to test-depends and
check-compiler-rt to check-all.

Based on LLVM r280392, and Compiler-RT r280393.

llvm-svn: 280394

7 years ago[CMake] Adding compiler-rt-test-depends target
Chris Bieneman [Thu, 1 Sep 2016 18:26:51 +0000 (18:26 +0000)]
[CMake] Adding compiler-rt-test-depends target

This exposes a target for building the compiler-rt test dependencies and matches llvm-test-depends.

llvm-svn: 280393

7 years ago[CMake] Connecting check-all and test-depends targets correctly
Chris Bieneman [Thu, 1 Sep 2016 18:26:01 +0000 (18:26 +0000)]
[CMake] Connecting check-all and test-depends targets correctly

My previous attempt at this connected the sub-project check targets to the test-depends target instead of to the check-all target. That resulted in the tests running multiple times on bots that built "test-depends" and "check-all" in separate build invocations.

llvm-svn: 280392

7 years agoRename some variables to have meaningful names. NFC.
Michael Kuperstein [Thu, 1 Sep 2016 18:24:42 +0000 (18:24 +0000)]
Rename some variables to have meaningful names. NFC.

llvm-svn: 280391

7 years ago[LV] Move VectorParts allocation and mapping into PHI widening (NFC)
Matthew Simpson [Thu, 1 Sep 2016 18:14:27 +0000 (18:14 +0000)]
[LV] Move VectorParts allocation and mapping into PHI widening (NFC)

This patch moves the allocation of VectorParts for PHI nodes into the actual
PHI widening code. Previously, we allocated these VectorParts in
vectorizeBlockInLoop, and passed them by reference to widenPHIInstruction. Upon
returning, we would then map the VectorParts in VectorLoopValueMap. This
behavior is problematic for the cases where we only want to generate a scalar
version of a PHI node. For example, if in the future we only generate a scalar
version of an induction variable, we would end up inserting an empty vector
entry into the map once we return to vectorizeBlockInLoop. We now no longer
need to pass VectorParts to the various PHI widening functions, and we can keep
VectorParts allocation as close as possible to the point at which they are
actually mapped in VectorLoopValueMap.

llvm-svn: 280390

7 years agoChange the formula for tagged NSIndexPath data formatting
Enrico Granata [Thu, 1 Sep 2016 18:09:01 +0000 (18:09 +0000)]
Change the formula for tagged NSIndexPath data formatting

Fixes rdar://25192935

llvm-svn: 280389

7 years ago[codeview] Properly propagate the TypeLeafKind through the pipeline.
Zachary Turner [Thu, 1 Sep 2016 18:08:19 +0000 (18:08 +0000)]
[codeview] Properly propagate the TypeLeafKind through the pipeline.

llvm-svn: 280388

7 years agoFix dll_host.cc test after adding div and gep trace coverage points
Reid Kleckner [Thu, 1 Sep 2016 18:08:05 +0000 (18:08 +0000)]
Fix dll_host.cc test after adding div and gep trace coverage points

llvm-svn: 280387

7 years ago[DAGCombine] Don't fold a trunc if it feeds an anyext
Michael Kuperstein [Thu, 1 Sep 2016 17:59:24 +0000 (17:59 +0000)]
[DAGCombine] Don't fold a trunc if it feeds an anyext

Legalization tends to create anyext(trunc) patterns. This should always be
combined - into either a single trunc, a single ext, or nothing if the
types match exactly. But if we happen to combine the trunc first, we may pull
the trunc away from the anyext or make it implicit (e.g. the truncate(extract)
-> extract(bitcast) fold).

To prevent this, we can avoid doing the fold, similarly to how we already handle
fpround(fpextend).

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

llvm-svn: 280386

7 years agoAMDGPU/SI: MIMG TD Refactoring.
Changpeng Fang [Thu, 1 Sep 2016 17:54:54 +0000 (17:54 +0000)]
AMDGPU/SI: MIMG TD Refactoring.

Summary:
 Created a new td file MIMGInstructions.td which contains all definitions
of MIMG related instructions.

Reviewed by:
  kzhuravl, vpykhtin

Differential Revision:
  http://reviews.llvm.org/D24106

llvm-svn: 280385

7 years ago[SE] Docs use JAVADOC_AUTOBRIEF
Jason Henline [Thu, 1 Sep 2016 17:47:17 +0000 (17:47 +0000)]
[SE] Docs use JAVADOC_AUTOBRIEF

That way we don't have to explicitly annotate each brief description as
\brief.

llvm-svn: 280384

7 years ago[lit] Use multiprocessing by default on Windows
Reid Kleckner [Thu, 1 Sep 2016 17:19:44 +0000 (17:19 +0000)]
[lit] Use multiprocessing by default on Windows

Apparently nobody evaluated multiprocessing on Windows since Daniel
enabled multiprocessing on Unix in r193279. It works so far as I can
tell.

Today this is worth about an 8x speedup (631.29s to 73.25s) on my 24
core Windows machine. Hopefully this will improve Windows buildbot cycle
time, where currently it takes more time to run check-all than it does
to self-host with assertions enabled:
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/20
  build stage 2 ninja all ( 28 mins, 22 secs )
  ninja check 2 stage 2   ( 37 mins, 38 secs )

llvm-svn: 280382

7 years ago[CMake] Revive LLVM_*_DIRS variables
Chris Bieneman [Thu, 1 Sep 2016 16:43:39 +0000 (16:43 +0000)]
[CMake] Revive LLVM_*_DIRS variables

This is a partial revert of r280013. Brad King pointed out these variable names are matching CMake conventions, so we should preserve them.

I've also added a direct mapping of the LLVM_*_DIR variables which we need to make projects support building in and out of tree.

llvm-svn: 280380

7 years ago[EarlyCSE] Change C API pass interface for EarlyCSE w/ MemorySSA
Geoff Berry [Thu, 1 Sep 2016 15:07:46 +0000 (15:07 +0000)]
[EarlyCSE] Change C API pass interface for EarlyCSE w/ MemorySSA

Previous change broke the C API for creating an EarlyCSE pass w/
MemorySSA by adding a bool parameter to control whether MemorySSA was
used or not.  This broke the OCaml bindings.  Instead, change the old C
API entry point back and add a new one to request an EarlyCSE pass with
MemorySSA.

llvm-svn: 280379

7 years agobuild: profile is not a sanitizer
Saleem Abdulrasool [Thu, 1 Sep 2016 15:05:36 +0000 (15:05 +0000)]
build: profile is not a sanitizer

There was an invalid entry in the sanitizer list, remove it.  This has no effect
on the building, just removes the definition of a cached variable.

llvm-svn: 280378