Commit Graph

5564 Commits

Author SHA1 Message Date
Nico Weber
b512b02828 Revert r261070, it caused PR26652 / PR26653.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261127 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-17 18:47:29 +00:00
Justin Lebar
e4a9a482ae Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261110 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-17 17:46:39 +00:00
Cong Hou
ff3f2ebae3 Detecte vector reduction operations just before instruction selection.
This patch detects vector reductions before instruction selection. Vector
reductions are vectorized reduction operations, and for such operations we have
freedom to reorganize the elements of the result as long as the reduction of them
stay unchanged. This will enable some reduction pattern recognition during
instruction combine such as SAD/dot-product on X86. A flag is added to
SDNodeFlags to mark those vector reduction nodes to be checked during instruction
combine.

To detect those vector reductions, we search def-use chains starting from the
given instruction, and check if all uses fall into two categories:

1. Reduction with another vector.
2. Reduction on all elements.

in which 2 is detected by recognizing the pattern that the loop vectorizer
generates to reduce all elements in the vector outside of the loop, which
includes several ShuffleVector and one ExtractElement instructions.


Differential revision: http://reviews.llvm.org/D15250



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261070 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-17 06:37:04 +00:00
Quentin Colombet
0dca440c42 [GlobalISel] Re-apply r260922-260923 with MSVC-friendly code.
Original message:
Get rid of the ifdefs in TargetLowering.
Introduce a new API used only by GlobalISel: CallLowering.
This API will contain target hooks dedicated to call lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260998 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 19:26:02 +00:00
Aaron Ballman
4d9522f889 Reverting r260922-260923; they cause link failures with MSVC.
http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc2015/builds/15436/steps/build/logs/stdio
http://bb.pgr.jp/builders/msbuild-llvmclang-x64-msc18-DA/builds/961/steps/build_llvm/logs/stdio

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260972 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 15:29:06 +00:00
Quentin Colombet
071210eedd [GlobalISel][IRTranslator] Override getPassName.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260924 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 01:38:09 +00:00
Quentin Colombet
849184df82 [GlobalISel] Add missing file in previous commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260923 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 01:05:16 +00:00
Quentin Colombet
30880b6d80 [GlobalISel] Get rid of the ifdefs in TargetLowering.
Introduce a new API used only by GlobalISel: CallLowering.
This API will contain target hooks dedicated to call lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260922 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-16 00:57:44 +00:00
Zia Ansari
5ed116b04b Implemented stack symbol table ordering/packing optimization to improve data locality and code size from SP/FP offset encoding.
Differential Revision: http://reviews.llvm.org/D15393



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260917 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-15 23:44:13 +00:00
Matthias Braun
2168cf4b1b MachineVerifier: Add parameter to choose if MachineFunction::verify() aborts
The abort on error behaviour is unpractical for debugger and unittest
usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260904 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-15 19:25:31 +00:00
Ahmed Bougacha
606927f7bb [CodeGen] Document and use getConstant's splat-building feature. NFC.
Differential Revision: http://reviews.llvm.org/D17229

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260901 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-15 18:07:29 +00:00
Quentin Colombet
2e463eaffd Get rid of some GLOBAL_ISEL ifdefs that should be harmless for code size.
More to come, but those were easy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260723 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-12 20:41:24 +00:00
Quentin Colombet
08e5258565 [IRTranslator] Use a single virtual register to represent any Value.
PR26161.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260602 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 21:48:32 +00:00
Quentin Colombet
c83ca6a674 [GlobalISel][MachineIRBuilder] Fix comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260594 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 21:21:40 +00:00
Quentin Colombet
c7525b652c [GlobalISel] Make the getter for MBB in MachneIRBuilder public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260593 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 21:20:35 +00:00
Quentin Colombet
6b6079747f [Target] Add a helper function to check if an opcode is invalid after isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260590 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 21:16:56 +00:00
Peter Collingbourne
cb4440633e DwarfDebug: emit type units immediately.
Rather than storing type units in a vector and emitting them at the end
of code generation, emit them immediately and destroy them, reclaiming the
memory we were using for their DIEs.

In one benchmark carried out against Chromium's 50 largest (by bitcode
file size) translation units, total peak memory consumption with type units
decreased by median 17%, or by 7% when compared against disabling type units.

Tested using check-{llvm,clang}, the GDB 7.5 test suite (with
'-fdebug-types-section') and by eyeballing llvm-dwarfdump output on those
Chromium translation units with split DWARF both disabled and enabled, and
verifying that the only changes were to addresses and abbreviation ordering.

