platform/upstream/llvm.git
7 years ago[X86] Dropped XOP ctbits checks - they match the AVX checks
Simon Pilgrim [Thu, 4 Aug 2016 11:04:13 +0000 (11:04 +0000)]
[X86] Dropped XOP ctbits checks - they match the AVX checks

llvm-svn: 277718

7 years agokmp_taskdeps.cpp: Fix debugging output
Jonas Hahnfeld [Thu, 4 Aug 2016 11:03:47 +0000 (11:03 +0000)]
kmp_taskdeps.cpp: Fix debugging output

node->dn.task is only filled after the dependencies are already processed.
This currently leads to unhelpful output from KA_TRACE or even a crash
if one enables KMP_SUPPORT_GRAPH_OUTPUT.

llvm-svn: 277717

7 years ago[X86][SSE] Add initial costs for vector CTTZ/CTLZ
Simon Pilgrim [Thu, 4 Aug 2016 10:51:41 +0000 (10:51 +0000)]
[X86][SSE] Add initial costs for vector CTTZ/CTLZ

llvm-svn: 277716

7 years ago[LLVM-COV]Replace tabs to the space indentations in the HTML coverage report.
Ying Yi [Thu, 4 Aug 2016 10:39:43 +0000 (10:39 +0000)]
[LLVM-COV]Replace tabs to the space indentations in the HTML coverage report.

When using orbis-llvm-cov.exe to generate the HTML report, the HTML report
can look quite different to the source file if it includes tabs.The default
tab size is 2 spaces instead of 8 spaces. A command line switch is
be added to set the tab size.

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

llvm-svn: 277715

7 years agoRemove LLVM_ENABLE_LIBCXXABI
Jonas Hahnfeld [Thu, 4 Aug 2016 10:24:48 +0000 (10:24 +0000)]
Remove LLVM_ENABLE_LIBCXXABI

libc++.so is now a linker script that includes -lc++abi if necessary.

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

llvm-svn: 277714

7 years ago[X86][SSE] Don't decide when to scalarize CTTZ/CTLZ for performance at lowering ...
Simon Pilgrim [Thu, 4 Aug 2016 10:14:39 +0000 (10:14 +0000)]
[X86][SSE] Don't decide when to scalarize CTTZ/CTLZ for performance at lowering - this is what cost models are for

Improved CTTZ/CTLZ costings will be added shortly

llvm-svn: 277713

7 years agoMake isExternC work on VarDecls too.
Benjamin Kramer [Thu, 4 Aug 2016 10:02:03 +0000 (10:02 +0000)]
Make isExternC work on VarDecls too.

llvm-svn: 277712

7 years ago[ELF] - Attemp to fix buildbot.
George Rimar [Thu, 4 Aug 2016 09:49:26 +0000 (09:49 +0000)]
[ELF] - Attemp to fix buildbot.

http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/25733/steps/test_lld/logs/stdio

Fix: removed excessive whitespace.
llvm-svn: 277711

7 years ago[ELF] - Linkerscript: implemented ASSERT() keyword.
George Rimar [Thu, 4 Aug 2016 09:29:31 +0000 (09:29 +0000)]
[ELF] - Linkerscript: implemented ASSERT() keyword.

ASSERT(exp, message)
Ensure that exp is non-zero. If it is zero, then exit the linker with an error
code, and print message.

ASSERT is useful and was seen in few projects in the wild.

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

llvm-svn: 277710

7 years ago[clang-rename] add missing clang-format improvements
Kirill Bobyrev [Thu, 4 Aug 2016 09:23:30 +0000 (09:23 +0000)]
[clang-rename] add missing clang-format improvements

r277702 introduced clang-format changes so that later commits wouldn't introduce
non-functional changes while running clang-format before commiting. Though,
few changes by clang-format weren't in the patch.

llvm-svn: 277709

7 years ago[mips] Enable tail calls by default
Simon Dardis [Thu, 4 Aug 2016 09:17:07 +0000 (09:17 +0000)]
[mips] Enable tail calls by default

Enable tail calls by default for (micro)MIPS(64).

microMIPS is slightly more tricky than doing it for MIPS(R6) or microMIPSR6.
microMIPS has two instruction encodings: 16bit and 32bit along with some
restrictions on the size of the instruction that can fill the delay slot.
For safe tail calls for microMIPS, the delay slot filler attempts to find
a correct size instruction for the delay slot of TAILCALL pseudos.

Reviewers: dsanders, vkalintris

Subscribers: jfb, dsanders, sdardis, llvm-commits

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

llvm-svn: 277708

7 years agoGPGPU: Cache PTX kernels
Tobias Grosser [Thu, 4 Aug 2016 09:15:58 +0000 (09:15 +0000)]
GPGPU: Cache PTX kernels

We always keep a number of already compiled kernels available to ensure to avoid
costly recompilation.

llvm-svn: 277707

7 years ago[ELF] - Linkerscript: Fixed SORT_BY_ALIGNMENT sorting order.
George Rimar [Thu, 4 Aug 2016 08:56:17 +0000 (08:56 +0000)]
[ELF] - Linkerscript: Fixed SORT_BY_ALIGNMENT sorting order.

According to spec:
"SORT_BY_ALIGNMENT will sort sections into descending order by
alignment before placing them in the output file"

Previously they were sorted into ascending order.

llvm-svn: 277706

7 years ago[ELF] - Remove trailing whitespaces. NFC.
George Rimar [Thu, 4 Aug 2016 08:26:02 +0000 (08:26 +0000)]
[ELF] - Remove trailing whitespaces. NFC.

llvm-svn: 277705

