Commit Graph

170383 Commits

Author SHA1 Message Date
Craig Topper
c1f3550351 [X86] Merge matchANDXORWithAllOnesAsANDNP into combineANDXORWithAllOnesIntoANDNP. NFCI
It's the only caller and the logic pretty easy to combine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343754 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-04 06:13:27 +00:00
Alex Bradbury
f590076c46 [RISCV][NFC] Fix naming of RISCVISelLowering::{LowerRETURNADDR,LowerFRAMEADDR}
Rename to lowerRETURNADDR, lowerFRAMEADDR in order to be consistent with the 
LLVM coding style and the other functions in this file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343752 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-04 05:27:50 +00:00
Fangrui Song
c3c07bfd73 [llvm-exegesis] Unbreak analysis-uops-variant.test introduced in D52825
A `defined(NDEBUG) && !defined(LLVM_ENABLE_DUMP)` build does not call
writeEscaped and there will be no `SBWriteZeroLatency` in the output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343751 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-04 03:32:47 +00:00
Craig Topper
6fa3b9479f [LegalizeIntegerTypes] Fix typo in comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343750 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-04 02:40:35 +00:00
Derek Schuff
5e1a042afe [WebAssembly] Add WebAssembly to LLVM_ALL_TARGETS
Summary:
After fixing memory leaks in rL343362 and rL343733 the sanitizer builds are
clean and we should be good to build by default again.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343746 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 23:56:52 +00:00
Jordan Rupprecht
59b44e1294 [llvm-nm] Print an explicit "no symbols" message when an object file has no symbols
Summary:
GNU nm (and other nm implementations, such as "go tool nm") prints an explicit "no symbols" message when an object file has no symbols. Currently llvm-nm just doesn't print anything. Adding an explicit "no symbols" message will allow llvm-nm to be used in place of nm: some scripts and build processes use `nm <file> | grep "no symbols"` as a test to see if a file has no symbols. It will also be more familiar to anyone used to nm.

That said, the format implemented here is slightly different, in that it doesn't print the tool name in the message (which IMHO is not useful to include).

Demo:
```
$ for nm in nm bin/llvm-nm ; do echo "nm implementation: $nm"; $nm /tmp/foo{1,2}.o; echo; done
nm implementation: nm

/tmp/foo1.o:
nm: /tmp/foo1.o: no symbols

/tmp/foo2.o:
0000000000000000 T foo2

nm implementation: bin/llvm-nm

/tmp/foo1.o:
no symbols

/tmp/foo2.o:
0000000000000000 T foo2
```

Reviewers: MaskRay

Reviewed By: MaskRay

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343742 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 23:39:49 +00:00
Alex Bradbury
1aba29db25 [RISCV] Handle redundant SplitF64+BuildPairF64 pairs in a DAGCombine
r343712 performed this optimisation during instruction selection. As Eli 
Friedman pointed out in post-commit review, implementing this as a DAGCombine 
might allow opportunities for further optimisations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343741 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 23:30:16 +00:00
Thomas Lively
6f31a46f4a [WebAssembly] Bitselect intrinsic and instruction
Summary: Depends on D52755.

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343739 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 23:02:23 +00:00
Alex Bradbury
093b780cea [RISCV][NFC] Refactor LocVT<->ValVT converstion in RISCVISelLowering
There was some duplicated logic for using the LocInfo of a CCValAssign in 
order to convert from the ValVT to LocVT or vice versa. Resolve this by 
factoring out convertLocVTFromValVT from unpackFromRegLoc. Also rename 
packIntoRegLoc to the more appropriate convertValVTToLocVT and call these 
helper functions consistently.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343737 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 22:53:25 +00:00
Derek Schuff
ab9755b803 [WebAssembly] Refactor WasmSignature and use it for MCSymbolWasm
MCContext does not destroy MCSymbols on shutdown. So, rather than putting
SmallVectors (which may heap-allocate) inside MCSymbolWasm, use unowned pointer
to a WasmSignature instead. The signatures are now owned by the AsmPrinter.
Also uses WasmSignature instead of param and result vectors in TargetStreamer,
and leaves some TODOs for further simplification.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343733 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 22:22:48 +00:00
Daniel Sanders
b95f965d7b [machineverifier] Detect PHI's that are preceeded by non-PHI's
If present, PHI nodes must appear before non-PHI nodes in a basic block. The
register allocator relies on this and will fail to eliminate PHI's that do not
meet this requirement.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343731 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 22:05:31 +00:00
Simon Atanasyan
2f53e1def5 [mips] Remove -allow-deprecated-dag-overlap flag from tests. NFC
Fix DAG check statements in MIPS codegen tests to remove
-allow-deprecated-dag-overlap flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343730 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 22:02:23 +00:00
Sanjay Patel
44cfbc7d13 [InstCombine] allow SimplifyDemandedVectorElts to work with FP binops
We're a long way from D50992 and D51553, but this is where we have to start.
We weren't back-propagating undefs into binop constant values for anything but
add/sub/mul/and/or/xor. 

