OSDN Git Service

android-x86/external-llvm.git
7 years ago[X86][RDRAND] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as...
Simon Pilgrim [Sat, 1 Jul 2017 16:41:12 +0000 (16:41 +0000)]
[X86][RDRAND] Split off i64 intrinsic tests and test i16/i32 on 32-bit target as well.

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

7 years ago[X86] Removed reference to update_test_checks.py
Simon Pilgrim [Sat, 1 Jul 2017 16:34:29 +0000 (16:34 +0000)]
[X86] Removed reference to update_test_checks.py

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

7 years ago[X86][AVX] Remove duplicate autogeneration note
Simon Pilgrim [Sat, 1 Jul 2017 16:32:02 +0000 (16:32 +0000)]
[X86][AVX] Remove duplicate autogeneration note

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

7 years agofix trivial typos, NFC
Hiroshi Inoue [Sat, 1 Jul 2017 07:12:15 +0000 (07:12 +0000)]
fix trivial typos, NFC

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

7 years ago[SelectionDAGBuilder] Use EVT::getVectorVT instead of MVT::getVectorVT to prevent...
Craig Topper [Sat, 1 Jul 2017 06:46:09 +0000 (06:46 +0000)]
[SelectionDAGBuilder] Use EVT::getVectorVT instead of MVT::getVectorVT to prevent a crash if the type isn't a simple VT.

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

7 years ago[AVR] Remove a bunch of now-obselete tests
Dylan McKay [Sat, 1 Jul 2017 05:23:13 +0000 (05:23 +0000)]
[AVR] Remove a bunch of now-obselete tests

The fixups in these instructions are now lowered into relocations.

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

7 years agoRevert "Revert "Replace trivial use of external rc.exe by writing our own .res file.""
Eric Beckmann [Sat, 1 Jul 2017 03:59:54 +0000 (03:59 +0000)]
Revert "Revert "Replace trivial use of external rc.exe by writing our own .res file.""

Summary:
This reverts commit 51931072a7c9a52540baf76fc30ef391d2529a2f.

This revert was originally done because the integrations of the new
WindowsResource library into LLD was causing error in chromium, due to
bugs in how resource sections were handled.  These bugs were fixed,
meaning that the features may be reintegrated.

Subscribers: hiraditya, llvm-commits

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

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

7 years agoRemove the default ARMSubtarget from the ARM TargetMachine.
Eric Christopher [Sat, 1 Jul 2017 03:41:53 +0000 (03:41 +0000)]
Remove the default ARMSubtarget from the ARM TargetMachine.

This enables us to ensure better LTO and code generation in the face of module linking.
Remove a report_fatal_error from the TargetMachine and replace it with an assert in ARMSubtarget - and remove the test that depended on the error. The assertion will still fire in the case that we were reporting before, but error reporting needs to be in front end tools if possible for options parsing.

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

7 years ago[Cloner] Re-map simplfied cloned instructions.
Davide Italiano [Sat, 1 Jul 2017 03:29:33 +0000 (03:29 +0000)]
[Cloner] Re-map simplfied cloned instructions.

This commit pretty much rolls back the logic added in r306495
as in the testcase provided we simplify an `icmp` looking through
a PHI that hasn't been mapped yet.

I think instsimplify shouldn't do threading over select/phis or
just looking through phis in general, but this is what we have
now. Also, add a test to prevent this from happening in case somebody
wants to modify this code again.

Briefly discussed with Kyle Butt (thanks Kyle!).

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

7 years agoRecommit "r306541 - Add zero-length check to memcpy/memset load store loop expansion""
Teresa Johnson [Sat, 1 Jul 2017 03:24:10 +0000 (03:24 +0000)]
Recommit "r306541 - Add zero-length check to memcpy/memset load store loop expansion""

With fix for use-after-free errors. We can't add the new branch and
remove the old one until we are done with the Builder constructed for
the block.

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

7 years agoRevert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."
Teresa Johnson [Sat, 1 Jul 2017 03:24:09 +0000 (03:24 +0000)]
Revert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."

This still breaks PPC tests we have. I'll forward reproduction
instructions to dehao.

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

7 years agore-commit r306336: Enable vectorizer-maximize-bandwidth by default.
Teresa Johnson [Sat, 1 Jul 2017 03:24:08 +0000 (03:24 +0000)]
re-commit r306336: Enable vectorizer-maximize-bandwidth by default.

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

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

7 years agorevert r306336 for breaking ppc test.
Teresa Johnson [Sat, 1 Jul 2017 03:24:07 +0000 (03:24 +0000)]
revert r306336 for breaking ppc test.

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

7 years agoEnable vectorizer-maximize-bandwidth by default.
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Enable vectorizer-maximize-bandwidth by default.

Summary:
vectorizer-maximize-bandwidth is generally useful in terms of performance. I've tested the impact of changing this to default on speccpu benchmarks on sandybridge machines. The result shows non-negative impact:

spec/2006/fp/C++/444.namd                 26.84  -0.31%
spec/2006/fp/C++/447.dealII               46.19  +0.89%
spec/2006/fp/C++/450.soplex               42.92  -0.44%
spec/2006/fp/C++/453.povray               38.57  -2.25%
spec/2006/fp/C/433.milc                   24.54  -0.76%
spec/2006/fp/C/470.lbm                    41.08  +0.26%
spec/2006/fp/C/482.sphinx3                47.58  -0.99%
spec/2006/int/C++/471.omnetpp             22.06  +1.87%
spec/2006/int/C++/473.astar               22.65  -0.12%
spec/2006/int/C++/483.xalancbmk           33.69  +4.97%
spec/2006/int/C/400.perlbench             33.43  +1.70%
spec/2006/int/C/401.bzip2                 23.02  -0.19%
spec/2006/int/C/403.gcc                   32.57  -0.43%
spec/2006/int/C/429.mcf                   40.35  +0.27%
spec/2006/int/C/445.gobmk                 26.96  +0.06%
spec/2006/int/C/456.hmmer                  24.4  +0.19%
spec/2006/int/C/458.sjeng                 27.91  -0.08%
spec/2006/int/C/462.libquantum            57.47  -0.20%
spec/2006/int/C/464.h264ref               46.52  +1.35%

geometric mean                                   +0.29%

The regression on 453.povray seems real, but is due to secondary effects as all hot functions are bit-identical with and without the flag.

I started this patch to consult upstream opinions on this. It will be greatly appreciated if the community can help test the performance impact of this change on other architectures so that we can decided if this should be target-dependent.

Reviewers: hfinkel, mkuper, davidxl, chandlerc

Reviewed By: chandlerc

Subscribers: rengolin, sanjoy, javed.absar, bjope, dorit, magabari, RKSimon, llvm-commits, mzolotukhin

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

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

7 years agoAnother test commit
Teresa Johnson [Sat, 1 Jul 2017 03:24:06 +0000 (03:24 +0000)]
Another test commit

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

7 years agoStill debugging
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still debugging

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

7 years agoStill test commit
Teresa Johnson [Sat, 1 Jul 2017 03:24:05 +0000 (03:24 +0000)]
Still test commit

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

7 years agoAnother test commit
Teresa Johnson [Sat, 1 Jul 2017 03:24:00 +0000 (03:24 +0000)]
Another test commit

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

7 years agoRewrite ARM execute only support to avoid the use of a command line flag and unqualif...
Eric Christopher [Sat, 1 Jul 2017 02:55:22 +0000 (02:55 +0000)]
Rewrite ARM execute only support to avoid the use of a command line flag and unqualified ARMSubtarget lookup.

Paired with a clang commit to use the new behavior.

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

7 years ago[ObjectYAML] Fix some Clang-tidy modernize and Include What You Use warnings; other...
Eugene Zelenko [Sat, 1 Jul 2017 01:35:55 +0000 (01:35 +0000)]
[ObjectYAML] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

7 years ago[AVR] Update AVRASmBackend from API change in r306906
Dylan McKay [Sat, 1 Jul 2017 01:18:12 +0000 (01:18 +0000)]
[AVR] Update AVRASmBackend from API change in r306906

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

7 years ago[X86] Move GISel accessor initialization from TargetMachine to Subtarget.
Quentin Colombet [Sat, 1 Jul 2017 00:45:50 +0000 (00:45 +0000)]
[X86] Move GISel accessor initialization from TargetMachine to Subtarget.

NFC

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

7 years ago[ARM] Move GISel accessor initialization from TargetMachine to Subtarget.
Quentin Colombet [Sat, 1 Jul 2017 00:45:45 +0000 (00:45 +0000)]
[ARM] Move GISel accessor initialization from TargetMachine to Subtarget.

NFC

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

7 years ago[Dominators] Reapply r306892, r306893, r306893.
Jakub Kuderski [Sat, 1 Jul 2017 00:23:01 +0000 (00:23 +0000)]
[Dominators] Reapply r306892, r306893, r306893.

This reverts commit r306907 and reapplies the patches in the title.
The patches used to make one of the
CodeGen/ARM/2011-02-07-AntidepClobber.ll test to fail because of a
missing null check.

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

7 years agoA little wordsmithing of dominator verification comments.
Daniel Berlin [Fri, 30 Jun 2017 23:49:53 +0000 (23:49 +0000)]
A little wordsmithing of dominator verification comments.

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

7 years ago[RegisterCoalescer] Account for instructions deleted by removePartialredunduncy and...
Sameer AbuAsal [Fri, 30 Jun 2017 23:49:07 +0000 (23:49 +0000)]
[RegisterCoalescer] Account for instructions deleted by removePartialredunduncy and in WorkList

Summary:
 removePartialRedundency optimization introduces a state in the
 RegisterCoalescer where an instruction pointed to in the WorkList
 is deleted from the MBB and then removed from the ErasedList.
 This patch updates the ErasedList to be used globally by not erasing
 erased Instructions from  it to solve the problem.

 The patch also accounts for the case where an Instruction was previously
 deleted and the same memory was reused by BuildMI to create a new instruction.

Reviewers: kparzysz, qcolombet

Reviewed By: qcolombet

Subscribers: MatzeB, qcolombet, llvm-commits

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

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

7 years agoAdd comments on sibling and parent properties in dominator trees
Daniel Berlin [Fri, 30 Jun 2017 23:46:58 +0000 (23:46 +0000)]
Add comments on sibling and parent properties in dominator trees

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

7 years ago[ORE] Add diagnostics hotness threshold
Brian Gesiak [Fri, 30 Jun 2017 23:14:53 +0000 (23:14 +0000)]
[ORE] Add diagnostics hotness threshold

Summary:
Add an option to prevent diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for
large codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size. Discussion of
this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html

Reviewers: anemet, davidxl, hfinkel

Reviewed By: anemet