7 years agoTypo fix in comment. NFC
Diana Picus [Thu, 4 Aug 2016 08:25:08 +0000 (08:25 +0000)]
Typo fix in comment. NFC

llvm-svn: 277704

7 years ago[ELF] Linkerscript: remove repeated sections in filter()
Eugene Leviant [Thu, 4 Aug 2016 08:20:23 +0000 (08:20 +0000)]
[ELF] Linkerscript: remove repeated sections in filter()

llvm-svn: 277703

7 years agoRun clang-format on clang-rename code
Miklos Vajna [Thu, 4 Aug 2016 07:43:29 +0000 (07:43 +0000)]
Run clang-format on clang-rename code

So that later commits don't introduce non-functional changes when
running clang-format before committing.

Reviewers: klimek

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

llvm-svn: 277702

7 years ago[XRay] Align entry and return sleds to 2 byte boundaries
Dean Michael Berris [Thu, 4 Aug 2016 07:37:28 +0000 (07:37 +0000)]
[XRay] Align entry and return sleds to 2 byte boundaries

This should ensure that we can atomically write two bytes (on top of the
retq and the one past it) and have those two bytes not straddle cache
lines.

We also move the label past the alignment instruction so that we can refer
to the actual first instruction, as opposed to potential padding before the
aligned instruction.

Update the tests to allow us to reflect the new order of assembly.

Reviewers: rSerge, echristo, majnemer

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 277701

7 years agoAMDGPU: Fix a slow test by using basic regalloc
Matt Arsenault [Thu, 4 Aug 2016 07:04:54 +0000 (07:04 +0000)]
AMDGPU: Fix a slow test by using basic regalloc

This just tests that the register limit isn't exceeded,
so the regisetr allocation doesn't need to be great.'

The critically slow part is all in greedy RA, so
switch to basic.

llvm-svn: 277700

7 years agoGPGPU: Handle scalar array references
Tobias Grosser [Thu, 4 Aug 2016 06:55:59 +0000 (06:55 +0000)]
GPGPU: Handle scalar array references

Pass the content of scalar array references to the alloca on the kernel side
and do not pass them additional as normal LLVM scalar value.

llvm-svn: 277699

7 years agoBlockGenerator: Assert that we do not get alloca of array access
Tobias Grosser [Thu, 4 Aug 2016 06:55:53 +0000 (06:55 +0000)]
BlockGenerator: Assert that we do not get alloca of array access

llvm-svn: 277698

7 years agoGPGPU: Pass subtree values correctly to the kernel
Tobias Grosser [Thu, 4 Aug 2016 06:55:49 +0000 (06:55 +0000)]
GPGPU: Pass subtree values correctly to the kernel

llvm-svn: 277697

7 years agoAfter PR28761 use -Wall with -Werror in builtins tests to identify
Eric Christopher [Thu, 4 Aug 2016 06:02:50 +0000 (06:02 +0000)]
After PR28761 use -Wall with -Werror in builtins tests to identify
possible problems in headers.

llvm-svn: 277696

7 years agoFix intrinsics.ll test
Amaury Sechet [Thu, 4 Aug 2016 05:35:25 +0000 (05:35 +0000)]
Fix intrinsics.ll test

llvm-svn: 277695

7 years agoAdd popcount(n) == bitsize(n) -> n == -1 transformation.
Amaury Sechet [Thu, 4 Aug 2016 05:27:20 +0000 (05:27 +0000)]
Add popcount(n) == bitsize(n)  -> n == -1 transformation.

Summary: As per title.

Reviewers: majnemer, spatel

Subscribers: llvm-commits

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

llvm-svn: 277694

7 years agoForgot the dyn_cast_or_null intended for r277691.
David Majnemer [Thu, 4 Aug 2016 04:47:18 +0000 (04:47 +0000)]
Forgot the dyn_cast_or_null intended for r277691.

llvm-svn: 277693

7 years ago[Darwin] Exclude interception union tests on Darwin and Android
Bruno Cardoso Lopes [Thu, 4 Aug 2016 04:46:39 +0000 (04:46 +0000)]
[Darwin] Exclude interception union tests on Darwin and Android

Since the directory is empty on Darwin, disable the inclusion and avoid
the warning below. Exclude on Android as well to match the behavior from
lib/interception/tests/CMakeLists.txt

lit.py:
/Users/buildslave/jenkins/sharedspace/clang-R_master@2/llvm/utils/lit/lit/discovery.py:224:
warning: input
'/Users/buildslave/jenkins/sharedspace/clang-R_master@2/clang-build/Build/tools/clang/runtime/compiler-rt-bins/test/interception/Unit'
contained no tests

This fixes the above warning in some of public bots, like
http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_check/8686

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

rdar://problem/27581108

llvm-svn: 277692

7 years agoReinstate "[CloneFunction] Don't remove side effecting calls"
David Majnemer [Thu, 4 Aug 2016 04:24:02 +0000 (04:24 +0000)]
Reinstate "[CloneFunction] Don't remove side effecting calls"

This reinstates r277611 + r277614 and reverts r277642.  A cast_or_null
should have been a dyn_cast_or_null.

llvm-svn: 277691

7 years agoRevert "GVN-hoist: enable by default" & "Make GVN Hoisting obey optnone/bisect."
Bruno Cardoso Lopes [Thu, 4 Aug 2016 04:16:24 +0000 (04:16 +0000)]
Revert "GVN-hoist: enable by default" & "Make GVN Hoisting obey optnone/bisect."

This reverts commits r277685 & r277688. r277685 broke compiler-rt
compilation http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/23335
and r277685 is a followup from it.