This is likely because we have to be careful about not introducing UB/poison 
with div/rem/shift. But I suspect we already are getting the poison part wrong 
for add/sub/mul (although it may not be possible to expose the bug currently
because we use SimplifyDemandedVectorElts from a limited set of opcodes).
See the discussion/implementation from D48987 and D49047.

This patch just enables functionality for FP ops because those do not have 
UB/poison potential.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343727 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 21:44:59 +00:00
Heejin Ahn
2058e01475 Make meanings of variables clearer in action table generation (NFC)
Summary:

Reviewers: kristina, zhmu, dschuff, rnk

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343724 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 21:30:15 +00:00
Craig Topper
8521a3b90e [X86] Stop promoting vector ISD::SELECT to vXi64.
The additional patterns needed for this aren't overwhelming and introducing extra bitcasts during lowering limits our ability to do computeNumSignBits. Not that I have a good example of that for select. I'm just becoming increasingly grumpy about promotion of AND/OR/XOR. SELECT was just a lot easier to fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343723 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 21:10:29 +00:00
Sanjay Patel
748b49e389 [InstCombine] add tests for binop undef-into-constant propagation; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343714 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 20:35:25 +00:00
Craig Topper
02b73b4b27 [X86] Add CMOV_VK2/VK4 pseudos and remove lowering code that turned v2i1/v4i1 SELECT into v8i1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343713 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 20:28:43 +00:00
Alex Bradbury
df9220fd71 [RISCV][NFCI] Handle redundant splitf64+buildpairf64 pairs during instruction selection
Although we can't write a tablegen pattern to remove redundant 
splitf64+buildf64 pairs due to the multiple return values, we can handle it 
with some C++ selection code. This is simpler than removing them after 
instruction selection through RISCVDAGToDAGISel::PostprocessISelDAG, as was 
done previously.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343712 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 20:12:10 +00:00
Craig Topper
bd8934fa43 [X86] Add CMOV pseudos for VR128X and VR256X register classes. Use them when AVX512VL is enabled.
This allows the phi nodes to be generated with the correct register class when expanded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343710 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 19:48:26 +00:00
Craig Topper
946f07773b [X86] Don't break CMOV pseudo instructions down by type. Just by register class.
The register class is all that's important for the pseudo instructions. We can use patterns to handle the different types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343709 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 19:48:23 +00:00
Simon Pilgrim
58f59fb8cc [X86] PUSH/POP 'mem-mem' instructions are not RMW - these are 2 different addresses
This patch adds a 'WriteCopy' [WriteLoad, WriteStore] schedule sequence instead to better model the behaviour

Found by @andreadb during llvm-mca testing on btver2 which was crashing on "zero uop" WriteRMW only instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343708 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 19:02:38 +00:00
Matthew Voss
fff44e68ba Emit template type and value parameter DIEs for template variables.
Summary:
Ensure the TemplateParam attribute of the DIGlobalVariable node is translated into the proper DIEs.

Resolves https://bugs.llvm.org/show_bug.cgi?id=22119

Reviewers: dblaikie, probinson, aprantl, JDevlieghere, clayborg, whitequark, deadalnix

Reviewed By: dblaikie

Subscribers: llvm-commits