Subscribers: qcolombet, javed.absar, fhahn, eraman, llvm-commits

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

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

7 years ago[CodeView, PDB] Fix some Clang-tidy modernize and Include What You Use warnings;...
Eugene Zelenko [Fri, 30 Jun 2017 23:06:03 +0000 (23:06 +0000)]
[CodeView, PDB] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

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

7 years agoRevert "[Dominators] Teach IDF to use level information"
Jakub Kuderski [Fri, 30 Jun 2017 22:56:28 +0000 (22:56 +0000)]
Revert "[Dominators] Teach IDF to use level information"

This reverts commit r306894.

Revert "[Dominators] Add NearestCommonDominator verification"

This reverts commit r306893.

Revert "[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries"

This reverts commit r306892.

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

7 years agoRename and adjust processFixupValue.
Rafael Espindola [Fri, 30 Jun 2017 22:47:27 +0000 (22:47 +0000)]
Rename and adjust processFixupValue.

It was not processing any value. All that it ever did was force
relocations, so name it shouldForceRelocation.

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

7 years ago[lit] Factor out listdir logic shared by different test formats.
David L. Jones [Fri, 30 Jun 2017 21:58:55 +0000 (21:58 +0000)]
[lit] Factor out listdir logic shared by different test formats.

Summary:
The lit test formats use largely the same logic for discovering tests. There are
some superficial differences in the logic, which seem reasonable enough to
handle in a single routine.

At a high level, the common goal is "look for files that end with one of these
suffixes, and skip anything starting with a dot." The balance of the logic
specific to ShTest and GoogleTest collapses quite a bit, so that
getTestsInDirectory is only a couple of lines around a call to the new function.

Reviewers: zturner, MatzeB, modocache

Subscribers: sanjoy, llvm-commits

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

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

7 years ago[Dominators] Teach IDF to use level information
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Teach IDF to use level information

Summary: This patch teaches IteratedDominanceFrontier to use the level information stored in DomTreeNodes instead of calculating it manually.

Reviewers: dberlin, sanjoy, davide

Reviewed By: davide

Subscribers: davide, llvm-commits

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

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

7 years ago[Dominators] Add NearestCommonDominator verification
Jakub Kuderski [Fri, 30 Jun 2017 21:51:43 +0000 (21:51 +0000)]
[Dominators] Add NearestCommonDominator verification

Summary:
This patch adds another verification function for checking correctness of findNearestCommonDominator.
For every edge from U to V in the input graph, `NCD(U, V) == IDom(V) or V` -- the new function checks this condition.

Reviewers: dberlin, sanjoy, chandlerc

Reviewed By: dberlin

Subscribers: llvm-commits

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

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