llvm-svn: 277690

7 years ago[PM] Change the name of the repeating utility to something less
Chandler Carruth [Thu, 4 Aug 2016 03:52:53 +0000 (03:52 +0000)]
[PM] Change the name of the repeating utility to something less
overloaded (and simpler).

Sean rightly pointed out in code review that we've started using
"wrapper pass" as a specific part of the old pass manager, and in fact
it is more applicable there. Here, we really have a pass *template* to
build a repeated pass, so call it that.

llvm-svn: 277689

7 years agoMake GVN Hoisting obey optnone/bisect.
Sebastian Pop [Thu, 4 Aug 2016 02:05:08 +0000 (02:05 +0000)]
Make GVN Hoisting obey optnone/bisect.

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

llvm-svn: 277688

7 years agoRemove buggy PROVIDE-in-output-description command.
Rui Ueyama [Thu, 4 Aug 2016 02:03:29 +0000 (02:03 +0000)]
Remove buggy PROVIDE-in-output-description command.

With the previous change, it is now obvious that readProvide in
this context appended new commands to a wrong command list.
It was mistakenly adding new commands to the top level.
Thus, all commands inside output section descriptions were
interpreted as they were written on top level.

PROVIDE command naturally requires symbol assignment support
in the output section description. We don't have that one yet.
I removed the implementation because there's no way to fix it now.
We can resurrect the test once we support the symbol assignment
(with a modification to detect errors that we failed to find as
described.)

llvm-svn: 277687

7 years agoMake ScriptParser::read* functions more functional style.
Rui Ueyama [Thu, 4 Aug 2016 02:03:27 +0000 (02:03 +0000)]
Make ScriptParser::read* functions more functional style.

Previously, many read* functions created new command objects and
add them directly to the top-level data structure. This is not
work for some commands because some commands, such as the assignment,
can appear inside and outside of the output section description.

This patch is to not append objects to the top-level data structure.
Callers are now responsible to do that.

llvm-svn: 277686

7 years agoGVN-hoist: enable by default
Sebastian Pop [Thu, 4 Aug 2016 01:59:42 +0000 (01:59 +0000)]
GVN-hoist: enable by default

As we addressed all compilation time problems with GVN-hoist
https://llvm.org/bugs/show_bug.cgi?id=28670
this patch turns GVN-hoist back by default.

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

llvm-svn: 277685

7 years ago[compiler-rt][XRay] Stash xmm registers in the trampolines
Dean Michael Berris [Thu, 4 Aug 2016 00:09:35 +0000 (00:09 +0000)]
[compiler-rt][XRay] Stash xmm registers in the trampolines

We now stash and restore the xmm registers in the trampolines so that
log handlers don't need to worry about clobbering these registers.

In response to comments in D21612.

Reviewers: rSerge, eugenis, echristo, rnk

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 277683

7 years agopdbdump: Add a test to verify the result of PDB -> YAML -> PDB conversions.
Rui Ueyama [Wed, 3 Aug 2016 23:54:39 +0000 (23:54 +0000)]
pdbdump: Add a test to verify the result of PDB -> YAML -> PDB conversions.

Currently not all information can be restored from YAML.
This test verifies only the PDB header.

llvm-svn: 277682

7 years agopdbdump: Fix crash bug.
Rui Ueyama [Wed, 3 Aug 2016 23:43:23 +0000 (23:43 +0000)]
pdbdump: Fix crash bug.

pdbdump calls DbiStreamBuilder::commit through PDBFileBuilder::commit
without calling DbiStreamBuilder::finalize. Because `finalize` initializes
`Header` member, `Header` remained nullptr which caused a crash bug.

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

llvm-svn: 277681

7 years agoMake filler expression compatible with gold.
Rui Ueyama [Wed, 3 Aug 2016 23:25:15 +0000 (23:25 +0000)]
Make filler expression compatible with gold.

Previously, a decimal filler expression is interpreted as a byte value.
Gold on the other hand use it as a 32-bit big-endian value.
This patch fixes the compatibility issue.

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

llvm-svn: 277680

7 years agoOnly run ill.cc test on x86, 32 or 64 bit
Reid Kleckner [Wed, 3 Aug 2016 23:24:06 +0000 (23:24 +0000)]
Only run ill.cc test on x86, 32 or 64 bit

llvm-svn: 277679

7 years agollvm-profdata: Clarify the top level help
Justin Bogner [Wed, 3 Aug 2016 23:10:51 +0000 (23:10 +0000)]
llvm-profdata: Clarify the top level help

It wasn't very obvious that you're supposed to call help on the
subcommands. This should help.

llvm-svn: 277678

7 years ago[clang-tidy] Inefficient string operation
Alexander Kornienko [Wed, 3 Aug 2016 23:06:03 +0000 (23:06 +0000)]
[clang-tidy] Inefficient string operation

Patch by Bittner Barni!

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

llvm-svn: 277677

7 years ago[clang-rename] improve USRFindingAction
Kirill Bobyrev [Wed, 3 Aug 2016 23:00:32 +0000 (23:00 +0000)]
[clang-rename] improve USRFindingAction

1. Improve templated class renaming, namely add capabilities of finding partial
and full specializations. Every class partial specialization has reference to
the specialized class. Thus, storing all partial specializations and
comparing specialized class decls to the FoundDecl solves this. All full class
specializations can be found by calling ClassTemplateDecl::specializations().

2. Fix virtual function and its overriding functions renaming. Renaming a
virtual function requires renaming every other function in its "overriding
graph".