Differential Revision: http://reviews.llvm.org/D17118

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260578 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 19:57:46 +00:00
Quentin Colombet
ad5520eac9 [GlobalISel] Teach the IRTranslator how to lower returns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260562 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 18:53:28 +00:00
Quentin Colombet
7f77b29db7 [GlobalISel] Add a type to MachineInstr.
We actually need that information only for generic instructions, therefore it
would be nice not to have to pay the extra memory consumption for all
instructions. Especially because a typed non-generic instruction does not make
sense.

The question is then, is it possible to have that information in a union or
something?
My initial thought was that we could have a derived class GenericMachineInstr
with additional information, but in practice it makes little to no sense since
generic MachineInstrs are likely turned into non-generic ones by just switching
the opcode. In other words, we don't want to go through the process of creating
a new, non-generic MachineInstr, object each time we do this switch. The memory
benefit probably is not worth the extra compile time.

Another option would be to keep the type of the MachineInstr in a side table.
This would induce an extra indirection though.

Anyway, I will file a PR to discuss about it and remember we need to come back
to it at some point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260558 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 18:22:37 +00:00
Quentin Colombet
b5d0611e18 [GlobalISel] Add a hook in TargetConfigPass to run GlobalISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260553 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 17:57:22 +00:00
Quentin Colombet
fa09f54ecd [GlobalISel][IRTranslator] Change the ownership of the MIRBuilder field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260551 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 17:53:23 +00:00
Quentin Colombet
bbbe03f0d3 [GlobalISel][IRTranslator] Teach the pass how to translate Add instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260549 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 17:51:31 +00:00
Quentin Colombet
eb096dc0d4 [GlobalISel] Add a MachineIRBuilder class.
Helper class to build machine instrs. This is a higher abstraction
than MachineInstrBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260547 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 17:44:59 +00:00
Quentin Colombet
30335031a5 [GlobalISel][MachineRegisterInfo] Add a method to create generic vregs.
For now, generic virtual registers will not have a register class. We may want
to change that. For instance, if we want to use all the methods from
TargetRegisterInfo with generic virtual registers, we need to either have some
sort of generic register classes that do what we want, or teach those methods
how to deal with nullptr register class.

Although the latter seems easy enough to do, we may still want to differenciate
generic register classes from nullptr to catch cases where nullptr gets
introduced by a bug of some sort.

Anyway, I will file a PR to keep track of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260474 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 00:19:17 +00:00
Quentin Colombet
d3bd0e5e8b [GlobalISel] Remember the size of generic virtual registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260468 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 23:43:48 +00:00
Quentin Colombet
f62b31051b [GlobalISel] More detailed skeleton for the IRTranslator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260456 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-10 22:59:27 +00:00
Sanjay Patel
068c0ce5f1 [SelectionDAG] make getMemBasePlusOffset() accessible; NFCI
I reinvented this functionality in http://reviews.llvm.org/D16828 because it was
hidden away as a static function. The changes in x86 are not based on a complete
audit. I suspect there are other possible uses there, and there are almost certainly
more potential users in other targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260295 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-09 21:42:04 +00:00
Andrew Kaylor
fb2b3b0bed [regalloc][WinEH] Do not mark intervals as not spillable if they contain a regmask
Differential Revision: http://reviews.llvm.org/D16831



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260164 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-08 22:52:51 +00:00
Petar Jovanovic
8ed0526e77 [Power PC] softening long double type
This patch implements softening of long double type (ppcf128) on ppc32
architecture and enables operations for this type for soft float.

Patch by Strahinja Petrovic.