7 years ago[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominan...
Jakub Kuderski [Fri, 30 Jun 2017 21:51:40 +0000 (21:51 +0000)]
[Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries

Summary:
This patch makes DomTreeNodes keep their level (depth) in the DomTree. By having this information always available, it is possible to speedup and simplify findNearestCommonDominator and certain dominance queries.

In the future, level information will be also needed to perform incremental updates.

My testing doesn't show any noticeable performance differences after applying this patch. There may be some improvements when other passes are thought to use the level information.

Reviewers: dberlin, sanjoy, chandlerc, grosser

Reviewed By: dberlin

Subscribers: llvm-commits

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

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

7 years agoRemove spurious semicolons.
Zachary Turner [Fri, 30 Jun 2017 21:48:57 +0000 (21:48 +0000)]
Remove spurious semicolons.

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

7 years ago[llvm-pdbutil] Output the symbol offset when dumping.
Zachary Turner [Fri, 30 Jun 2017 21:35:00 +0000 (21:35 +0000)]
[llvm-pdbutil] Output the symbol offset when dumping.

Type records have a unique type index, but symbol records do
not.  Instead, symbol records refer to other symbol records
by referencing their offset in the symbol stream.  In a sense
this is the analogue of the TypeIndex, but we are not printing
it in the dumper.  Printing it not only gives us more useful
information when manually investigating the contents of a PDB,
but also allows us to write better tests by enabling us to
verify that fields that reference other symbol records do
so correctly.

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

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

7 years ago[codeview] Use the first valid source location at the top of every MBB
Reid Kleckner [Fri, 30 Jun 2017 21:33:44 +0000 (21:33 +0000)]
[codeview] Use the first valid source location at the top of every MBB

If the instructions at the beginning of the block have no location,
we're better off using the location of the first instruction in the
current basic block. At the very least, that instruction post-dominates
this one, whereas if we don't emit a .cv_loc directive, we end up using
the potentially invalid location that falls through from the previous
block.

We could probably do better here by emitting some kind of ".cv_loc end"
directive that stops the line table entry of the previous .cv_loc
directive from bleeding out of its basic block. This would improve the
line table when an entire MBB has no valid location info.

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

7 years ago[Hexagon] Implement frame pointer elimination with -fomit-frame-pointer
Krzysztof Parzyszek [Fri, 30 Jun 2017 21:21:40 +0000 (21:21 +0000)]
[Hexagon] Implement frame pointer elimination with -fomit-frame-pointer

It applies to leaf functions that are otherwise not required to have
a frame pointer.

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

7 years ago[SLPVectorizer] Add isOdd() helper function, NFCI.
Dinar Temirbulatov [Fri, 30 Jun 2017 21:16:26 +0000 (21:16 +0000)]
[SLPVectorizer] Add isOdd() helper function, NFCI.

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

7 years ago[InstCombine] Replace an unnecessary use of a matcher with just an isa and a cast...
Craig Topper [Fri, 30 Jun 2017 21:09:34 +0000 (21:09 +0000)]
[InstCombine] Replace an unnecessary use of a matcher with just an isa and a cast. NFC

We aren't looking through any levels of IR here so I don't think we need the power of a matcher or the temporary variable it requires.

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

7 years ago[LV] Sink casts to unravel first order recurrence
Ayal Zaks [Fri, 30 Jun 2017 21:05:06 +0000 (21:05 +0000)]
[LV] Sink casts to unravel first order recurrence

Check if a single cast is preventing handling a first-order-recurrence Phi,
because the scheduling constraints it imposes on the first-order-recurrence
shuffle are infeasible; but they can be made feasible by moving the cast
downwards. Record such casts and move them when vectorizing the loop.

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

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

7 years agoFix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
Richard Smith [Fri, 30 Jun 2017 20:56:57 +0000 (20:56 +0000)]
Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR

This is a short-term fix for PR33650 aimed to get the modules build bots green again.

Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
macros to try to locally specialize a global template for a global type. That's
not how C++ works.

Instead, we now centrally define how to format vectors of fundamental types and
of string (std::string and StringRef). We use flow formatting for the former
cases, since that's the obvious right thing to do; in the latter case, it's
less clear what the right choice is, but flow formatting is really bad for some
cases (due to very long strings), so we pick block formatting. (Many of the
cases that were using flow formatting for strings are improved by this change.)

Other than the flow -> block formatting change for some vectors of strings,
this should result in no functionality change.

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

Corresponding updates to clang, clang-tools-extra, and lld to follow.

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

7 years ago[Hexagon] Guard the generation of lookup table
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:54:24 +0000 (20:54 +0000)]
[Hexagon] Guard the generation of lookup table

The llvm flag "-hexagon-emit-lookup-tables" guards the generation
of lookup table generated from a switch statement.
Differential Revision: https://reviews.llvm.org/D34819

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

7 years ago[SystemZ] Add all remaining instructions
Ulrich Weigand [Fri, 30 Jun 2017 20:43:40 +0000 (20:43 +0000)]
[SystemZ] Add all remaining instructions

This adds all remaining instructions that were still missing, mostly
privileged and semi-privileged system-level instructions.  These are
provided for use with the assembler and disassembler only.

This brings the LLVM assembler / disassembler to parity with the
GNU binutils tools.

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

7 years agoGlobalISel: add G_IMPLICIT_DEF instruction.
Tim Northover [Fri, 30 Jun 2017 20:27:36 +0000 (20:27 +0000)]
GlobalISel: add G_IMPLICIT_DEF instruction.

It looks like there are two target-independent but not GISel instructions that
need legalization, IMPLICIT_DEF and PHI. These are already anomalies since
their operands have important LLTs attached, so to make things more uniform it
seems like a good idea to add generic variants. Starting with G_IMPLICIT_DEF.

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

7 years ago[Hexagon] Emit jump tables in text section based on a flag
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:21:48 +0000 (20:21 +0000)]
[Hexagon] Emit jump tables in text section based on a flag

This patch adds a new LLVM flag -hexagon-emit-jt-text which is defaulted to
"false". The value "true" emits the switch generated jump tables in text section.
Differential Revision: https://reviews.llvm.org/D34820

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

7 years agoRevert "[Hexagon] Guard the generation of lookup table"
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:20:00 +0000 (20:20 +0000)]
Revert "[Hexagon] Guard the generation of lookup table"

This reverts commit ae521f4192c3ed0202c047fec993cb59133dd1a0.
Wrong commit message

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

7 years ago[Hexagon] Guard the generation of lookup table
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:10:28 +0000 (20:10 +0000)]
[Hexagon] Guard the generation of lookup table

The llvm flag "-hexagon-emit-lookup-tables" guards the generation
of lookup table from a switch statement.

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

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

7 years ago[SimplifyCFG] Update the name of switch generated lookup table.
Sumanth Gundapaneni [Fri, 30 Jun 2017 20:00:01 +0000 (20:00 +0000)]
[SimplifyCFG] Update the name of switch generated lookup table.

This patch appends the name of the function to the switch generated lookup
table. This will ease the visual debugging in identifying the function the table
is generated from.

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

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

7 years ago[ORE] Remove old "diagnostic hotness" spelling
Brian Gesiak [Fri, 30 Jun 2017 19:56:55 +0000 (19:56 +0000)]
[ORE] Remove old "diagnostic hotness" spelling

Summary:
Depends on https://reviews.llvm.org/D34865.

With the Clang uses of the old spelling having been removed in
https://reviews.llvm.org/D34865, get rid of the old "diagnostic hotness"
spellings in favor of the new "diagnostics hotness".

Reviewers: anemet, davidxl

Reviewed By: anemet

Subscribers: llvm-commits

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

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

7 years agoARM: fix big-endian 64-bit cmpxchg.
Tim Northover [Fri, 30 Jun 2017 19:51:02 +0000 (19:51 +0000)]
ARM: fix big-endian 64-bit cmpxchg.

On big-endian machines the high and low parts of the value accessed by ldrexd
and strexd are swapped around. To account for this we swap inputs and outputs
in ISelLowering.

Patch by Bharathi Seshadri.

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