3. Merge TemplateClassInstantiationFindBy{Declaration|TypeUse}.cpp tests into
one test by adding multiple invocations of clang-rename to one test, because
the only different thing across these tests is -offset passed to clang-rename.

Reviewers: alexfh

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

llvm-svn: 277663

7 years agoErrors compiling breakpoint conditions will cause the breakpoint not to be hit
Jim Ingham [Wed, 3 Aug 2016 22:46:11 +0000 (22:46 +0000)]
Errors compiling breakpoint conditions will cause the breakpoint not to be hit

This was a shadowed variable error from the big Expression Parser plugin-ification.  I also
added a test case for this.

<rdar://problem/27682376>

llvm-svn: 277662

7 years agoRenameIndependentSubregs: Fix liveness query in rewriteOperands()
Matthias Braun [Wed, 3 Aug 2016 22:37:47 +0000 (22:37 +0000)]
RenameIndependentSubregs: Fix liveness query in rewriteOperands()

rewriteOperands() always performed liveness queries at the base index
rather than the RegSlot/Base as apropriate for the machine operand. This
could lead to illegal rewriting in some cases.

llvm-svn: 277661

7 years agoAdd the new OCaml support files to the Xcode project file.
Jim Ingham [Wed, 3 Aug 2016 22:12:00 +0000 (22:12 +0000)]
Add the new OCaml support files to the Xcode project file.

llvm-svn: 277660

7 years ago[InstCombine] use m_APInt to allow icmp eq (add X, C1), C2 folds for splat constant...
Sanjay Patel [Wed, 3 Aug 2016 22:08:44 +0000 (22:08 +0000)]
[InstCombine] use m_APInt to allow icmp eq (add X, C1), C2 folds for splat constant vectors

llvm-svn: 277659

7 years ago[Concepts] remove default argument for RequiresClause; NFC
Hubert Tong [Wed, 3 Aug 2016 22:07:50 +0000 (22:07 +0000)]
[Concepts] remove default argument for RequiresClause; NFC

llvm-svn: 277658

7 years agoNeeded change to lld for the changes to libObject/Archive interfaces now returning...
Kevin Enderby [Wed, 3 Aug 2016 21:58:48 +0000 (21:58 +0000)]
Needed change to lld for the changes to libObject/Archive interfaces now returning Expected<>
for the llvm trunk change in r277656

llvm-svn: 277657

7 years agoClean up of libObject/Archive interfaces and change the last three uses of ErrorOr<>
Kevin Enderby [Wed, 3 Aug 2016 21:57:47 +0000 (21:57 +0000)]
Clean up of libObject/Archive interfaces and change the last three uses of ErrorOr<>
changing them to Expected<> to allow them to pass through llvm Errors.
No functional change.

This commit by itself will break the next lld builds. Â I’ll be committing the
matching change for lld immediately next.

llvm-svn: 277656

7 years ago[PPC] Handling CallInst in PPCBoolRetToInt
Guozhi Wei [Wed, 3 Aug 2016 21:43:51 +0000 (21:43 +0000)]
[PPC] Handling CallInst in PPCBoolRetToInt

This patch fixes pr25548.

Current implementation of PPCBoolRetToInt doesn't handle CallInst correctly, so it failed to do the intended optimization when there is a CallInst with parameters. This patch fixed that.

llvm-svn: 277655

7 years agoRevert "[ARM] Constant Materialize: imms with specific value can be encoded into...
Bruno Cardoso Lopes [Wed, 3 Aug 2016 21:26:21 +0000 (21:26 +0000)]
Revert "[ARM] Constant Materialize: imms with specific value can be encoded into mov.w"

This reverts commit r277610 / d619aa8878c3dafcc0d29a46517f63ff3209fdd4.

This make subtarget-no-movt.ll fail in
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/26892,

llvm-svn: 277654

7 years agoCreate only one vector instead of two.
Rui Ueyama [Wed, 3 Aug 2016 21:12:09 +0000 (21:12 +0000)]
Create only one vector instead of two.

In this for-loop, we append elements from one vector to another,
which is a bit inefficient.

llvm-svn: 277653

7 years ago[MSSA] Fix a bug in MemorySSA's move ctor.
George Burgess IV [Wed, 3 Aug 2016 21:07:52 +0000 (21:07 +0000)]
[MSSA] Fix a bug in MemorySSA's move ctor.

Not a correctness issue, but it would be nice if we didn't have to
recompute our block numbering (worst-case) every time we move MSSA.

llvm-svn: 277652

7 years agoGVN-hoist: limit the length of dependent instructions
Sebastian Pop [Wed, 3 Aug 2016 20:54:38 +0000 (20:54 +0000)]
GVN-hoist: limit the length of dependent instructions

Limit the number of times the while(1) loop is executed. With this restriction
the number of hoisted instructions does not change in a significant way on the
test-suite.

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

llvm-svn: 277651

7 years agoGVN-hoist: compute DFS numbers once
Sebastian Pop [Wed, 3 Aug 2016 20:54:36 +0000 (20:54 +0000)]
GVN-hoist: compute DFS numbers once

With this patch we compute the DFS numbers of instructions only once and update
them during the code generation when an instruction gets hoisted.

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

llvm-svn: 277650

7 years agoGVN-hoist: compute MSSA once per function (PR28670)
Sebastian Pop [Wed, 3 Aug 2016 20:54:33 +0000 (20:54 +0000)]
GVN-hoist: compute MSSA once per function (PR28670)

With this patch we compute the MemorySSA once and update it in the code generator.

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

llvm-svn: 277649

