OSDN Git Service
Daniel Sanders [Wed, 26 Jul 2017 10:20:56 +0000 (10:20 +0000)]
[globalisel][tablegen] Fuse the generated tables together.
Summary:
Now that we have control flow in place, fuse the per-rule tables into a
single table. This is a compile-time saving at this point. However, this will
also enable the optimization of a table so that similar instructions can be
tested together, reducing the time spent on the matching the code.
This is NFC in terms of externally visible behaviour but some internals have
changed slightly. State.MIs is no longer reset between each rule that is
attempted because it's not necessary to do so. As a consequence of this the
restriction on the order that instructions are added to State.MIs has been
relaxed to only affect recorded instructions that require new elements to be
added to the vector. GIM_RecordInsn can now write to any element from 1 to
State.MIs.size() instead of just State.MIs.size().
Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar
Reviewed By: rovka
Subscribers: kristof.beyls, igorb, llvm-commits
Differential Revision: https://reviews.llvm.org/D35681
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309094
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 26 Jul 2017 10:20:49 +0000 (10:20 +0000)]
[X86][FMA] Regenerate test with broadcast comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309093
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Kornienko [Wed, 26 Jul 2017 10:14:55 +0000 (10:14 +0000)]
Follow up for r307085: a better fix for a dangling StringRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309092
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Wed, 26 Jul 2017 09:25:15 +0000 (09:25 +0000)]
[ARM] GlobalISel: Mark G_GLOBAL_VALUE as legal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309090
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Wed, 26 Jul 2017 09:09:56 +0000 (09:09 +0000)]
[libOption] - Add flag allowing to print options aliases in help text.
By default, we display only options that are not
hidden and have help texts. This patch adds flag
allowing to display aliases that have no help text.
In this case help text of aliased option used instead.
Differential revision: https://reviews.llvm.org/D35476
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309087
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 26 Jul 2017 08:10:14 +0000 (08:10 +0000)]
[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess.
This patch expands the support of lowerInterleavedStore to 32x8i stride 4.
LLVM creates suboptimal shuffle code-gen for AVX2. In overall, this patch is a specific fix for the pattern (Strid=4 VF=32) and we plan to include more patterns in the future. To reach our goal of "more patterns". We include two mask creators. The first function creates shuffle's mask equivalent to unpacklo/unpackhi instructions. The other creator creates mask equivalent to a concat of two half vectors(high/low).
The patch goal is to optimize the following sequence:
At the end of the computation, we have ymm2, ymm0, ymm12 and ymm3 holding
each 32 chars:
c0, c1, , c31
m0, m1, , m31
y0, y1, , y31
k0, k1, ., k31
And these need to be transposed/interleaved and stored like so:
c0 m0 y0 k0 c1 m1 y1 k1 c2 m2 y2 k2 c3 m3 y3 k3 ....
Reviewers:
dorit
Farhana
RKSimon
guyblank
DavidKreitzer
Differential Revision: https://reviews.llvm.org/D34601
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309086
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 26 Jul 2017 08:06:58 +0000 (08:06 +0000)]
TargetLowering: Change isShuffleMaskLegal's mask argument type to ArrayRef<int>. NFCI.
Changing mask argument type from const SmallVectorImpl<int>& to
ArrayRef<int>.
This came up in D35700 where a mask is received as an ArrayRef<int> and
we want to pass it to TargetLowering::isShuffleMaskLegal().
Also saves a few lines of code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309085
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 26 Jul 2017 07:45:02 +0000 (07:45 +0000)]
[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess part1.
splitting patch D34601 into two part. This part changes the location of two functions.
The second part will be based on that patch. This was requested by @RKSimon.
Reviewers:
1. dorit
2. Farhana
3. RKSimon
4. guyblank
5. DavidKreitzer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309084
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Wed, 26 Jul 2017 04:55:54 +0000 (04:55 +0000)]
[SCEV] Cache results of computeExitLimit
This patch adds a cache for computeExitLimit to save compilation time. A lot of examples of
tests that take extensive time to compile are attached to the bug 33494.
Differential Revision: https://reviews.llvm.org/D35827
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309080
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 26 Jul 2017 04:31:04 +0000 (04:31 +0000)]
[X86] Prevent selecting masked aligned load instructions if the load should be non-temporal
Summary: The aligned load predicates don't suppress themselves if the load is non-temporal the way the unaligned predicates do. For the most part this isn't a problem because the aligned predicates are mostly used for instructions that only load the the non-temporal loads have priority over those. The exception are masked loads.
Reviewers: RKSimon, zvi
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D35712
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309079
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Wed, 26 Jul 2017 02:00:43 +0000 (02:00 +0000)]
Add test coverage for new PM PGOOpt handling.
Summary: This patch adds flags and tests to cover the PGOOpt handling logic in new PM.
Reviewers: chandlerc, davide
Reviewed By: chandlerc
Subscribers: sanjoy, llvm-commits
Differential Revision: https://reviews.llvm.org/D35807
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309076
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 26 Jul 2017 01:47:17 +0000 (01:47 +0000)]
[gold] Enable data-sections by default for the gold-plugin.
Follow up to r309056.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309075
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Wed, 26 Jul 2017 01:34:46 +0000 (01:34 +0000)]
Add "REQUIRES: asserts" for test unswitch-equality-undef.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309073
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 26 Jul 2017 01:32:19 +0000 (01:32 +0000)]
[SCEV] Remove unnecessary call to forgetMemoizedResults
`SCEVUnknown::allUsesReplacedWith` does not need to call `forgetMemoizedResults`
since RAUW does a value-equivalent replacement by assumption. If this
assumption was false then the later setValPtr(New) call would be incorrect too.
This is a non-trivial performance optimization for functions with a large number
of loops since `forgetMemoizedResults` walks all loop backedge taken counts to
see if any of them use the SCEVUnknown being RAUWed. However, this improvement
is difficult to demonstrate without checking in an excessively large IR file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309072
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 26 Jul 2017 01:27:18 +0000 (01:27 +0000)]
[lit] Attempt to fix Python unittest adaptor logic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309071
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Wed, 26 Jul 2017 01:21:55 +0000 (01:21 +0000)]
Move manifest utils into separate lib, to reduce libxml2 deps.
Summary:
Previously were in support. Since many many things depend on support,
were all forced to also depend on libxml2, which we only want in a few cases.
This puts all the libxml2 deps in a separate lib to be used only in a few
places.
Reviewers: ruiu, thakis, rnk
Subscribers: mgorny, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D35819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309070
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 26 Jul 2017 00:58:49 +0000 (00:58 +0000)]
[PDB] Remove stale GSI.h header that I intended to remove in the previous commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309069
91177308-0d34-0410-b5e6-
96231b3b80d8
Spyridoula Gravani [Wed, 26 Jul 2017 00:52:31 +0000 (00:52 +0000)]
[DWARF] Generalized verification of .apple_names accelerator table to be applicable to any acceleration table. Added verification for .apple_types, .apple_namespaces and .apple_objc sections.
Differential Revision: https://reviews.llvm.org/D35853
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309068
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 26 Jul 2017 00:40:36 +0000 (00:40 +0000)]
[PDB] Improve GSI hash table dumping for publics and globals
The PDB "symbol stream" actually contains symbol records for the publics
and the globals stream. The globals and publics streams are essentially
hash tables that point into a single stream of records. In order to
match cvdump's behavior, we need to only dump symbol records referenced
from the hash table. This patch implements that, and then implements
global stream dumping, since it's just a subset of public stream
dumping.
Now we shouldn't see S_PROCREF or S_GDATA32 records when dumping
publics, and instead we should see those record in the globals stream.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309066
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Wed, 26 Jul 2017 00:25:12 +0000 (00:25 +0000)]
Reapply "llvm-mt: implement simple merging of manifests, not factoring namespaces.
This time with correct #if.
This reverts commit
9cf4eca0e0383040c1ff1416815c7f649650c2a0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309064
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Tue, 25 Jul 2017 23:51:02 +0000 (23:51 +0000)]
[AArch64] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309062
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Tue, 25 Jul 2017 23:37:17 +0000 (23:37 +0000)]
Disable loop unswitching for some patterns containing equality comparison with undef.
This is a workaround for the bug described in PR31652 and
http://lists.llvm.org/pipermail/llvm-dev/2017-July/115497.html. The temporary
solution is to add a function EqualityPropUnSafe. In EqualityPropUnSafe, for
some simple patterns we can know the equality comparison may contains undef,
so we regard such comparison as unsafe and will not do loop-unswitching for
them. We also need to disable the select simplification when one of select
operand is undef and its result feeds into equality comparison.
The patch cannot clear the safety issue caused by the bug, but it can suppress
the issue from happening to some extent.
Differential Revision: https://reviews.llvm.org/D35811
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309059
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Tue, 25 Jul 2017 23:32:59 +0000 (23:32 +0000)]
Debug Info: Support fragmented variables in the MMI side table
This reapplies commit r309034 with a bugfix+test for inlined variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309057
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 25 Jul 2017 23:32:50 +0000 (23:32 +0000)]
[gold] Enable function-sections by default.
This is needed, among others, to respect --section-ordering-file
with LTO. I'll follow up with a similar change for data sections.
I hope every version of gold available on the bots has support for
--section-ordering file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309056
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Tue, 25 Jul 2017 23:06:46 +0000 (23:06 +0000)]
Revert "llvm-mt: implement simple merging of manifests, not factoring namespaces."
This reverts commit
813308e240792ca70ed2f998f21df24a5061ada0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309050
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Beckmann [Tue, 25 Jul 2017 22:50:25 +0000 (22:50 +0000)]
llvm-mt: implement simple merging of manifests, not factoring namespaces.
Summary:
Does a simple merge, where mergeable elements are combined, all others
are appended. Does not apply trickly namespace rules.
Subscribers: llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D35753
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309047
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Tue, 25 Jul 2017 22:39:52 +0000 (22:39 +0000)]
Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started""
This reverts commit
0d9d9250483761eb2f50236830161b0e2137d483.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309045
91177308-0d34-0410-b5e6-
96231b3b80d8
Michal Gorny [Tue, 25 Jul 2017 22:38:31 +0000 (22:38 +0000)]
[lit] Fix UnboundLocalError for invalid shtest redirects
Replace the incorrect variable reference when invalid redirect is used.
This fixes the following issue:
File "/usr/src/llvm/utils/lit/lit/TestRunner.py", line 316, in processRedirects
raise InternalShellError(cmd, "Unsupported redirect: %r" % (r,))
UnboundLocalError: local variable 'r' referenced before assignment
which in turn broke shtest-shell.py and max-failures.py lit tests.
The breakage was introduced during refactoring in rL307310.
Differential Revision: https://reviews.llvm.org/D35857
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309044
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Tue, 25 Jul 2017 22:38:08 +0000 (22:38 +0000)]
Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).
This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D33964
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309043
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 25 Jul 2017 22:21:08 +0000 (22:21 +0000)]
Update the comments on default subtargets based on feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309041
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 25 Jul 2017 22:05:31 +0000 (22:05 +0000)]
[libFuzzer] don't disable msan for TracePC::CollectFeatures: this started to cause false positives in msan. No tests for libFuzzer+msan yet -- tests will need to wait until we move libFuzzer to compiler-rt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309038
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Tue, 25 Jul 2017 21:55:00 +0000 (21:55 +0000)]
Revert "Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started""
This reverts commit
960873b10dd071298c817ba74ef2228f94ead7a1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309037
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Tue, 25 Jul 2017 21:50:45 +0000 (21:50 +0000)]
Revert "Debug Info: Support fragmented variables in the MMI side table"
This reverts commit r309034 because of a sanitizer issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309035
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Tue, 25 Jul 2017 21:29:22 +0000 (21:29 +0000)]
Debug Info: Support fragmented variables in the MMI side table
<rdar://problem/
17816343>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309034
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Tue, 25 Jul 2017 21:16:33 +0000 (21:16 +0000)]
Reland "[LLVM][llvm-objcopy] Added basic plumbing to get things started"
As discussed on llvm-dev I've implemented the first basic steps towards
llvm-objcopy/llvm-objtool (name pending).
This change adds the ability to copy (without modification) 64-bit
little endian ELF executables that have SHT_PROGBITS, SHT_NOBITS,
SHT_NULL and SHT_STRTAB sections.
Patch by Jake Ehrlich
Differential Revision: https://reviews.llvm.org/D33964
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309032
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Tue, 25 Jul 2017 21:13:18 +0000 (21:13 +0000)]
[CMAKE] Speedup developer builds when passing LLVM_APPEND_VC_REV = OFF
Make sure multiple targets don't get rebuilt unnecessarily when LLVM_APPEND_VC_REV = OFF.
Differential Revision: https://reviews.llvm.org/D35377
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309031
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 25 Jul 2017 20:58:14 +0000 (20:58 +0000)]
[CMake] Fix broken builds from r309029
Fixing the mismatched beginning if and endif contents.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309030
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 25 Jul 2017 20:53:31 +0000 (20:53 +0000)]
[CMake] Allow TableGen.cmake to be included multiple times
This patch allows TableGen.cmake to be safely included multiple times in sub-projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309029
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 25 Jul 2017 20:37:03 +0000 (20:37 +0000)]
AMDGPU/SI: Fix Depth and Height computation for SI scheduler
Patch by: Axel Davy
Differential Revision: https://reviews.llvm.org/D34967
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309028
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 25 Jul 2017 20:36:58 +0000 (20:36 +0000)]
AMDGPU/SI: Force exports at the end for SI scheduler
Patch by: Axel Davy
Differential Revision: https://reviews.llvm.org/D34965
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309027
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Tue, 25 Jul 2017 19:57:26 +0000 (19:57 +0000)]
[AArch64] Update a comment in a test
The comment ended up outdated when the test was rewritten in SVN r192281.
Differential Revision: https://reviews.llvm.org/D35543
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309016
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Tue, 25 Jul 2017 19:57:22 +0000 (19:57 +0000)]
[AArch64] Add a test for float argument passing to win64 vararg functions
The existing tests only tested how a va_start is lowered.
Differential Revision: https://reviews.llvm.org/D35540
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309015
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 25 Jul 2017 19:42:32 +0000 (19:42 +0000)]
[LTO] Prevent dead stripping and internalization of symbols with sections
Summary:
ELF linkers generate __start_<secname> and __stop_<secname> symbols
when there is a value in a section <secname> where the name is a valid
C identifier. If dead stripping determines that the values declared
in section <secname> are dead, and we then internalize (and delete)
such a symbol, programs that reference the corresponding start and end
section symbols will get undefined reference linking errors.
To fix this, add the section name to the IRSymtab entry when a symbol is
defined in a specific section. Then use this in the gold-plugin to mark
the symbol as external and visible from outside the summary when the
section name is a valid C identifier.
Reviewers: pcc
Subscribers: mehdi_amini, inglorion, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D35639
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309009
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 25 Jul 2017 19:22:09 +0000 (19:22 +0000)]
Revert "This patch enables the usage of constant Enum identifiers within Microsoft style inline assembly statements."
This reverts commit r308966.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309005
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Tue, 25 Jul 2017 18:26:35 +0000 (18:26 +0000)]
[PowerPC] Pretty-print CR bits the way the binutils disassembler does
This patch just adds printing of CR bit registers in a more human-readable
form akin to that used by the GNU binutils.
Differential Revision: https://reviews.llvm.org/D31494
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309001
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Tue, 25 Jul 2017 17:54:51 +0000 (17:54 +0000)]
[PowerPC] - Recommit r304907 now that the issue has been fixed
This is just a recommit since the issue that the commit exposed is now
resolved.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308995
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Hines [Tue, 25 Jul 2017 17:52:55 +0000 (17:52 +0000)]
[docs] Fix a typo: iteratation -> iteration
Reviewers: dgross
Reviewed By: dgross
Subscribers: dgross, llvm-commits
Differential Revision: https://reviews.llvm.org/D35822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308994
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 25 Jul 2017 17:04:37 +0000 (17:04 +0000)]
[X86][CGP] Reduce memcmp() expansion to 2 load pairs (PR33914)
D35067/rL308322 attempted to support up to 4 load pairs for memcmp inlining which resulted in regressions for some optimized libc memcmp implementations (PR33914).
Until we can match these more optimal cases, this patch reduces the memcmp expansion to a maximum of 2 load pairs (which matches what we do for -Os).
This patch should be considered for the 5.0.0 release branch as well
Differential Revision: https://reviews.llvm.org/D35830
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308986
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 25 Jul 2017 16:36:44 +0000 (16:36 +0000)]
[DAG] Move DAGCombiner::GetDemandedBits to SelectionDAG
This patch moves the DAGCombiner::GetDemandedBits function to SelectionDAG::GetDemandedBits as a first step towards making it easier for targets to get to the source of any demanded bits without the limitations of SimplifyDemandedBits.
Differential Revision: https://reviews.llvm.org/D35841
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308983
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 25 Jul 2017 16:10:32 +0000 (16:10 +0000)]
[X86] Regenerate test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308981
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 25 Jul 2017 16:09:56 +0000 (16:09 +0000)]
[X86] Regenerate test with broadcast comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308980
91177308-0d34-0410-b5e6-
96231b3b80d8
Fedor Sergeev [Tue, 25 Jul 2017 15:28:28 +0000 (15:28 +0000)]
[Sparc] invalid adjustments in TLS_LE/TLS_LDO relocations removed
Summary:
Some SPARC TLS relocations were applying nontrivial adjustments
to zero value, leading to unexpected non-zero values in ELF and then
Solaris linker failures.
Getting rid of these adjustments.
Fixes PR33825.
Reviewers: rafael, asb, jyknight
Subscribers: joerg, jyknight, llvm-commits
Differential Revision: https://reviews.llvm.org/D35567
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308978
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew V. Tischenko [Tue, 25 Jul 2017 13:05:12 +0000 (13:05 +0000)]
X86 Asm uses assertions instead of proper diagnostic. This patch fixes that.
Differential Revision: https://reviews.llvm.org/D35115
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308972
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 25 Jul 2017 10:48:32 +0000 (10:48 +0000)]
[LIR] Teach LIR to avoid extending the BE count prior to adding one to
it when safe.
Very often the BE count is the trip count minus one, and the plus one
here should fold with that minus one. But because the BE count might in
theory be UINT_MAX or some such, adding one before we extend could in
some cases wrap to zero and break when we scale things.
This patch checks to see if it would be safe to add one because the
specific case that would cause this is guarded for prior to entering the
preheader. This should handle essentially all of the common loop idioms
coming out of C/C++ code once canonicalized by LLVM.
Before this patch, both forms of loop in the added test cases ended up
subtracting one from the size, extending it, scaling it up by 8 and then
adding 8 back onto it. This is really silly, and it turns out made it
all the way into generated code very often, so this is a surprisingly
important cleanup to do.
Many thanks to Sanjoy for showing me how to do this with SCEV.
Differential Revision: https://reviews.llvm.org/D35758
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308968
91177308-0d34-0410-b5e6-
96231b3b80d8
Matan Haroush [Tue, 25 Jul 2017 10:44:09 +0000 (10:44 +0000)]
This patch enables the usage of constant Enum identifiers within Microsoft style inline assembly statements.
Differential Revision:
https://reviews.llvm.org/D33277
https://reviews.llvm.org/D33278
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308966
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 25 Jul 2017 10:35:16 +0000 (10:35 +0000)]
[tests] Cleanup vect.omp.persistence.ll test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308964
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 25 Jul 2017 10:33:36 +0000 (10:33 +0000)]
[X86] Add 24-byte memcmp tests (PR33914)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308963
91177308-0d34-0410-b5e6-
96231b3b80d8
Francois Pichet [Tue, 25 Jul 2017 09:40:35 +0000 (09:40 +0000)]
Fix endianness bug in DAGCombiner::visitTRUNCATE and visitEXTRACT_VECTOR_ELT
Summary:
Do not assume little endian architecture in DAGCombiner::visitTRUNCATE and DAGCombiner::visitEXTRACT_VECTOR_ELT.
PR33682
Reviewers: hfinkel, sdardis, RKSimon
Reviewed By: sdardis, RKSimon
Subscribers: uabelho, RKSimon, sdardis, llvm-commits
Differential Revision: https://reviews.llvm.org/D34990
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308960
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 25 Jul 2017 08:51:30 +0000 (08:51 +0000)]
[ARM] Enable partial and runtime unrolling
Enable runtime and partial loop unrolling of simple loops without
calls on M-class cores. The thresholds are calculated based on
whether the target is Thumb or Thumb-2.
Differential Revision: https://reviews.llvm.org/D34619
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308956
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Tue, 25 Jul 2017 06:05:49 +0000 (06:05 +0000)]
[COFF] ARM64 support for COFFImportFile
A test will be committed separately in the lld repo.
Differential Revision: https://reviews.llvm.org/D35766
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308951
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Tue, 25 Jul 2017 05:20:01 +0000 (05:20 +0000)]
[AArch64] Reserve a 16 byte aligned amount of fixed stack for win64 varargs
Create a dummy 8 byte fixed object for the unused slot below the first
stored vararg.
Alternative ideas tested but skipped: One could try to align the whole
fixed object to 16, but I haven't found how to add an offset to the stack
frame used in LowerWin64_VASTART.
If only the size of the fixed stack object size is padded but not the offset, via
MFI.CreateFixedObject(alignTo(GPRSaveSize, 16), -(int)GPRSaveSize, false),
PrologEpilogInserter crashes due to "Attempted to reset backwards range!".
This fixes misconceptions about where registers are spilled, since
AArch64FrameLowering.cpp assumes the offset from fixed objects is
aligned to 16 bytes (and the Win64 case there already manually aligns
the offset to 16 bytes).
This fixes cases where local stack allocations could overwrite callee
saved registers on the stack.
Differential Revision: https://reviews.llvm.org/D35720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308950
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 25 Jul 2017 05:03:17 +0000 (05:03 +0000)]
DWARFVerifier.cpp: Fix -m32 in r308928. Use PRIx64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308949
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 25 Jul 2017 02:09:46 +0000 (02:09 +0000)]
[libFuzzer] make one test faster, fix compiler warnings in tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308945
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 25 Jul 2017 02:07:38 +0000 (02:07 +0000)]
[sanitizer-coverage] simplify the code, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308944
91177308-0d34-0410-b5e6-
96231b3b80d8
Spyridoula Gravani [Tue, 25 Jul 2017 01:58:27 +0000 (01:58 +0000)]
[DWARF] Modified test for die ranges verification so that it doesn't fail on windows hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308943
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 25 Jul 2017 01:44:38 +0000 (01:44 +0000)]
llvm/test/CMakeLists.txt: Add llvm-rc to LLVM_TEST_DEPENDS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308942
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 25 Jul 2017 00:51:40 +0000 (00:51 +0000)]
llvm-rc: Fixup for r308940. This should use LLVMSupport.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308941
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Sokolowski [Tue, 25 Jul 2017 00:25:18 +0000 (00:25 +0000)]
Add an empty shell of llvm-rc.
This starts the development on one of MS Visual Studio binutils,
Resource Converter. The tool compiles resource scripts (.rc)
into binary resource files (.res).
The current implementation does nothing but parse the command
line arguments. It is going to be extended in the future.
Differential Revision: https://reviews.llvm.org/D35810
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308940
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Mon, 24 Jul 2017 23:16:33 +0000 (23:16 +0000)]
[Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308936
91177308-0d34-0410-b5e6-
96231b3b80d8
Spyridoula Gravani [Mon, 24 Jul 2017 21:04:11 +0000 (21:04 +0000)]
[DWARF] Added verification check for die ranges. If highPC is an address, then it should be greater than lowPC for each range.
Differential Revision: https://reviews.llvm.org/D35733
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308928
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 24 Jul 2017 20:48:15 +0000 (20:48 +0000)]
Revert "[X86][InlineAsm][Ms Compatibility]Prefer variable name over a register when the two collides"
This reverts r308867 and r308866.
It broke the sanitizer-windows buildbot on C++ code similar to the
following:
namespace cl { }
void f() {
__asm {
mov al, cl
}
}
t.cpp(4,13): error: unexpected namespace name 'cl': expected expression
mov al, cl
^
In this case, MSVC parses 'cl' as a register, not a namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308926
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 24 Jul 2017 20:33:41 +0000 (20:33 +0000)]
Small tweak to one check in error handling to the dyld compact export
entries in libObject (done in r308690). In the case when the last node
has no children setting State.Current = Children + 1; where that would be past
Trie.end() is actually ok since the pointer is not used with zero children.
rdar://
33490512
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308924
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 24 Jul 2017 19:44:43 +0000 (19:44 +0000)]
Followup to r308890: don't assert the llvm llvm version number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308917
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 24 Jul 2017 19:35:48 +0000 (19:35 +0000)]
[Hexagon] Recognize C4_cmpneqi, C4_cmpltei and C4_cmplteui in NewValueJump
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308914
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 24 Jul 2017 19:34:26 +0000 (19:34 +0000)]
Move DWARFSectionMap to a .cpp file.
Thanks to Paul Robinson for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308913
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 24 Jul 2017 19:28:30 +0000 (19:28 +0000)]
test-release.sh: Fix phase2 and phase3 binary comparision
Summary:
scudo_utils.cpp.o from compiler-rt has one of the host compiler's builtin
include paths stored in the .debug_line section. So we need to do
sed 's,Phase1,Phase2,g` on the Phase2 object file so it matches Phase3.
Reviewers: hans
Reviewed By: hans
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34989
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308912
91177308-0d34-0410-b5e6-
96231b3b80d8
George Karpenkov [Mon, 24 Jul 2017 18:38:14 +0000 (18:38 +0000)]
Revert "Revert "[libFuzzer] Add a dependency on symbolizer from libFuzzer tests""
This reverts commit
15425f2bc6eac6249ee957a2a280511306c07547.
Should work now that atos is a default symbolizer on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308910
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Mon, 24 Jul 2017 18:29:56 +0000 (18:29 +0000)]
Adding base test for interleave store VF16 and expand the test for AVX512
This patch doesn't modifay any non test file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308909
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 24 Jul 2017 18:07:55 +0000 (18:07 +0000)]
RA: Replace asserts related to empty live intervals
These don't exactly assert the same thing anymore, and
allow empty live intervals with non-empty uses.
Removed in r308808 and r308813.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308906
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 24 Jul 2017 18:06:16 +0000 (18:06 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2
Fine tune the resources in a couple of ASIMD loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308904
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 24 Jul 2017 18:06:15 +0000 (18:06 +0000)]
AMDGPU: Fix allocating pseudo-registers
There's no need for these to be part of a class since
they are immediately replaced. New unreachable hit in
existing tests.'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308903
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 24 Jul 2017 17:47:46 +0000 (17:47 +0000)]
Revert "Debug: handle dumping the D language."
Reid beat me to it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308902
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Mon, 24 Jul 2017 17:39:44 +0000 (17:39 +0000)]
Debug: handle dumping the D language.
Mostly just to silence a warning about an unhandled case. There don't seem to
be any tests for this operator (at least that I could find).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308901
91177308-0d34-0410-b5e6-
96231b3b80d8
Leo Li [Mon, 24 Jul 2017 17:26:28 +0000 (17:26 +0000)]
[CMake] Remove redundant logic in runtimes/CMakeList.txt
Summary:
`SUB_CHECK_TARGETS` contains all test targets in `SUB_COMPONENTS` when
we load `Components.cmake`. We don't need to add those targets
again and having duplicate targets will break the cmake policy CMP0002.
Reviewers: phosek
Subscribers: mgorny, llvm-commits, srhines, pirama
Differential Revision: https://reviews.llvm.org/D35692
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308900
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 24 Jul 2017 16:30:44 +0000 (16:30 +0000)]
Add missing case to switch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308894
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 24 Jul 2017 16:18:09 +0000 (16:18 +0000)]
[CodeGenPrepare] Cut off FindAllMemoryUses if there are too many uses.
This avoids excessive compile time. The case I'm looking at is
Function.cpp from an old version of LLVM that still had the giant memcmp
string matcher in it. Before r308322 this compiled in about 2 minutes,
after it, clang takes infinite* time to compile it. With this patch
we're at 5 min, which is still bad but this is a pathological case.
The cut off at 20 uses was chosen by looking at other cut-offs in LLVM
for user scanning. It's probably too high, but does the job and is very
unlikely to regress anything.
Fixes PR33900.
* I'm impatient and aborted after 15 minutes, on the bug report it was
killed after 2h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308891
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 24 Jul 2017 16:16:42 +0000 (16:16 +0000)]
[codeview] Emit 'D' as the cv source language for D code
This matches DMD:
https://github.com/dlang/dmd/blob/
522263965cf3a27ed16b31f3c3562db86cdeabec/src/ddmd/backend/cv8.c#L199
Fixes PR33899.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308890
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 24 Jul 2017 16:16:17 +0000 (16:16 +0000)]
Format some case labels and shrink an anonymous namespace NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308889
91177308-0d34-0410-b5e6-
96231b3b80d8
Ilya Biryukov [Mon, 24 Jul 2017 16:02:29 +0000 (16:02 +0000)]
NFC. Fixed typos in the comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308888
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandre Isoard [Mon, 24 Jul 2017 12:55:00 +0000 (12:55 +0000)]
[DOTGraphTraits] Propagate Graph template argument, NFC
Propagates the GraphT template argument to the default value of
the AnalysisGraphTraitsT template argument. This allows to specialize
the DefaultAnalysisGraphTraits<AnalysisT,GraphT> for analysis with a
graph type different from the analysis type and it will automatically
get picked-up.
Note: This was probably the intended purpose and should not result in any
functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308878
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 24 Jul 2017 12:44:35 +0000 (12:44 +0000)]
Fix spelling in comments. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308877
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Mon, 24 Jul 2017 11:41:30 +0000 (11:41 +0000)]
[LoopInterchange] Update code to use range-based for loops (NFC).
Summary:
The remaining non range-based for loops do not iterate over full ranges,
so leave them as they are.
Reviewers: karthikthecool, blitz.opensource, mcrosier, mkuper, aemerson
Reviewed By: aemerson
Subscribers: aemerson, mzolotukhin, llvm-commits
Differential Revision: https://reviews.llvm.org/D35777
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308872
91177308-0d34-0410-b5e6-
96231b3b80d8
Ayman Musa [Mon, 24 Jul 2017 08:10:32 +0000 (08:10 +0000)]
[X86][AVX512] Add patterns for masked AVX512 floating point compare instructions that were missing.
patterns were missed by D33188. Adding for completion.
+Updating test.
Differential Revesion: https://reviews.llvm.org/D35179
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308868
91177308-0d34-0410-b5e6-
96231b3b80d8
Coby Tayree [Mon, 24 Jul 2017 07:04:55 +0000 (07:04 +0000)]
[X86][InlineAsm][Ms Compatibility]Prefer variable name over a register when the two collides
On MS-style, the following snippet:
int eax;
__asm mov eax, ebx
should yield loading of ebx, into the location pointed by the variable eax
This patch sees to it.
Currently, a reg-to-reg move would have been invoked.
clang: D34740
Differential Revision: https://reviews.llvm.org/D34739
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308866
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sun, 23 Jul 2017 23:39:11 +0000 (23:39 +0000)]
[AVR] Remove the instrumentation pass
I have a much better way of running integration tests now.
https://github.com/dylanmckay/avr-test-suite
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308857
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Sun, 23 Jul 2017 23:00:55 +0000 (23:00 +0000)]
[AVR] Improve the 'icall-func-pointer-correct-addr-space.ll' test
Patch by Carl Peto.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308856
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Sun, 23 Jul 2017 22:30:00 +0000 (22:30 +0000)]
[CodeGen][X86] Fuchsia supports sincos* libcalls and sin+cos->sincos optimization
Patch by Roland McGrath
Differential Revision: https://reviews.llvm.org/D35748
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308854
91177308-0d34-0410-b5e6-
96231b3b80d8
Momchil Velikov [Sun, 23 Jul 2017 22:27:34 +0000 (22:27 +0000)]
Fix typo: GETTER to SETTER (NFC)
Use the CALLSITE_DELEGATE_SETTER macro in CallSiteBase::setCannotDuplicate.
Comitted as obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308853
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Sun, 23 Jul 2017 21:15:10 +0000 (21:15 +0000)]
[AArch64] Add test for function alignment for a optsize function (NFC).
Reviewers: dblaikie, t.p.northover, rengolin
Reviewed By: rengolin
Subscribers: aemerson, rengolin, javed.absar, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D35620
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308852
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Sun, 23 Jul 2017 16:38:08 +0000 (16:38 +0000)]
[AArch64] Redundant Copy Elimination - remove more zero copies.
This patch removes unnecessary zero copies in BBs that are targets of b.eq/b.ne
and we know the result of the compare instruction is zero. For example,
BB#0:
subs w0, w1, w2
str w0, [x1]
b.ne .LBB0_2
BB#1:
mov w0, wzr ; <-- redundant
str w0, [x2]
.LBB0_2
Differential Revision: https://reviews.llvm.org/D35075
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308849
91177308-0d34-0410-b5e6-
96231b3b80d8