Commit Graph

148419 Commits

Author SHA1 Message Date
Matt Arsenault
ba657060a1 [ValueTracking] Teach isSafeToSpeculativelyExecute() about the speculatable attribute
Patch by Tom Stellard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301688 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 21:13:09 +00:00
Sam Clegg
649003c411 [WebAssembly] Write initial memory in pages not bytes
Subscribers: jfb, dschuff

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301687 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 21:12:09 +00:00
Matt Arsenault
8c9ed246f2 TableGen: Add IntrHasSideEffects property for intrinsics
The IntrNoMem, IntrReadMem, IntrWriteMem, and IntrArgMemOnly intrinsic
properties differ from their corresponding LLVM IR attributes by specifying
that the intrinsic, in addition to its memory properties, has no other side
effects.

The IntrHasSideEffects flag used in combination with one of the memory flags
listed above, makes it possible to define an intrinsic such that its
properties at the CodeGen layer match its properties at the IR layer.

Patch by Tom Stellard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301685 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 21:01:46 +00:00
Reid Kleckner
52b0228949 Make getParamAlignment use argument numbers
The method is called "get *Param* Alignment", and is only used for
return values exactly once, so it should take argument indices, not
attribute indices.

Avoids confusing code like:
  IsSwiftError = CS->paramHasAttr(ArgIdx, Attribute::SwiftError);
  Alignment  = CS->getParamAlignment(ArgIdx + 1);

Add getRetAlignment to handle the one case in Value.cpp that wants the
return value alignment.

This is a potentially breaking change for out-of-tree backends that do
their own call lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301682 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:34:27 +00:00
Matthias Braun
6ee52fe873 GlobalISel: Followup for r301679
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301681 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:31:49 +00:00
Matt Arsenault
ea376dae25 Add speculatable function attribute
This attribute tells the optimizer that the function may be speculated.

Patch by Tom Stellard

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301680 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:25:27 +00:00
Matthias Braun
81de60661c TargetLowering: Add finalizeLowering() function; NFC
Adds a new method finalizeLowering to TargetLoweringBase. This is in
preparation for an upcoming commit.

This function is meant for target specific adjustments to
MachineFrameInfo or register reservations.

Move the freezeRegisters() and the hasCopyImplyingStackAdjustment()
handling into the new function to prove the concept. As an added bonus
GlobalISel no longer missed the hasCopyImplyingStackAdjustment()
handling with this.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301679 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:25:05 +00:00
Marek Olsak
007530e1a2 AMDGPU: Add new amdgcn.init.exec intrinsics
v2: More tests, bug fixes, cosmetic changes.

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, llvm-commits, t-tye

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301677 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:21:58 +00:00
Bob Haarman
95da3656ba limit to 2 parallel links when using thinlto
Summary:
When using ThinLTO, the linker performs its own parallelism. This
change limits the number of parallel link jobs that Ninja will issue
to keep the total number of threads reasonable when linking with
ThinLTO.

Reviewers: hans, ruiu

Subscribers: mgorny, mehdi_amini, Prazek

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301676 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 20:17:15 +00:00
Daniel Berlin
e2c5126dbb Kill off the old SimplifyInstruction API by converting remaining users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301673 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 19:55:38 +00:00
Davide Italiano
9bf5832d12 [IPO/MergeFunctions] This function is used only under DEBUG().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301672 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 19:39:45 +00:00
Reid Kleckner
10a02ec96b [RS4GC] Simplify attribute handling code NFC
Avoids use of AttributeList::getNumSlots, making it easier to change the
underlying implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301671 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 19:22:40 +00:00
Reid Kleckner
331b9af31d Use Argument::hasAttribute and AttributeList::ReturnIndex more
This eliminates many extra 'Idx' induction variables in loops over
arguments in CodeGen/ and Target/. It also reduces the number of places
where we assume that ReturnIndex is 0 and that we should add one to
argument numbers to get the corresponding attribute list index.

NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301666 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 18:37:16 +00:00
Adrian Prantl
4e397d9e33 Cleanup: Use DIExpression::prepend in buildDbgValueForSpill(). (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301665 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 18:30:36 +00:00
Reid Kleckner
a8aa665131 [IR] Delete unused Argument::removeAttr overload
It doesn't make sense to remove an AttributeList from an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301663 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 17:58:18 +00:00
Adrian Prantl
2a5bddd278 Clean up DIExpression::prependDIExpr a little. (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301662 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 17:51:05 +00:00
Peter Collingbourne
b64e9f11ab Bitcode: Do not remove empty summary entries when reading a per-module summary.
This became no longer necessary after D19462 landed, and will be incompatible
with an upcoming change to the summary data structures that changes how we
represent references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301660 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 17:41:43 +00:00
Saleem Abdulrasool
b73a15109d IR: fix some doxygen grammar (NFC)
Fix a bit of the doxygen grammar that was off that I noticed while
looking at this file for another issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301658 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 17:18:28 +00:00
Craig Topper
78b412f427 [APInt] Add clearSignBit method. Use it and setSignBit in a few places. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301656 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:58:05 +00:00
Craig Topper
f743447b5e [LazyValueInfo] Fix typo in comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301655 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:57:59 +00:00
Craig Topper
b08a076cbf [ValueTracking] Use APInt::isSubsetOf and APInt::intersects. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301654 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:57:55 +00:00
Alexei Starovoitov
c01803866e [bpf] add bigendian support to disassembler
. swap 4-bit register encoding, 16-bit offset and 32-bit imm to support big endian archs
. add a test

Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301653 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:51:01 +00:00
Tim Northover
0bda850299 CMake: ignore git stderr when trying to sort out revision. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301650 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:06:00 +00:00
Jun Bum Lim
98e89d3bb4 [InlineCost] Improve the cost heuristic for Switch
Summary:
The motivation example is like below which has 13 cases but only 2 distinct targets

```
lor.lhs.false2:                                   ; preds = %if.then
  switch i32 %Status, label %if.then27 [
    i32 -7012, label %if.end35
    i32 -10008, label %if.end35
    i32 -10016, label %if.end35
    i32 15000, label %if.end35
    i32 14013, label %if.end35
    i32 10114, label %if.end35
    i32 10107, label %if.end35
    i32 10105, label %if.end35
    i32 10013, label %if.end35
    i32 10011, label %if.end35
    i32 7008, label %if.end35
    i32 7007, label %if.end35
    i32 5002, label %if.end35
  ]
```
which is compiled into a balanced binary tree like this on AArch64 (similar on X86)

```
.LBB853_9:                              // %lor.lhs.false2
        mov     w8, #10012
        cmp             w19, w8
        b.gt    .LBB853_14
// BB#10:                               // %lor.lhs.false2
        mov     w8, #5001
        cmp             w19, w8
        b.gt    .LBB853_18
// BB#11:                               // %lor.lhs.false2
        mov     w8, #-10016
        cmp             w19, w8
        b.eq    .LBB853_23
// BB#12:                               // %lor.lhs.false2
        mov     w8, #-10008
        cmp             w19, w8
        b.eq    .LBB853_23
// BB#13:                               // %lor.lhs.false2
        mov     w8, #-7012
        cmp             w19, w8
        b.eq    .LBB853_23
        b       .LBB853_3
.LBB853_14:                             // %lor.lhs.false2
        mov     w8, #14012
        cmp             w19, w8
        b.gt    .LBB853_21
// BB#15:                               // %lor.lhs.false2
        mov     w8, #-10105
        add             w8, w19, w8
        cmp             w8, #9          // =9
        b.hi    .LBB853_17
// BB#16:                               // %lor.lhs.false2
        orr     w9, wzr, #0x1
        lsl     w8, w9, w8
        mov     w9, #517
        and             w8, w8, w9
        cbnz    w8, .LBB853_23
.LBB853_17:                             // %lor.lhs.false2
        mov     w8, #10013
        cmp             w19, w8
        b.eq    .LBB853_23
        b       .LBB853_3
.LBB853_18:                             // %lor.lhs.false2
        mov     w8, #-7007
        add             w8, w19, w8
        cmp             w8, #2          // =2
        b.lo    .LBB853_23
// BB#19:                               // %lor.lhs.false2
        mov     w8, #5002
        cmp             w19, w8
        b.eq    .LBB853_23
// BB#20:                               // %lor.lhs.false2
        mov     w8, #10011
        cmp             w19, w8
        b.eq    .LBB853_23
        b       .LBB853_3
.LBB853_21:                             // %lor.lhs.false2
        mov     w8, #14013
        cmp             w19, w8
        b.eq    .LBB853_23
// BB#22:                               // %lor.lhs.false2
        mov     w8, #15000
        cmp             w19, w8
        b.ne    .LBB853_3
```
However, the inline cost model estimates the cost to be linear with the number
of distinct targets and the cost of the above switch is just 2 InstrCosts.
The function containing this switch is then inlined about 900 times.

This change use the general way of switch lowering for the inline heuristic. It
etimate the number of case clusters with the suitability check for a jump table
or bit test. Considering the binary search tree built for the clusters, this
change modifies the model to be linear with the size of the balanced binary
tree. The model is off by default for now :
  -inline-generic-switch-cost=false

This change was originally proposed by Haicheng in D29870.

Reviewers: hans, bmakam, chandlerc, eraman, haicheng, mcrosier

Reviewed By: hans

Subscribers: joerg, aemerson, llvm-commits, rengolin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301649 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 16:04:03 +00:00
Simon Pilgrim
a91ff63def Move variable local to where ita used. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301646 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 14:42:15 +00:00
Teresa Johnson
4a6d61ac00 Memory intrinsic value profile optimization: Avoid divide by 0
Summary:
Skip memops if the total value profiled count is 0, we can't correctly
scale up the counts and there is no point anyway.

Reviewers: davidxl

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301645 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 14:30:54 +00:00
Simon Pilgrim
053e5ff4f2 [DAGCombiner] Add ComputeNumSignBits vector demanded elements support to ASHR and INSERT_VECTOR_ELT (reapplied)
Reapplied r299221 after fix for nondeterminism in ThinLTO builder (rL301599), with extra check for implicit truncation of inserted element.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301644 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 13:21:18 +00:00
Simon Pilgrim
3f8cc3a1fa [X86][SSE] Added new tests from D32416 to show codegen delta
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301641 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 11:53:08 +00:00
Simon Pilgrim
3687a706a6 [X86][SSE] Renames all ones test to better match type.
Added 8f32/4f64 optsize tests discussed on D32416

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301639 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 11:12:30 +00:00
Simon Pilgrim
3ab21de299 [X86][SSE] Add codegen test for _mm_set_pd1 (PR32827)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301638 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 10:31:42 +00:00
Diana Picus
bfa8af672c [ARM] GlobalISel: fixup r301632
Actually remove ARMInstructionSelector.h... Forgot to stage the removal
in the previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301633 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 09:20:31 +00:00
Diana Picus
86a97982f2 [ARM] GlobalISel: Get rid of ARMInstructionSelector.h. NFC.
Declare the ARMInstructionSelector in an anonymous namespace, to make it
more in line with the other targets which were migrated to this in
r299637 in order to avoid TableGen'erated headers being included in
non-GlobalISel builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301632 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 09:10:38 +00:00
George Rimar
c939b6ae1d [DWARF] - Fix mistype in dump output of pub* tables. NFC.
There was a garbage character in output introduced by myself in
r290040 "[DWARF] - Introduce DWARFDebugPubTable class for dumping pub* sections."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301631 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 08:54:10 +00:00
Andrew Ng
9d0dc96310 [DebugInfo][X86] Improve X86 Optimize LEAs handling of debug values.
This is a follow up to the fix in r298360 to improve the handling of debug
values when redundant LEAs are removed. The fix in r298360 effectively
discarded the debug values. This patch now attempts to preserve the debug
values by using the DWARF DW_OP_stack_value operation via prependDIExpr.

Moved functions appendOffset and prependDIExpr from Local.cpp to
DebugInfoMetadata.cpp and made them available as static member functions of
DIExpression.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301630 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 08:44:30 +00:00
Craig Topper
0542dc78c1 [WebAssembly] Update calls to computeKnownBits after the changes from r301620.
I didn't realize WebAssembly wasn't a default build target so I missed that changes were needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301629 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 08:15:33 +00:00
Clement Courbet
f3cedbee5b [X86][NFC] Refactor RepMovsRepeats in preparation for D32481.
Differential Revision: https://reviews.llvm.org/D32583

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301628 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 07:56:31 +00:00
Diana Picus
437c585311 [ARM] GlobalISel: Tighten test. NFC
Explicitly check types and load sizes in the IRTranslator test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301627 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 07:50:47 +00:00
Craig Topper
955683a5c6 [ValueTracking] Convert computeKnownBitsFromRangeMetadata to use KnownBits struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301626 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 06:28:56 +00:00
Max Kazantsev
6faf1a3c28 [EarlyCSE] Mark the condition of assume intrinsic as true
EarlyCSE should not just ignore assumes. It should use the fact that its condition is true for all dominated instructions.

Reviewers: sanjoy, reames, apilipenko, anna, skatkov

Reviewed By: reames, sanjoy

Subscribers: llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301625 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 06:25:39 +00:00
Max Kazantsev
49ccc8d7cb [EarlyCSE] Remove guards with conditions known to be true
If a condition is calculated only once, and there are multiple guards on this condition, we should be able
to remove all guards dominated by the first of them. This patch allows EarlyCSE to try to find the condition
of a guard among the known values, and if it is true, remove the guard. Otherwise we keep the guard and
mark its condition as 'true' for future consideration.

Reviewers: sanjoy, reames, apilipenko, skatkov, anna, dberlin

Reviewed By: reames, sanjoy

Subscribers: llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301623 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 06:05:48 +00:00
Craig Topper
8b430f87e6 [SelectionDAG] Use KnownBits struct in DAG's computeKnownBits and simplifyDemandedBits
This patch replaces the separate APInts for KnownZero/KnownOne with a single KnownBits struct. This is similar to what was done to ValueTracking's version recently.

This is largely a mechanical transformation from KnownZero to Known.Zero.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301620 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 05:31:46 +00:00
Craig Topper
cdfc3cbcb5 [SelectionDAG] Use various APInt methods to reduce temporary APInt creation
This patch uses various APInt methods to reduce the number of temporary APInts. These were all found while working through converting SelectionDAG's computeKnownBits to also use the KnownBits struct recently added to the ValueTracking version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301618 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 04:57:59 +00:00
Sanjoy Das
afd31bcedd Remove unnecessary semicolon
This shows up as a -Wpendatic error on GCC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301616 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 04:49:32 +00:00
Sanjoy Das
edb3c90b17 [StackMaps] Increase the size of the "location size" field
Summary:
In some cases LLVM (especially the SLP vectorizer) will create vectors
that are 256 bytes (or larger).  Given that this is intentional[0] is
likely to get more common, this patch updates the StackMap binary
format to deal with the spill locations for said vectors.

This change also bumps the stack map version from 2 to 3.

[0]: https://reviews.llvm.org/D32533#738350

Reviewers: reames, kavon, skatkov, javed.absar

Subscribers: mcrosier, nemanjai, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301615 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 04:48:42 +00:00
Saleem Abdulrasool
df4f50c81f COFF Import: expose both symbols
COFF Import libraries which use the obsolete CONSTANT export are
supposed to get two symbols, one with the `_imp_` prefix and one
without.  Ensure that we expose both for iteration.  This is necessary
to fix the librarian with COFF CONSTANT exports.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301614 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 04:29:43 +00:00
Craig Topper
a7fa95c0e5 [APInt] Use inplace shift methods where possible. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301612 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 03:36:24 +00:00
Zachary Turner
a102628313 [llvm-pdbdump] Allow printing only a portion of a stream.
When dumping raw data from a stream, you might know the offset
of a certain record you're interested in, as well as how long
that record is.  Previously, you had to dump the entire stream
and wade through the bytes to find the interesting record.

This patch allows you to specify an offset and length on the
command line, and it will only dump the requested range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301607 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 00:43:38 +00:00
Sam Clegg
4275ee9fcb [WebAssembly] Add some tests for wasm MC layer
Subscribers: jfb, dschuff

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301606 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-28 00:36:36 +00:00
Davide Italiano
6b435e94b7 [SROA] Fix nondeterminism exposed by Simon's r299221.
Use a SmallSetSetVector instead of a SmallPtrSet as iterating
over the latter is not stable ('<' relies on addresses).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301599 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-27 23:09:01 +00:00
Frederich Munch
b6e6c85f4f Fix a few pedantic warnings.
Reviewers: zturner, hansw, hans

Reviewed By: hans

Subscribers: hans, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301595 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-27 22:10:57 +00:00