7 years ago[IndVars] Un-grepify test; NFC
Sanjoy Das [Wed, 3 Aug 2016 20:53:23 +0000 (20:53 +0000)]
[IndVars] Un-grepify test; NFC

Some of these tests need to be cleaned up further to make it obvious
what they're testing, but as a first step remove all instances of
"grep".

llvm-svn: 277648

7 years ago[OpenCL] Fix size of image type
Yaxun Liu [Wed, 3 Aug 2016 20:38:06 +0000 (20:38 +0000)]
[OpenCL] Fix size of image type

The size of image type is reported incorrectly as size of a pointer to address space 0, which causes error when casting image type to pointers by __builtin_astype.

The fix is to get image address space from TargetInfo then report the size accordingly.

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

llvm-svn: 277647

7 years agoRename functions that handle bitcode files.
Rui Ueyama [Wed, 3 Aug 2016 20:33:17 +0000 (20:33 +0000)]
Rename functions that handle bitcode files.

getELFKind was overloaded with bitcode files and regular object files,
and I found that is a bit confusing. This patch renames them.

llvm-svn: 277646

7 years agoopt-bisect-legacy-pass-manager.ll: Test only works with default triple configured
Matthias Braun [Wed, 3 Aug 2016 20:28:19 +0000 (20:28 +0000)]
opt-bisect-legacy-pass-manager.ll: Test only works with default triple configured

llvm-svn: 277645

7 years agoDo not instantiate Triple twice.
Rui Ueyama [Wed, 3 Aug 2016 20:25:29 +0000 (20:25 +0000)]
Do not instantiate Triple twice.

Also removes redundant variables. NFC.

llvm-svn: 277644

7 years agoAdd EM_IAMCU support.
Rui Ueyama [Wed, 3 Aug 2016 20:15:56 +0000 (20:15 +0000)]
Add EM_IAMCU support.

This patch adds "-m elf_iamcu" to ldd for IAMCU psABI:
https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI

Patch by H.J Lu.

llvm-svn: 277643

7 years agoRevert "[CloneFunction] Don't remove side effecting calls"
Reid Kleckner [Wed, 3 Aug 2016 20:01:01 +0000 (20:01 +0000)]
Revert "[CloneFunction] Don't remove side effecting calls"

This reverts commit r277611 and the followup r277614.

Bootstrap builds and chromium builds are crashing during inlining after
this change.

llvm-svn: 277642

7 years ago[MSSA] clang-format. NFC.
George Burgess IV [Wed, 3 Aug 2016 19:59:11 +0000 (19:59 +0000)]
[MSSA] clang-format. NFC.

Didn't want to fold this in with r277640, since it touches bits that
aren't entirely related to r277640.

llvm-svn: 277641

7 years ago[MSSA] Add special handling for invariant/constant loads.
George Burgess IV [Wed, 3 Aug 2016 19:57:02 +0000 (19:57 +0000)]
[MSSA] Add special handling for invariant/constant loads.

This is a follow-up to r277637. It teaches MemorySSA that invariant
loads (and loads of provably constant memory) are always liveOnEntry.

llvm-svn: 277640

7 years ago[InstCombine] use m_APInt to allow icmp eq (srem X, C1), C2 folds for splat constant...
Sanjay Patel [Wed, 3 Aug 2016 19:48:40 +0000 (19:48 +0000)]
[InstCombine] use m_APInt to allow icmp eq (srem X, C1), C2 folds for splat constant vectors

llvm-svn: 277638

7 years ago[MSSA] Add logic for special handling of atomics/volatiles.
George Burgess IV [Wed, 3 Aug 2016 19:39:54 +0000 (19:39 +0000)]
[MSSA] Add logic for special handling of atomics/volatiles.

This patch makes MemorySSA recognize atomic/volatile loads, and makes
MSSA treat said loads specially. This allows us to be a bit more
aggressive in some cases.

Administrative note: Revision was LGTM'ed by reames in person.
Additionally, this doesn't include the `invariant.load` recognition in
the differential revision, because I feel it's better to commit that
separately. Will commit soon.

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

llvm-svn: 277637

7 years agoI can't reproduce this buildbot failure locally, so temporarily remove this test...
Elliot Colp [Wed, 3 Aug 2016 19:39:20 +0000 (19:39 +0000)]
I can't reproduce this buildbot failure locally, so temporarily remove this test while I investigate.

http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/27427

llvm-svn: 277636

7 years ago[InstCombine] Refactor optimization of zext(or(icmp, icmp)) to enable more aggressive...
Tobias Grosser [Wed, 3 Aug 2016 19:30:35 +0000 (19:30 +0000)]
[InstCombine] Refactor optimization of zext(or(icmp, icmp)) to enable more aggressive cast-folding

Summary:
InstCombine unfolds expressions of the form `zext(or(icmp, icmp))` to `or(zext(icmp), zext(icmp))` such that in a later iteration of InstCombine the exposed `zext(icmp)` instructions can be optimized. We now combine this unfolding and the subsequent `zext(icmp)` optimization to be performed together. Since the unfolding doesn't happen separately anymore, we also again enable the folding of `logic(cast(icmp), cast(icmp))` expressions to `cast(logic(icmp, icmp))` which had been disabled due to its interference with the unfolding transformation.

Tested via `make check` and `lnt`.

Background
==========