7 years agoMake 0 argument getSubtargetImpl functions for the X86, AArch64, and PPC targets...
Eric Christopher [Fri, 30 Jun 2017 19:49:05 +0000 (19:49 +0000)]
Make 0 argument getSubtargetImpl functions for the X86, AArch64, and PPC targets deleted so that no one is tempted to use them.

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

7 years ago[PowerPC] auto-generate check lines; NFC
Sanjay Patel [Fri, 30 Jun 2017 19:20:54 +0000 (19:20 +0000)]
[PowerPC] auto-generate check lines; NFC

The existing check lines were more flexible, but these are
small enough tests that there shouldn't be much question
about register allocation. I've been hand-modifying this
file as I change the CGP memcmp expansion, but that's
more error-prone and time-consuming than just running the
update script.

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

7 years ago[InstCombine] Add m_BitReverse pattern match helper. NFCI.
Simon Pilgrim [Fri, 30 Jun 2017 18:58:29 +0000 (18:58 +0000)]
[InstCombine] Add m_BitReverse pattern match helper. NFCI.

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

7 years agoCompletely disable git/svn version checking if not needed.
Rafael Espindola [Fri, 30 Jun 2017 18:48:33 +0000 (18:48 +0000)]
Completely disable git/svn version checking if not needed.

Working with git on a branch I find it really annoying that committing
a change causes ninja to think that stuff needs to be rebuilt.

With this change at least nothing in llvm needs to be rebuild when
something is committed.

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

7 years agoFix opt --help ordering of available optimizations.
Erich Keane [Fri, 30 Jun 2017 18:44:33 +0000 (18:44 +0000)]
Fix opt --help ordering of available optimizations.

Introduced in -r283004, the PassNameParser sorts Optimization options in
reverse. This is because the commit replaced a compare function with "<"
(which would seemingly be proper based on the name of the comparison function).
The result is the 'true' result is converted to '1', which is inverted.

This patch fixes this by replacing the '<' operator call on StringRef with a
call to the StringRef compare function. It also renames the function to better
reflect its meaning.

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

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

7 years agoFix test broken by parameter mixup.
Zachary Turner [Fri, 30 Jun 2017 18:25:07 +0000 (18:25 +0000)]
Fix test broken by parameter mixup.

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

7 years agoDrop the LLVM mangler escape when printing the IR name in assembly comments
Reid Kleckner [Fri, 30 Jun 2017 18:22:51 +0000 (18:22 +0000)]
Drop the LLVM mangler escape when printing the IR name in assembly comments

I'm tired of seeing this:
        .globl  "?Test@@YAXXZ"          # -- Begin function ^A?Test@@YAXXZ

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

7 years agoFix bug in symbol generation for resource COFF
Eric Beckmann [Fri, 30 Jun 2017 18:16:35 +0000 (18:16 +0000)]
Fix bug in symbol generation for resource COFF

Symbols in the resource COFF file should be for .rsrc$02, where the
actual resource data is, not .rsrc$01, which contains the directory
tree.

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

Patch by Joe Ranieri.

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

7 years ago[llvm-pdbutil] Add the ability to dump the dependency tree for a type
Zachary Turner [Fri, 30 Jun 2017 18:15:47 +0000 (18:15 +0000)]
[llvm-pdbutil] Add the ability to dump the dependency tree for a type

Previously we had the -type-index option which would dump the record of
a single, but we had no way to follow the dependency graph backwards and
also dump all dependent types.

Having this option makes test-writing better, because we can limit the
test to only those records that are of importance for the thing we're
trying to test, which allows us to use things like CHECK-NEXT to reduce
fragility.

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

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

7 years ago[ORE] Unify spelling as "diagnostics hotness"
Brian Gesiak [Fri, 30 Jun 2017 18:13:59 +0000 (18:13 +0000)]
[ORE] Unify spelling as "diagnostics hotness"

Summary:
To enable profile hotness information in diagnostics output, Clang takes
the option `-fdiagnostics-show-hotness` -- that's "diagnostics", with an
"s" at the end. Clang also defines `CodeGenOptions::DiagnosticsWithHotness`.

LLVM, on the other hand, defines
`LLVMContext::getDiagnosticHotnessRequested` -- that's "diagnostic", not
"diagnostics". It's a small difference, but it's confusing, typo-inducing, and
frustrating.

Add a new method with the spelling "diagnostics", and "deprecate" the
old spelling.

Reviewers: anemet, davidxl

Reviewed By: anemet

Subscribers: llvm-commits, mehdi_amini

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

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

7 years ago[X86][SSE] Pulled common variables to top of matchUnaryPermuteVectorShuffle. NFCI.
Simon Pilgrim [Fri, 30 Jun 2017 18:00:14 +0000 (18:00 +0000)]
[X86][SSE] Pulled common variables to top of matchUnaryPermuteVectorShuffle. NFCI.

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

7 years ago[RuntimeUnrolling] Add logic for loops with multiple exit blocks
Anna Thomas [Fri, 30 Jun 2017 17:57:07 +0000 (17:57 +0000)]
[RuntimeUnrolling] Add logic for loops with multiple exit blocks

Summary:
Runtime unrolling is done for loops with a single exit block and a
single exiting block (and this exiting block should be the latch block).
This patch adds logic to support unrolling in the presence of multiple exit
blocks (which also means multiple exiting blocks).
Currently this is under an off-by-default option and is supported when
epilog code is generated. Support in presence of prolog code will be in
a future patch (we just need to add more tests, and update comments).