Tags: #debug-info

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343706 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 18:44:53 +00:00
Simon Pilgrim
796acd42b6 [X86] Move Atomic binops to use WriteALURMW schedule class
These were being tagged as <WriteALULd, WriteRMW> instead of properly using the RMW sequence

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343705 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 18:38:28 +00:00
Simon Pilgrim
e9bd0c92b0 [X86][Btver2] Fix MMX PSHUFB schedule
Match AMD Fam16h SOG + llvm-exegesis tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343701 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 18:18:50 +00:00
Simon Pilgrim
7624a6e73d [X86] Move Atomic CMPXCHG to WriteCMPXCHGRMW schedule class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343700 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 18:05:01 +00:00
Simon Pilgrim
1ac9a626cc [X86] Add SkylakeClient uops counter - same as the other Intel models.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343697 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 16:45:26 +00:00
Daniel Sanders
9f149bc4ff Correct implementation of -verify-machineinstrs such that it's still overridable for EXPENSIVE_CHECKS
-verify-machineinstrs was implemented as a simple bool. As a result, the
'VerifyMachineCode == cl::BOU_UNSET' used by EXPENSIVE_CHECKS to make it on by
default but possible to disable didn't work as intended. Changed
-verify-machineinstrs to a boolOrDefault to correct this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343696 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 16:29:24 +00:00
Sanjay Patel
cf8ba840b8 [InstCombine] clean up foldVectorBinop(); NFC
1. Fix include ordering.
2. Improve variable name (width is bitwidth not number-of-elements).
3. Add local Opcode variable to reduce code duplication.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343694 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 15:46:03 +00:00
Daniel Sanders
96c454b924 [globalisel][combines] Don't sink G_TRUNC down to use if that use is a G_PHI
This fixes a problem where the register allocator fails to eliminate a PHI
because there's a non-PHI in the middle of the PHI instructions at the start
of a BB.

This G_TRUNC can be better placed but this at least fixes the correctness issue
quickly. I'll follow up with a patch to the verifier to catch this kind of bug
in future.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343693 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 15:43:39 +00:00
Sanjay Patel
2aa873478d [InstCombine] name change: foldShuffledBinop -> foldVectorBinop; NFC
This function will deal with more than shuffles with D50992, and I 
have another potential per-element fold that could live here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343692 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 15:20:58 +00:00
Andrea Di Biagio
97666c4d71 [llvm-mca] Add support for move elimination in class RegisterFile.
This patch teaches class RegisterFile how to analyze register writes from
instructions that are move elimination candidates.
In particular, it teaches it how to check if a move can be effectively eliminated
by the underlying PRF, and (if necessary) how to perform move elimination.

The long term goal is to allow processor models to describe instructions that
are valid move elimination candidates.
The idea is to let register file definitions in tablegen declare if/when moves
can be eliminated.

This patch is a non functional change.
The logic that performs move elimination is currently disabled.  A future patch
will add support for move elimination in the processor models, and enable this
new code path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343691 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 15:02:44 +00:00
Simon Pilgrim
445c3f14ab [llvm-exegesis] Avoid yaml parser from calling sscanf for obvious non-matches (PR39102)
deserializeMCOperand - ensure that we at least match the first character of the sscanf pattern before calling

This reduces llvm-exegesis uops analysis of the instructions supported from btver2 from 5m13s to 2m1s on debug builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343690 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 14:51:09 +00:00
Nirav Dave
0fbe023b07 [X86] Correctly use SSE registers if no-x87 is selected.
Fix use of SSE1 registers for f32 ops in no-x87 mode.

Notably, allow use of SSE instructions for f32 operations in 64-bit
mode (but not 32-bit which is disallowed by callign convention).

Also avoid translating memset/memcopy/memmove into SSE registers
without X87 for 32-bit mode.

This fixes PR38738.

Reviewers: nickdesaulniers, craig.topper

Subscribers: hiraditya, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343689 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 14:13:30 +00:00
Alex Bradbury
c1d6f75b12 [RISCV][NFC] Refactor RISCVDAGToDAGISel::Select
Introduce and use a switch on the opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343688 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 13:13:13 +00:00
James Henderson
b818787c3e [ThinLTO]Expose cache entry expiration time option in llvm-lto and fix a test
Two cases in a ThinLTO test were passing for the wrong reasons, since
rL340374. The tests were supposed to be testing that files were being
pruned due to the cache size, but they were in fact being pruned because
they were older than the default expiration period of 1 week.

This change fixes the tests by explicitly setting the expiration time to
the maximum value. This required the option to be exposed in llvm-lto.

By assigning all files in the cache a similar time, it is possible to see
that the newest files are still being kept, and that we aren't passing
for the wrong reason again. In the event that the entry expiration were
to expire for them, then the test would start failing, because these
files would be removed too.