For a better understanding on how it came to this change we subsequently summarize its history. In commit r275989 we've already tried to enable the folding of `logic(cast(icmp), cast(icmp))` to `cast(logic(icmp, icmp))` which had to be reverted in r276106 because it could lead to an endless loop in InstCombine (also see http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160718/374347.html). The root of this problem is that in `visitZExt()` in InstCombineCasts.cpp there also exists a reverse of the above folding transformation, that unfolds `zext(or(icmp, icmp))` to `or(zext(icmp), zext(icmp))` in order to expose `zext(icmp)` operations which would then possibly be eliminated by subsequent iterations of InstCombine. However, before these `zext(icmp)` would be eliminated the folding from r275989 could kick in and cause InstCombine to endlessly switch back and forth between the folding and the unfolding transformation. This is the reason why we now combine the `zext`-unfolding and the elimination of the exposed `zext(icmp)` to happen at one go because this enables us to still allow the cast-folding in `logic(cast(icmp), cast(icmp))` without entering an endless loop again.

Details on the submitted changes
================================

- In `visitZExt()` we combine the unfolding and optimization of `zext` instructions.
- In `transformZExtICmp()` we have to use `Builder->CreateIntCast()` instead of `CastInst::CreateIntegerCast()` to make sure that the new `CastInst` is inserted in a `BasicBlock`. The new calls to `transformZExtICmp()` that we introduce in `visitZExt()` would otherwise cause according assertions to be triggered (in our case this happend, for example, with lnt for the MultiSource/Applications/sqlite3 and SingleSource/Regression/C++/EH/recursive-throw tests). The subsequent usage of `replaceInstUsesWith()` is necessary to ensure that the new `CastInst` replaces the `ZExtInst` accordingly.
- In InstCombineAndOrXor.cpp we again allow the folding of casts on `icmp` instructions.
- The instruction order in the optimized IR for the zext-or-icmp.ll test case is different with the introduced changes.
- The test cases in zext.ll have been adopted from the reverted commits r275989 and r276105.

Reviewers: grosser, majnemer, spatel

Subscribers: eli.friedman, majnemer, llvm-commits

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

Contributed-by: Matthias Reisinger <d412vv1n@gmail.com>
llvm-svn: 277635

7 years agoPass EphValues by const-ref as it is not modified in the callee
Sebastian Pop [Wed, 3 Aug 2016 19:13:50 +0000 (19:13 +0000)]
Pass EphValues by const-ref as it is not modified in the callee

Patch by Aditya Kumar.

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

llvm-svn: 277634

7 years ago[InstCombine] Cleanup select-bitext.ll tests
Nicolai Haehnle [Wed, 3 Aug 2016 19:10:13 +0000 (19:10 +0000)]
[InstCombine] Cleanup select-bitext.ll tests

Follow-up to r277596.

llvm-svn: 277633

7 years agoAdd CFI tests for -lowertypetests-bitsets-level.
Ivan Krasin [Wed, 3 Aug 2016 19:08:55 +0000 (19:08 +0000)]
Add CFI tests for -lowertypetests-bitsets-level.

Summary:
-lowertypetests-bitsets-level controls which kinds of bitsets
are generated, as introduced in r277556. This change adds tests
to compiler-rt.

Reviewers: kcc

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

llvm-svn: 277632

7 years ago[X86][SSE] Enable target shuffle combining to combine multiple shuffle inputs.
Simon Pilgrim [Wed, 3 Aug 2016 19:08:24 +0000 (19:08 +0000)]
[X86][SSE] Enable target shuffle combining to combine multiple shuffle inputs.

We currently only support combining target shuffles that consist of a single source input (plus elements known to be undef/zero).

This patch generalizes the recursive combining of the target shuffle to collect all the inputs, merging any duplicates along the way, into a full set of src ops and its shuffle mask.

We uncover a number of cases where we have failed to combine a unary shuffle because the input has been duplicated and separated during lowering.

This will allow us to combine to 2-input shuffles in a future patch.

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

llvm-svn: 277631

7 years agoReapply "More fixes to get good error messages for bad archives."
Vedant Kumar [Wed, 3 Aug 2016 19:02:50 +0000 (19:02 +0000)]
Reapply "More fixes to get good error messages for bad archives."

This reverts commit the revert commit r277627. The build errors
mentioned in r277627 were likely caused by an unclean build directory.
Sorry for the noise.

llvm-svn: 277630

7 years ago[InstCombine] use m_APInt to allow icmp (binop X, Y), C folds with constant splat...
Sanjay Patel [Wed, 3 Aug 2016 18:59:03 +0000 (18:59 +0000)]
[InstCombine] use m_APInt to allow icmp (binop X, Y), C folds with constant splat vectors

This removes the restriction for the icmp constant, but as noted by the FIXME comments,
we still need to change individual checks for binop operand constants.

llvm-svn: 277629

7 years agoRevert "More fixes to get good error messages for bad archives."
Vedant Kumar [Wed, 3 Aug 2016 18:44:32 +0000 (18:44 +0000)]
Revert "More fixes to get good error messages for bad archives."

This reverts commit r277540. It breaks the build with:

../lib/Object/Archive.cpp:264:41: error: return type of out-of-line definition of 'llvm::object::ArchiveMemberHeader::getUID' differs from that in the declaration
Expected<unsigned> ArchiveMemberHeader::getUID() const {
~~~~~~~~~~~~~~~~~~                      ^
include/llvm/Object/Archive.h:53:12: note: previous declaration is here
  unsigned getUID() const;
  ~~~~~~~~ ^

llvm-svn: 277627

7 years ago[Hexagon] Generate COPY/REG_SEQUENCE more aggressively for vectors
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:35:48 +0000 (18:35 +0000)]
[Hexagon] Generate COPY/REG_SEQUENCE more aggressively for vectors

llvm-svn: 277626