This patch is essentially an implementation patch. I have not added any
heuristic (in terms of branches added or code size) to decide when
this should be enabled.

Reviewers: mkuper, sanjoy, reames, evstupac

Reviewed by: reames

Subscribers: llvm-commits

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

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

7 years ago[DWARF] Don't include TestingSupport in LLVM_LINK_COMPONENTS.
Juergen Ributzka [Fri, 30 Jun 2017 16:50:51 +0000 (16:50 +0000)]
[DWARF] Don't include TestingSupport in LLVM_LINK_COMPONENTS.

This fixes a cmake configuration issue when LLVM is configured with no targets.
Instead we need to add TestingSupport directly with target_link_libraries.

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

7 years ago[Dominators] Do not perform expensive checks by default. Fix PR33656.
Jakub Kuderski [Fri, 30 Jun 2017 16:33:04 +0000 (16:33 +0000)]
[Dominators] Do not perform expensive checks by default. Fix PR33656.

Summary:
Some transforms assume that DT.verifyDomInfo() is not expensive and call it even when ENABLE_EXPENSIVE_CHECKS is not set.
This patch disables expensive Dominator Tree verification (reachability, parent property, sibling property) to fix
[[ https://bugs.llvm.org/show_bug.cgi?id=33656 | PR33656 ]].

Note that this is only a temporary fix.

Reviewers: dberlin, chapuni, kparzysz, grosser

Reviewed By: dberlin

Subscribers: llvm-commits

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

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

7 years agoRevert "[lit] Clean output directories before running tests."
Zachary Turner [Fri, 30 Jun 2017 16:05:03 +0000 (16:05 +0000)]
Revert "[lit] Clean output directories before running tests."

This reverts commit da6318a92fba793e4f2447ec478b001392d57d43.

This is causing failures on some build bots due to what appears
to be some kind of lit ordering dependency.

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

7 years ago[lit] Clean output directories before running tests.
Zachary Turner [Fri, 30 Jun 2017 16:01:30 +0000 (16:01 +0000)]
[lit] Clean output directories before running tests.

Presently lit leaks files in the tests' output directories.
Specifically, if a test creates output files, lit makes no
effort to remove them prior to the next test run.  This is
problematic because it leads to false positives whenever a
test passes because stale  files were present.  In general
it is a source of flakiness that should be removed.

This patch addresses this by building the list of all test
directories that are part of the current run set, and then
deleting those directories and recreating them anew.  This
gives each test a clean baseline to start from.

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

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

7 years ago[MIPS] Handle PIC load address macro instructions in N64.
Simon Dardis [Fri, 30 Jun 2017 15:44:27 +0000 (15:44 +0000)]
[MIPS] Handle PIC load address macro instructions in N64.

In particular, use CALL16 (similar to O32) for address loads into T9 for certain
cases.  Otherwise use a %got_disp relocation to load the address of a symbol.
Small offsets (small enough to fit in a 16-bit signed immediate) can be used and
are added to the symbol address after it is loaded from the GOT.  Larger offsets
are currently unsupported and result in an error from the assembler.

Reviewers: sdardis

Reviewed By: sdardis

Patch by: John Baldwin

Subscribers: llvm-commits, seanbruno, arichardson, emaste, dim

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

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

7 years ago[SLP] A test for limiting vectorization of instructions, NFC.
Alexey Bataev [Fri, 30 Jun 2017 14:37:32 +0000 (14:37 +0000)]
[SLP] A test for limiting vectorization of instructions, NFC.

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

7 years ago[LTO] Remove values from non-prevailing comdats
Teresa Johnson [Fri, 30 Jun 2017 14:03:24 +0000 (14:03 +0000)]
[LTO] Remove values from non-prevailing comdats

Summary:
When linking a regular LTO module, if it has any non-prevailing values
(dropped to available_externally) in comdats, we need to do more than
just remove those values from their comdat. We also remove all values
from that comdat, so as to avoid leaving an incomplete comdat.

This is necessary in case we are compiling in mixed regular and ThinLTO
mode, since the resulting regularLTO native object is always linked into
the final binary first. We need to prevent the linker from selecting an
incomplete comdat that was not the prevailing copy.

Fixes PR32980.

Reviewers: pcc, rafael

Subscribers: mehdi_amini, david2050, llvm-commits, inglorion

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

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

7 years agoRemove unnecessary commented out argument. NFCI.
Simon Pilgrim [Fri, 30 Jun 2017 13:26:17 +0000 (13:26 +0000)]
Remove unnecessary commented out argument. NFCI.

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

7 years ago[SystemZ] Add missing high-word facility instructions
Ulrich Weigand [Fri, 30 Jun 2017 12:56:29 +0000 (12:56 +0000)]
[SystemZ] Add missing high-word facility instructions

There are a few instructions provided by the high-word facility (z196)
that we cannot easily exploit for code generation.  This patch at least
adds those missing instructions for the assembler and disassembler.

This means that now all nonprivileged instructions up to z13 are
supported by the LLVM assembler / disassembler.

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

7 years agoRevert "[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset"
Nirav Dave [Fri, 30 Jun 2017 12:56:02 +0000 (12:56 +0000)]
Revert "[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset"

This reverts commit r306819 which appears be exposing underlying
issues in a stage1 ppc64be build

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

7 years ago[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset
Nirav Dave [Fri, 30 Jun 2017 12:23:41 +0000 (12:23 +0000)]
[DAG] Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset

As discussed in D34087, rewrite areNonVolatileConsecutiveLoads using
generic checks. Also, propagate missing local handling from there to
BaseIndexOffset checks.

Tests of note:

  * test/CodeGen/X86/build-vector* - Improved.
  * test/CodeGen/BPF/undef.ll - Improved store alignment allows an
    additional store merge

  * test/CodeGen/X86/clear_upper_vector_element_bits.ll - This is a
    case we already do not handle well. Here, the DAG is improved, but
    scheduling causes a code size degradation.

Reviewers: RKSimon, craig.topper, spatel, andreadb, filcab

Subscribers: nemanjai, llvm-commits

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

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

7 years agoCREDITS.TXT: Update myself.
NAKAMURA Takumi [Fri, 30 Jun 2017 11:59:53 +0000 (11:59 +0000)]
CREDITS.TXT: Update myself.

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

7 years ago[X86] Updated 32-bit memcmp tests to run with/without SSE2
Simon Pilgrim [Fri, 30 Jun 2017 11:23:59 +0000 (11:23 +0000)]
[X86] Updated 32-bit memcmp tests to run with/without SSE2

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

7 years agoRevert of r306525: "Canonicalize clamp of float types to minmax"
Nikolai Bozhenov [Fri, 30 Jun 2017 10:39:09 +0000 (10:39 +0000)]
Revert of r306525: "Canonicalize clamp of float types to minmax"

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

7 years ago[YAML] - Teach yaml2obj/obj2yaml to work with numeric relocation values.
George Rimar [Fri, 30 Jun 2017 10:31:03 +0000 (10:31 +0000)]
[YAML] - Teach yaml2obj/obj2yaml to work with numeric relocation values.

That may be useful if we want to produce or parse object containing
broken relocation values using yaml2obj/obj2yaml.

Previously that was impossible because only enum values were parsed
correctly, this patch allows to put any numeric value as a
relocation type.

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

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

7 years ago[DWARF] - Simplify HandleExpectedError implementation in DWARFDebugInfoTest
George Rimar [Fri, 30 Jun 2017 10:09:01 +0000 (10:09 +0000)]
[DWARF] - Simplify HandleExpectedError implementation in DWARFDebugInfoTest

Current implementation looks a bit confusing. It looks like it should
report/print something on error, but it does not do that.
It silently drops a error message when creating triple, though
this behavior is fine generally.

For example if LLVM configured with -DLLVM_TARGETS_TO_BUILD=ARM and
our host is windows, it is expected that we will be unable to
create "i386-pc-windows-msvc" target.

Patch introduces isConfigurationSupported() function that checks
if current configuration is supported for each test and returns early if not.

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

7 years agoFixed misplaced table border in the docs.
Ilya Biryukov [Fri, 30 Jun 2017 09:47:17 +0000 (09:47 +0000)]
Fixed misplaced table border in the docs.

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

7 years agoAdded Dockerfiles to build clang from sources.
Ilya Biryukov [Fri, 30 Jun 2017 09:46:45 +0000 (09:46 +0000)]
Added Dockerfiles to build clang from sources.

Reviewers: klimek, chandlerc, mehdi_amini

Reviewed By: klimek, mehdi_amini

Subscribers: mehdi_amini, jlebar, llvm-commits

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

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

7 years agofix trivial typos, NFC
Hiroshi Inoue [Fri, 30 Jun 2017 09:11:50 +0000 (09:11 +0000)]
fix trivial typos, NFC

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

7 years ago[GlobalISel] Make multi-step legalization work.
Kristof Beyls [Fri, 30 Jun 2017 08:26:20 +0000 (08:26 +0000)]
[GlobalISel] Make multi-step legalization work.

In r301116, a custom lowering needed to be introduced to be able to
legalize 8 and 16-bit divisions on ARM targets without a division
instruction, since 2-step legalization (WidenScalar from 8 bit to 32
bit, then Libcall the 32-bit division) doesn't work.

This fixes this and makes this kind of multi-step legalization, where
first the size of the type needs to be changed and then some action is
needed that doesn't require changing the size of the type,
straighforward to specify.

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

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

7 years ago[LV] Optimize for size when vectorizing loops with tiny trip count
Ayal Zaks [Fri, 30 Jun 2017 08:02:35 +0000 (08:02 +0000)]
[LV] Optimize for size when vectorizing loops with tiny trip count

It may be detrimental to vectorize loops with very small trip count, as various
costs of the vectorized loop body as well as enclosing overheads including
runtime tests and scalar iterations may outweigh the gains of vectorizing. The
current cost model measures the cost of the vectorized loop body only, expecting
it will amortize other costs, and loops with known or expected very small trip
counts are not vectorized at all. This patch allows loops with very small trip
counts to be vectorized, but under OptForSize constraints, which ensure the cost
of the loop body is dominant, having no runtime guards nor scalar iterations.

Patch inspired by D32451.

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

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

7 years ago[InstCombine] Add test cases to demonstrate failure to fold (a | b) ^ (~a | ~b) ...
Craig Topper [Fri, 30 Jun 2017 07:37:42 +0000 (07:37 +0000)]
[InstCombine] Add test cases to demonstrate failure to fold (a | b) ^ (~a | ~b) --> ~(a ^ b) and its commuted variants.

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

7 years ago[InstCombine] In foldXorToXor, move the commutable matcher from the LHS match to...
Craig Topper [Fri, 30 Jun 2017 07:37:41 +0000 (07:37 +0000)]
[InstCombine] In foldXorToXor, move the commutable matcher from the LHS match to the RHS match. No meaningful change intended.

There are two conditions ORed here with similar checks and each contain two matches that must be true for the if to succeed. With the commutable match on the first half of the OR then both ifs basically have the same first part and only the second part distinguishs. With this change we move the commutable match to second half and make the first half unique.

This caused some tests to change because we now produce a commuted result, but this shouldn't matter in practice.

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

7 years agofix trivial typo; NFC
Hiroshi Inoue [Fri, 30 Jun 2017 07:17:53 +0000 (07:17 +0000)]
fix trivial typo; NFC

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

7 years agoRemove the BBVectorize pass.
Chandler Carruth [Fri, 30 Jun 2017 07:09:08 +0000 (07:09 +0000)]
Remove the BBVectorize pass.

It served us well, helped kick-start much of the vectorization efforts
in LLVM, etc. Its time has come and past. Back in 2014:
http://lists.llvm.org/pipermail/llvm-dev/2014-November/079091.html

Time to actually let go and move forward. =]

I've updated the release notes both about the removal and the
deprecation of the corresponding C API.

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

7 years ago[llvm-readobj] Improve printouts for COFF ARM64 binaries
Martin Storsjo [Fri, 30 Jun 2017 07:02:13 +0000 (07:02 +0000)]
[llvm-readobj] Improve printouts for COFF ARM64 binaries

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

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

7 years ago[llvm-readobj] Include the PE magic value in printouts
Martin Storsjo [Fri, 30 Jun 2017 07:02:04 +0000 (07:02 +0000)]
[llvm-readobj] Include the PE magic value in printouts

This is useful for a testcase in lld.

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

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

7 years agoRevert "r306541 - Add zero-length check to memcpy/memset load store loop expansion"
Daniel Jasper [Fri, 30 Jun 2017 06:37:33 +0000 (06:37 +0000)]
Revert "r306541 - Add zero-length check to memcpy/memset load store loop expansion"

Segfaults in non-optimized builds. I'll get a stack trace and a
reproducer to Teresa.

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

7 years agoRevert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."
Daniel Jasper [Fri, 30 Jun 2017 06:32:21 +0000 (06:32 +0000)]
Revert "r306473 - re-commit r306336: Enable vectorizer-maximize-bandwidth by default."

This still breaks PPC tests we have. I'll forward reproduction
instructions to dehao.

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

7 years agoRewrite demangle memory handling.
Eric Christopher [Fri, 30 Jun 2017 05:38:56 +0000 (05:38 +0000)]
Rewrite demangle memory handling.
The return of itaniumDemangle is allocated with malloc rather than new[]
and so using unique_ptr isn't called for here. As a note for the future
we should rewrite it to do this.

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

7 years ago[SCEV] Use depth limit instead of local cache for SExt and ZExt
Max Kazantsev [Fri, 30 Jun 2017 05:04:09 +0000 (05:04 +0000)]
[SCEV] Use depth limit instead of local cache for SExt and ZExt

In rL300494 there was an attempt to deal with excessive compile time on
invocations of getSign/ZeroExtExpr using local caching. This approach only
helps if we request the same SCEV multiple times throughout recursion. But
in the bug PR33431 we see a case where we request different values all the time,
so caching does not help and the size of the cache grows enormously.

In this patch we remove the local cache for this methods and add the recursion
depth limit instead, as we do for arithmetics. This gives us a guarantee that the
invocation sequence is limited and reasonably short.

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

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

7 years agoTry to appease a buildbot.
Vedant Kumar [Fri, 30 Jun 2017 04:04:44 +0000 (04:04 +0000)]
Try to appease a buildbot.

The failure is:
C:\ps4-buildslave2\llvm-clang-x86_64-expensive-checks-win\llvm\unittests\ProfileData\CoverageMappingTest.cpp(244):
error C2668: 'llvm::make_unique': ambiguous call to overloaded function

http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/3489/

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

7 years agoReduce indenting and clean up comparisons around sign bit.
Eric Christopher [Fri, 30 Jun 2017 01:57:48 +0000 (01:57 +0000)]
Reduce indenting and clean up comparisons around sign bit.

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

7 years agoChange the type of Undecorated to unique_ptr<char[]> since we're looking at a null...
Eric Christopher [Fri, 30 Jun 2017 01:45:56 +0000 (01:45 +0000)]
Change the type of Undecorated to unique_ptr<char[]> since we're looking at a null terminated string and not a single character.

Fixes an error in tcmalloc sized delete checking.

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

7 years agoReduce the complexity of the signbit/branch test functions.
Eric Christopher [Fri, 30 Jun 2017 01:35:31 +0000 (01:35 +0000)]
Reduce the complexity of the signbit/branch test functions.

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

7 years ago[Dominators] Don't compute DFS InOut numbers eagerly.
Jakub Kuderski [Fri, 30 Jun 2017 01:28:21 +0000 (01:28 +0000)]
[Dominators] Don't compute DFS InOut numbers eagerly.

Summary:
DFS InOut numbers currently get eagerly computer upon DomTree construction. They are only needed to answer dome dominance queries and they get invalidated by updates and recalculations. Because of that, it is faster in practice to compute them lazily when they are actually needed.

Clang built without this patch takes 6m 45s to boostrap on my machine, and with the patch applied 6m 38s.

Reviewers: sanjoy, dberlin, chandlerc

Reviewed By: dberlin

Subscribers: davide, llvm-commits

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

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