Reviewed by: rnk, inglorion

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343687 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 13:00:20 +00:00
Jonas Paulsson
abaa9ca66a [RA CopyHints] Fix compile-time regression
This patch makes sure that a register is only hinted once to RA. In extreme
cases the same register can otherwise be hinted numerous times and cause a
compile time slowdown.

Review: Simon Pilgrim
https://reviews.llvm.org/D52826

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343686 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 12:51:19 +00:00
Clement Courbet
12b71448c4 [llvm-exegesis][NFC] Revert rL343682 "Fix unused variable warning".
That was not the proper fix: the variable is used in debug mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343685 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 12:48:50 +00:00
Clement Courbet
ad242ffec2 [llvm-exegesis] Fix rL343680 in release mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343684 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 12:35:35 +00:00
Clement Courbet
e7f7cd8bf8 [llvm-exegesis][NFC] Fix unused variable warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343682 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 12:27:43 +00:00
Clement Courbet
f188396df5 [llvm-exegesis] Resolve variant classes in analysis.
Summary: See PR38884.

Reviewers: gchatelet

Subscribers: tschuett, RKSimon, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343680 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 11:50:25 +00:00
Alex Bradbury
9e4a6daf23 [RISCV] Gate float<->int and double<->int conversion patterns on IsRV32
The patterns as defined are correct only when XLen==32.

This is another preparatory patch for a set of patches that flesh out RV64 
codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343679 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 11:35:22 +00:00
Alex Bradbury
2fcb9c7a2b [RISCV] Remove XLenVT==i32 assumptions from RISCVInstrInfo td
1. brcond operates on an condition.
2. atomic_fence and the pseudo AMO instructions should all take xlen immediates 

This allows the same definitions and patterns to work for RV64 (XLenVT==i64).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343678 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 11:14:26 +00:00
Alex Bradbury
c9c097dc7c [RISCV] Gate simm32 materialisation pattern and SW pattern on IsRV32
These patterns are not correct for RV64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343677 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 11:04:59 +00:00
Florian Hahn
1b130ed5dc [LoopInterchange] Remove unused variable PreserveLCSSA (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343676 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 11:01:23 +00:00
Alex Bradbury
2cad546297 [RISCV] Remove RV64 test lines from umulo-128-legalisation-lowering.ll
The generated code is incorrect anyway, and this test adds noise to the 
upcoming set of patches that flesh out RV64 support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343675 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 10:59:42 +00:00
Jonas Toth
17120e1940 [CodeGen] NFC fix pedantic warning from extra semicolon
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343674 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 10:59:19 +00:00
Tim Renouf
5c738478d0 [AMDGPU] Fix for negative offsets in buffer/tbuffer intrinsics
Summary:
The new buffer/tbuffer intrinsics handle an out-of-range immediate
offset by moving/adding offset&-4096 to a vgpr, leaving an in-range
immediate offset, with a chance of the move/add being CSEd for similar
loads/stores.

However it turns out that a negative offset in a vgpr is illegal, even
if adding the immediate offset makes it legal again.

Therefore, this commit disables the offset&-4096 thing if the offset is
negative.

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

Change-Id: Ie02f0a74f240a138dc2a29d17cfbd9e350e4ed13

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343672 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 10:29:43 +00:00
Simon Pilgrim
2b610ad483 [X86][Btver2] Most RMW instructions don't require an additional uop
Remove uop on WriteRMW and move it into the few instructions that need it.

Match AMD Fam16h SOG + llvm-exegesis tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343671 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 10:28:43 +00:00
Simon Pilgrim
f7055267ae [X86] ALU/ADC RMW instructions should use the WriteRMW sequence class
I was expecting this to be a nfc but Silvermont seems to be setup a little differently:

// A folded store needs a cycle on MEC_RSV for the store data, but it does not need an extra port cycle to recompute the address.
def : WriteRes<WriteRMW, [SLM_MEC_RSV]>;

So moving from WriteStore to WriteRMW reduces predicted port pressure, confirmed by @craig.topper that this is correct.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343670 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 10:01:13 +00:00
Aditya Kumar
ce8f59266c Improve static analysis of cold basic blocks
Differential Revision: https://reviews.llvm.org/D52704

Reviewers: sebpop, tejohnson, brzycki, SirishP
Reviewed By: sebpop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343663 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-03 06:21:05 +00:00