7 years agoIR: Drop uniquing when an MDNode Value operand is deleted
Duncan P. N. Exon Smith [Wed, 3 Aug 2016 18:19:43 +0000 (18:19 +0000)]
IR: Drop uniquing when an MDNode Value operand is deleted

This is a fix for PR28697.

An MDNode can indirectly refer to a GlobalValue, through a
ConstantAsMetadata.  When the GlobalValue is deleted, the MDNode operand
is reset to `nullptr`.  If the node is uniqued, this can lead to a
hard-to-detect cache invalidation in a Metadata map that's shared across
an LLVMContext.

Consider:

 1. A map from Metadata* to `T` called RemappedMDs.
 2. A node that references a global variable, `!{i1* @GV}`.
 3. Insert `!{i1* @GV} -> SomeT` in the map.
 4. Delete `@GV`, leaving behind `!{null} -> SomeT`.

Looking up the generic and uninteresting `!{null}` gives you `SomeT`,
which is likely related to `@GV`.  Worse, `SomeT`'s lifetime may be tied
to the deleted `@GV`.

This occurs in practice in the shared ValueMap used since r266579 in the
IRMover.  Other code that handles more than one Module (with different
lifetimes) in the same LLVMContext could hit it too.

The fix here is a partial revert of r225223: in the rare case that an
MDNode operand is a ConstantAsMetadata (i.e., wrapping a node from the
Value hierarchy), drop uniquing if it gets replaced with `nullptr`.
This changes step #4 above to leave behind `distinct !{null} -> SomeT`,
which can't be confused with the generic `!{null}`.

In theory, this can cause some churn in the LLVMContext's MDNode
uniquing map when Values are being deleted.  However:

  - The number of GlobalValues referenced from uniqued MDNodes is
    expected to be quite small.  E.g., the debug info metadata schema
    only references GlobalValues from distinct nodes.

  - Other Constants have the lifetime of the LLVMContext, whose teardown
    is careful to drop references before deleting the constants.

As a result, I don't expect a compile time regression from this change.

llvm-svn: 277625

7 years agoAdding -verify-machineinstrs option to PowerPC tests
Ehsan Amiri [Wed, 3 Aug 2016 18:17:35 +0000 (18:17 +0000)]
Adding -verify-machineinstrs option to PowerPC tests

Currently we have a number of tests that fail with -verify-machineinstrs.
To detect this cases earlier we add the option to the testcases with the
exception of tests that will currently fail with this option. PR 27456 keeps
track of this failures.

No code review, as discussed with Hal Finkel.

llvm-svn: 277624

7 years ago[docs] fix typo in clang-rename docs
Kirill Bobyrev [Wed, 3 Aug 2016 18:15:07 +0000 (18:15 +0000)]
[docs] fix typo in clang-rename docs

clang-rename is a refactoring tool, not "linter" tool. Fix typo in docs.

llvm-svn: 277623

7 years ago[Hexagon-ish] Add function to print cell map contents in bit tracker
Krzysztof Parzyszek [Wed, 3 Aug 2016 18:13:32 +0000 (18:13 +0000)]
[Hexagon-ish] Add function to print cell map contents in bit tracker

llvm-svn: 277622

7 years ago[ASan] Report illegal instruction exceptions in ASan
Reid Kleckner [Wed, 3 Aug 2016 18:13:14 +0000 (18:13 +0000)]
[ASan] Report illegal instruction exceptions in ASan

Summary:
Respect the handle_sigill common flag and handle_segv flags while we're
at it.

We still handle signals/exceptions differently on Unix and Windows. The
installation process is tricky on Windows, and difficult to push down
into sanitizer_common without concerning it with the different
static/dynamic CRT models on Windows.

Reviewers: kcc, etienneb

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 277621

7 years agoDisable KMP_CANCEL_THREADS on Android
Pirama Arumuga Nainar [Wed, 3 Aug 2016 18:08:57 +0000 (18:08 +0000)]
Disable KMP_CANCEL_THREADS on Android

Summary:
Android does not have pthread_cancel.  Disable KMP_CANCEL_THREADS if
__ANDROID__ is defined.

Subscribers: tberghammer, srhines, openmp-commits, danalbert

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

llvm-svn: 277618

7 years agolld-link: Include the name of bad input files in several "input file is bad" diagnostics.
Nico Weber [Wed, 3 Aug 2016 18:07:28 +0000 (18:07 +0000)]
lld-link: Include the name of bad input files in several "input file is bad" diagnostics.

Also change a few getName() calls to getShortName() calls.
https://reviews.llvm.org/D23123
Part of PR28553.

llvm-svn: 277616

7 years ago[StreamExecutor] Add KernelLoaderSpec
Jason Henline [Wed, 3 Aug 2016 18:04:13 +0000 (18:04 +0000)]
[StreamExecutor] Add KernelLoaderSpec

Summary:
Add definitions for the KernelLoaderSpec and MultiKernelLoaderSpec
classes to StreamExecutor. Instances of these classes are generated by the
compiler in order to provide host code with a handle to device code.

Reviewers: jlebar, tra

Subscribers: parallel_libs-commits

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

llvm-svn: 277615

7 years ago[CloneFunction] Don't crash if the value map doesn't hold something
David Majnemer [Wed, 3 Aug 2016 17:37:10 +0000 (17:37 +0000)]
[CloneFunction] Don't crash if the value map doesn't hold something

It is possible for the value map to not have an entry for some value
that has already been removed.

I don't have a testcase, this is fall-out from a buildbot.

llvm-svn: 277614

7 years ago[RenderScript] Always create a new allocation ID in CaptureAllocationInit hook
Luke Drummond [Wed, 3 Aug 2016 17:31:58 +0000 (17:31 +0000)]
[RenderScript] Always create a new allocation ID in CaptureAllocationInit hook