Differential Revision: http://reviews.llvm.org/D15811


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259791 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-04 14:43:50 +00:00
Jonas Paulsson
8e9339f574 [ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten.
Recommited, after some fixing with test cases.

Updated test cases:
test/CodeGen/AArch64/arm64-misched-memdep-bug.ll
test/CodeGen/AArch64/tailcall_misched_graph.ll

Temporarily disabled test cases:
test/CodeGen/AMDGPU/split-vector-memoperand-offsets.ll
test/CodeGen/PowerPC/ppc64-fastcc.ll (partially updated)
test/CodeGen/PowerPC/vsx-fma-m.ll
test/CodeGen/PowerPC/vsx-fma-sp.ll

http://reviews.llvm.org/D8705
Reviewers: Hal Finkel, Andy Trick.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259673 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-03 17:52:29 +00:00
Amjad Aboud
71a555ed90 Improved macro emission in dwarf.
Changed emitting offset of macinfo entry into compiler unit DIE to use "addSectionLabel" method rather than explicitly calculating size/offset of macro entry.

Differential Revision: http://reviews.llvm.org/D16292


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259358 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-01 14:09:41 +00:00
Jonas Paulsson
c8d11e8593 Temporarily revert "[ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten."
Some buildbot failures needs to be debugged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259213 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-29 17:22:43 +00:00
Jonas Paulsson
72374d2610 [ScheduleDAGInstrs::buildSchedGraph()] Handling of memory dependecies rewritten.
The buildSchedGraph() was in need of reworking as the AA features had been
added on top of earlier code. It was very difficult to understand, and buggy.
There had been found cases where scheduling dependencies had actually been
missed (see r228686).

AliasChain, RejectMemNodes, adjustChainDeps() and iterateChainSucc() have
been removed. There are instead now just the four maps from Value to SUs, which
have been renamed to Stores, Loads, NonAliasStores and NonAliasLoads.

An unknown store used to become the AliasChain, but now becomes a store mapped
to 'unknownValue' (in Stores). What used to be PendingLoads is instead the
list of SUs mapped to 'unknownValue' in Loads.

RejectMemNodes and adjustChainDeps() used to be a safety-net for everything.
The SU maps were sometimes cleared and SUs were put in RejectMemNodes, where
adjustChainDeps() would look. Instead of this, a more straight forward approach
is used in maintaining the SU maps without clearing them and simply letting
them grow over time. Instead of the cutt-off in adjustChainDeps() search, a
reduction of maps will be done if needed (see below).

Each SUnit either becomes the BarrierChain, or is put into one of the maps. For
each SUnit encountered, all the information about previous ones are still
available until a new BarrierChain is set, at which point the maps are cleared.

For huge regions, the algorithm becomes slow, therefore the maps will get
reduced at a threshold (current default is 1000 nodes), by a fraction (default 1/2).
These values can be tuned by use of CL options in case some test case shows that
they need to be changed (-dag-maps-huge-region and -dag-maps-reduction-size).

There has not been any considerable change observed in output quality or compile
time. There may now be more DAG edges inserted than before (i.e. if A->B->C,
then A->C is not needed). However, in a comparison run there were fewer total
calls to AA, and a somewhat improved compile time, which means this seems to
be not a problem.

http://reviews.llvm.org/D8705
Reviewers: Hal Finkel, Andy Trick.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259201 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-29 16:11:18 +00:00
Oliver Stannard
b95072ef89 Revert r259035, it introduces a cyclic library dependency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259045 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 13:19:47 +00:00
Oliver Stannard
ef19a274ad Add backend dignostic printer for unsupported features
Re-commit of r258951 after fixing layering violation.

The related LLVM patch adds a backend diagnostic type for reporting
unsupported features, this adds a printer for them to clang.

In the case where debug location information is not available, I've
changed the printer to report the location as the first line of the
function, rather than the closing brace, as the latter does not give the
user any information. This also affects optimisation remarks.

Differential Revision: http://reviews.llvm.org/D16590



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259035 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 10:07:27 +00:00
Dan Gohman
dbc2732e36 [WebAssembly] Enhanced register stackification
This patch revamps the RegStackifier pass with a new tree traversal mechanism,
enabling three major new features:

 - Stackification of values with multiple uses, using the result value of set_local
 - More aggressive stackification of instructions with side effects
 - Reordering operands in commutative instructions to enable more stackification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259009 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 01:22:44 +00:00
Benjamin Kramer
06342012ac Make more headers self-contained.
A lot of this comes from the new complete type requirement of DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258956 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 18:03:37 +00:00
Benjamin Kramer
b714d34a7e Move SafeStack to CodeGen.
It depends on the target machinery, that's not available for
instrumentation passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258942 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 16:53:42 +00:00
Benjamin Kramer
d254be2cd3 Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/
It's a SelectionDAG thing, not a Target thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258939 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 16:32:26 +00:00
Benjamin Kramer
f80dcd65f5 Move passes that live in lib/CodeGen out of Scalar.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258938 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 16:05:42 +00:00
Eugene Zelenko
51ecde1f0a Fix Clang-tidy modernize-use-nullptr and modernize-use-override warnings; other minor fixes.
Differential revision: reviews.llvm.org/D16568


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258831 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 18:48:36 +00:00
Matthias Braun
632580f369 LiveIntervalAnalysis: Improve some comments
As recommended by Justin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258771 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 01:40:48 +00:00
Matthias Braun
1b9e9d8523 LiveIntervalAnalysis: Cleanup handleMove{Down|Up}() functions, NFC
These two functions are hard to reason about. This commit makes the code
more comprehensible:

- Use four distinct variables (OldIdxIn, OldIdxOut, NewIdxIn, NewIdxOut)
  with a fixed value instead of a changing iterator I that points to
  different things during the function.
- Remove the early explanation before the function in favor of more
  detailed comments inside the function. Should have more/clearer comments now
  stating which conditions are tested and which invariants hold at
  different points in the functions.

The behaviour of the code was not changed.

I hope that this will make it easier to review the changes in
http://reviews.llvm.org/D9067 which I will adapt next.

Differential Revision: http://reviews.llvm.org/D16379

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258756 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 00:43:50 +00:00
Dan Gohman
f2cde91200 [SelectionDAG] Fold more offsets into GlobalAddresses
This reapplies r258296 and r258366, and also fixes an existing bug in
SelectionDAG.cpp's isMemSrcFromString, neglecting to account for the
offset in a GlobalAddressSDNode, which is uncovered by those patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258482 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 03:57:34 +00:00
Reid Kleckner
99fdb962e1 Revert "[SelectionDAG] Fold more offsets into GlobalAddresses"
This reverts r258296 and the follow up r258366. With this change, we
miscompiled the following program on Windows:
  #include <string>
  #include <iostream>
  static const char kData[] = "asdf jkl;";
  int main() {
    std::string s(kData + 3, sizeof(kData) - 3);
    std::cout << s << '\n';
  }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258465 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 01:09:29 +00:00
Reid Kleckner
1264f61388 Avoid unnecessary stack realignment in musttail thunks with SSE2 enabled
The X86 musttail implementation finds register parameters to forward by
running the calling convention algorithm until a non-register location
is returned. However, assigning a vector memory location has the side
effect of increasing the function's stack alignment. We shouldn't
increase the stack alignment when we are only looking for register
parameters, so this change conditionalizes it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258442 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-21 22:23:22 +00:00
Quentin Colombet
28bae91c01 [GlobalISel] Add the proper cmake plumbing.
This patch adds the necessary plumbing to cmake to build the sources related to
GlobalISel.

To build the sources related to GlobalISel, we need to add -DBUILD_GLOBAL_ISEL=ON.
By default, this is OFF, thus GlobalISel sources will not impact people that do
not explicitly opt-in.

Differential Revision: http://reviews.llvm.org/D15983


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258344 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 20:58:56 +00:00
Dan Gohman
4d7ffe9779 [SelectionDAG] Fold more offsets into GlobalAddresses
SelectionDAG previously missed opportunities to fold constants into
GlobalAddresses in several areas. For example, given `(add (add GA, c1), y)`, it
would often reassociate to `(add (add GA, y), c1)`, missing the opportunity to
create `(add GA+c, y)`. This isn't often visible on targets such as X86 which
effectively reassociate adds in their complex address-mode folding logic,
however it is currently visible on WebAssembly since it currently has very
simple address mode folding code that doesn't reassociate anything.

This patch fixes this by making SelectionDAG fold offsets into GlobalAddresses
at the same times that it folds constants together, so that it doesn't miss any
opportunities to perform such folding.

Differential Revision: http://reviews.llvm.org/D16090


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258296 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 07:03:08 +00:00
Matthias Braun
d267d377b8 MachineScheduler: Allow independent scheduling of sub register defs
Note that this is disabled by default and still requires a patch to
handleMove() which is not upstreamed yet.

If the TrackLaneMasks policy/strategy is enabled the MachineScheduler
will build a schedule graph where definitions of independent
subregisters are no longer serialised.

Implementation comments:
- Without lane mask tracking a sub register def also counts as a use
  (except for the first one with the read-undef flag set), with lane
  mask tracking enabled this is no longer the case.
- Pressure Diffs where previously maintained per definition of a
  vreg with the help of the SSA information contained in the
  LiveIntervals.  With lanemask tracking enabled we cannot do this
  anymore and instead change the pressure diffs for all uses of the vreg
  as it becomes live/dead.  For this changed style to work correctly we
  ignore uses of instructions that define the same register again: They
  won't affect register pressure.
- With lanemask tracking we remove all read-undef flags from
  sub register defs when building the graph and re-add them later when
  all vreg lanes have become dead.

Differential Revision: http://reviews.llvm.org/D14969

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258259 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 00:23:32 +00:00
Matthias Braun
051b30e8e2 RegisterPressure: Make liveness tracking subregister aware
Differential Revision: http://reviews.llvm.org/D14968

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258258 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 00:23:26 +00:00