Due to internal reuse of buffers in the RenderScript runtime by the system allocator,
comparing pointers is not a safe way to check whether an allocation is tracked by lldb.
This change updates the lldb RenderScript internal hook callback to properly
identify and remove old allocations that had have an address that is currently
being tracked.

This change also removes the need for `lldb_private::renderscript::LookupAllocation`
to take a `create` flag, as this is now always the case.

Original Author: <dean@codeplay.com>

Subscribers: lldb-commits
llvm-svn: 277613

7 years agouse local variables; NFC
Sanjay Patel [Wed, 3 Aug 2016 17:23:08 +0000 (17:23 +0000)]
use local variables; NFC

llvm-svn: 277612

7 years ago[CloneFunction] Don't remove side effecting calls
David Majnemer [Wed, 3 Aug 2016 17:12:47 +0000 (17:12 +0000)]
[CloneFunction] Don't remove side effecting calls

We were able to figure out that the result of a call is some constant.
While propagating that fact, we added the constant to the value map.
This is problematic because it results in us losing the call site when
processing the value map.

This fixes PR28802.

llvm-svn: 277611

7 years ago[ARM] Constant Materialize: imms with specific value can be encoded into mov.w
Weiming Zhao [Wed, 3 Aug 2016 17:05:23 +0000 (17:05 +0000)]
[ARM] Constant Materialize: imms with specific value can be encoded into mov.w

Summary: Thumb2 supports encoding immediates with specific patterns into mov.w by splatting the low 8 bits into other bytes.

Reviewers: john.brawn, jmolloy

Subscribers: jmolloy, aemerson, rengolin, samparker, llvm-commits

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

llvm-svn: 277610

7 years ago[msf] Make FPM reader use MappedBlockStream.
Zachary Turner [Wed, 3 Aug 2016 16:53:21 +0000 (16:53 +0000)]
[msf] Make FPM reader use MappedBlockStream.

MappedBlockSTream can work with any sequence of block data where
the ordering is specified by a list of block numbers.  So rather
than manually stitch them together in the case of the FPM, reuse
this functionality so that we can treat the FPM as if it were
contiguous.

Reviewed By: ruiu
Differential Revision: https://reviews.llvm.org/D23066

llvm-svn: 277609

7 years agoFix an unused variable warning in release builds.
Luke Drummond [Wed, 3 Aug 2016 16:29:45 +0000 (16:29 +0000)]
Fix an unused variable warning in release builds.

``num_params`` was unused in RenderScript ABI fixup pass ``cloneToStructRetFnTy``
and was only used in an `assert()` that the number of function parameters for the cloned
function was correct.

Now we actually use this variable, rather than recomputing it, and avoid the unused variable
warning when building without asserts enabled.

Subscribers: lldb-commits
llvm-svn: 277608

7 years agoRevert "Teach CorrelatedValuePropagation to mark adds as no wrap"
Renato Golin [Wed, 3 Aug 2016 16:20:48 +0000 (16:20 +0000)]
Revert "Teach CorrelatedValuePropagation to mark adds as no wrap"

This reverts commit r277592, trying to fix the AArch64 42VMA buildbot.

llvm-svn: 277607

7 years agoHexagon: Use llvm_unreachable. NFC.
Benjamin Kramer [Wed, 3 Aug 2016 15:51:10 +0000 (15:51 +0000)]
Hexagon: Use llvm_unreachable. NFC.

llvm-svn: 277605

7 years ago[compiler-rt] Fix CHECK coding style [NFC]
Etienne Bergeron [Wed, 3 Aug 2016 15:47:40 +0000 (15:47 +0000)]
[compiler-rt] Fix CHECK coding style [NFC]

llvm-svn: 277604

7 years agoFix bug in conflict check for Replacements::add().
Manuel Klimek [Wed, 3 Aug 2016 15:12:00 +0000 (15:12 +0000)]
Fix bug in conflict check for Replacements::add().

We would not detect conflicts when inserting insertions at the same
offset as previously contained replacements.

llvm-svn: 277603

7 years agoDisable shrinking of SNaN constants
Elliot Colp [Wed, 3 Aug 2016 15:09:21 +0000 (15:09 +0000)]
Disable shrinking of SNaN constants

When expanding FP constants, we attempt to shrink doubles to floats and perform an extending load.
However, on SystemZ, and possibly on other targets (I've only confirmed the problem on SystemZ), the FP extending load instruction may convert SNaN into QNaN, or may cause an exception. So in the general case, we would still like to shrink FP constants, but SNaNs should be left as doubles.

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

llvm-svn: 277602

7 years ago[Hexagon] Do not check alignment for unsized types in isLegalAddressingMode
Krzysztof Parzyszek [Wed, 3 Aug 2016 15:06:18 +0000 (15:06 +0000)]
[Hexagon] Do not check alignment for unsized types in isLegalAddressingMode

When the same base address is used to load two different data types, LSR
would assume a memory type of "void". This type is not sized and has no
alignment information. Checking for it causes a crash.

llvm-svn: 277601

7 years agoRevert an unintentional change from r277599
Nico Weber [Wed, 3 Aug 2016 14:38:52 +0000 (14:38 +0000)]
Revert an unintentional change from r277599

llvm-svn: 277600

7 years agoRevert 277594, it caused PR28827
Nico Weber [Wed, 3 Aug 2016 14:37:57 +0000 (14:37 +0000)]
Revert 277594, it caused PR28827

llvm-svn: 277599