2609 Commits

Author SHA1 Message Date
Simon Pilgrim
001665e9a8 [DAGCombine] SimplifySelectCC - call FoldSetCC with the setcc result type
We were calling FoldSetCC with the compare operand type instead of the result type.

Found by OSS-Fuzz #13838 (https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13838)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356667 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-21 14:07:18 +00:00
Simon Pilgrim
b2508fecce Remove out of date comment. NFCI.
DAGCombiner::convertBuildVecZextToZext just requires the extractions to be sequential, they don't have to start from 0'th index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356552 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-20 12:24:15 +00:00
Justin Bogner
4396102a68 [DAGCombine] Fix a miscompile when reducing BUILD_VECTORs to a shuffle
In r311255 we added a case where we split vectors whose elements are
all derived from the same input vector so that we could shuffle it
more efficiently. In doing so, createBuildVecShuffle was taught to
adjust for the fact that all indices would be based off of the first
vector when this happens, but it's possible for the code that checked
that to fire incorrectly if we happen to have a BUILD_VECTOR of
extracts from subvectors and don't hit this new optimization.

Instead of trying to detect if we've split the vector by checking if
we have extracts from the same base vector, we can just pass that
information into createBuildVecShuffle, avoiding the miscompile.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356476 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 16:52:00 +00:00
Simon Pilgrim
5425f5c42b [SelectionDAG] Handle unary SelectPatternFlavor for ABS case in SelectionDAGBuilder::visitSelect
These changes are related to PR37743 and include:

    SelectionDAGBuilder::visitSelect handles the unary SelectPatternFlavor::SPF_ABS case to build ABS node.

    Delete the redundant recognizer of the integer ABS pattern from the DAGCombiner.

    Add promoting the integer ABS node in the LegalizeIntegerType.

    Expand-based legalization of integer result for the ABS nodes.

    Expand-based legalization of ABS vector operations.

    Add some integer abs testcases for different typesizes for Thumb arch

    Add the custom ABS expanding and change the SAD pattern recognizer for X86 arch: The i64 result of the ABS is expanded to:
        tmp = (SRA, Hi, 31)
        Lo = (UADDO tmp, Lo)
        Hi = (XOR tmp, (ADDCARRY tmp, hi, Lo:1))
        Lo = (XOR tmp, Lo)

    The "detectZextAbsDiff" function is changed for the recognition of pattern with the ABS node. Given a ABS node, detect the following pattern:
        (ABS (SUB (ZERO_EXTEND a), (ZERO_EXTEND b))).

    Change integer abs testcases for codegen with the ABS node support for AArch64.
        Indicate that the ABS is legal for the i64 type when the NEON is supported.
        Change the integer abs testcases to show changing of codegen.

    Add combine and legalization of ABS nodes for Thumb arch.

    Extend 'matchSelectPattern' to recognize the ABS patterns with ICMP_SGE condition.

For discussion, see https://bugs.llvm.org/show_bug.cgi?id=37743

Patch by: @ikulagin (Ivan Kulagin)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356468 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-19 16:24:55 +00:00
Adhemerval Zanella
0ce3660e40 [TargetLowering] Add code size information on isFPImmLegal. NFC
This allows better code size for aarch64 floating point materialization
in a future patch.

Reviewers: evandro

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356389 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-18 18:40:07 +00:00
Nirav Dave
d918576dc5 [DAG] Cleanup unused node in SimplifySelectCC.
Delete temporarily constructed node uses for analysis after it's use,
holding onto original input nodes. Ideally this would be rewritten
without making nodes, but this appears relatively complex.

Reviewers: spatel, RKSimon, craig.topper

Subscribers: jdoerfert, hiraditya, deadalnix, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356382 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-18 17:02:38 +00:00
Nikita Popov
7cb598a0d7 [DAGCombine] Fold (x & ~y) | y patterns
Fold (x & ~y) | y and it's four commuted variants to x | y. This pattern
can in particular appear when a vselect c, x, -1 is expanded to
(x & ~c) | (-1 & c) and combined to (x & ~c) | c.

This change has some overlap with D59066, which avoids creating a
vselect of this form in the first place during uaddsat expansion.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356333 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-17 15:45:38 +00:00
Simon Pilgrim
1dcbea8cd5 [DAGCombine] combineShuffleOfScalars - handle non-zero SCALAR_TO_VECTOR indices (PR41097)
rL356292 reduces the size of scalar_to_vector if we know the upper bits are undef - which means that shuffles may find they are suddenly referencing scalar_to_vector elements other than zero - so make sure we handle this as undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356327 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-16 17:36:26 +00:00
Nirav Dave
e79d0df477 [DAGCombiner] Fix Comment. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356069 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-13 17:44:40 +00:00
Nirav Dave
154874adc5 [DAGCombiner] If a TokenFactor would be merged into its user, consider the user later.
Summary:
A number of optimizations are inhibited by single-use TokenFactors not
being merged into the TokenFactor using it. This makes we consider if
we can do the merge immediately.

Most tests changes here are due to the change in visitation causing
minor reorderings and associated reassociation of paired memory
operations.

CodeGen tests with non-reordering changes:

  X86/aligned-variadic.ll -- memory-based add folded into stored leaq
  value.

  X86/constant-combiners.ll -- Optimizes out overlap between stores.

  X86/pr40631_deadstore_elision -- folds constant byte store into
  preceding quad word constant store.

Reviewers: RKSimon, craig.topper, spatel, efriedma, courbet

Reviewed By: courbet

Subscribers: dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, javed.absar, eraman, hiraditya, kbarton, jrtc27, atanasyan, jsji, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356068 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-13 17:07:09 +00:00
Clement Courbet
e963c6818d Re-land r354244 "[DAGCombiner] Eliminate dead stores to stack."
Always check candidates for hasOtherUses(), not only stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356050 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-13 13:56:23 +00:00
Simon Pilgrim
17eecf2740 [DAGCombine] Pull out repeated demanded bitmask generation. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355932 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-12 15:58:28 +00:00
Nikita Popov
802a6632d5 [SDAG][AArch64] Legalize VECREDUCE
Fixes https://bugs.llvm.org/show_bug.cgi?id=36796.

Implement basic legalizations (PromoteIntRes, PromoteIntOp,
ExpandIntRes, ScalarizeVecOp, WidenVecOp) for VECREDUCE opcodes.
There are more legalizations missing (esp float legalizations),
but there's no way to test them right now, so I'm not adding them.

This also includes a few more changes to make this work somewhat
reasonably:

 * Add support for expanding VECREDUCE in SDAG. Usually
   experimental.vector.reduce is expanded prior to codegen, but if the
   target does have native vector reduce, it may of course still be
   necessary to expand due to legalization issues. This uses a shuffle
   reduction if possible, followed by a naive scalar reduction.
 * Allow the result type of integer VECREDUCE to be larger than the
   vector element type. For example we need to be able to reduce a v8i8
   into an (nominally) i32 result type on AArch64.
 * Use the vector operand type rather than the scalar result type to
   determine the action, so we can control exactly which vector types are
   supported. Also change the legalize vector op code to handle
   operations that only have vector operands, but no vector results, as
   is the case for VECREDUCE.
 * Default VECREDUCE to Expand. On AArch64 (only target using VECREDUCE),
   explicitly specify for which vector types the reductions are supported.

This does not handle anything related to VECREDUCE_STRICT_*.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355860 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-11 20:22:13 +00:00
Amaury Sechet
4e3a7c08f3 Remove redundant extractBooleanFlip argument. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355794 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-11 00:37:01 +00:00
Amaury Sechet
e3fedf3081 Refactor isBooleanFlip into extractBooleanFlip so that users do not depend on the patern matched. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355769 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-09 02:51:52 +00:00
Amaury Sechet
bcd58e4ff6 [DAGCombiner] fold (add (add (xor a, -1), b), 1) -> (sub b, a)
Summary: This pattern is sometime created after legalization.

Reviewers: efriedma, spatel, RKSimon, zvi, bkramer

Subscribers: llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355716 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 19:39:32 +00:00
Simon Pilgrim
efc2ecad75 [DAGCombine] Merge visitSMULO+visitUMULO into visitMULO. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355690 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 11:41:18 +00:00
Simon Pilgrim
b4d2c6deb5 [DAGCombine] Merge visitSADDO+visitUADDO into visitADDO. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355689 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 11:30:33 +00:00
Simon Pilgrim
4c585d9f04 [DAGCombine] Merge visitSSUBO+visitUSUBO into visitSUBO. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355688 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-08 11:16:55 +00:00
Simon Pilgrim
fa80b42116 [DAGCombine] Improve select (not Cond), N1, N2 -> select Cond, N2, N1 fold
Move the x86 combine from D58974 into the DAGCombine VSELECT code and update the SELECT version to use the isBooleanFlip helper as well.

Requested by @spatel on D59006

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355533 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-06 18:52:52 +00:00
Simon Pilgrim
53c102ac20 [DAGCombiner] Enable UADDO/USUBO vector combine support
Differential Revision: https://reviews.llvm.org/D58965

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355517 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-06 16:11:03 +00:00
Simon Pilgrim
66554b3e51 [DAGCombiner] Add SADDO/SSUBO combine support
Basic constant handling folds, for both scalars and vectors

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355506 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-06 14:22:21 +00:00
Simon Pilgrim
917bdb560e [DAGCombiner] Enable SMULO/UMULO vector combine support (PR40442)
Differential Revision: https://reviews.llvm.org/D58968

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355495 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-06 11:04:21 +00:00
Craig Topper
b6ab93e6a5 [DAGCombiner][X86][SystemZ][AArch64] Combine some cases of (bitcast (build_vector constants)) between legalize types and legalize dag.
This patch enables combining integer bitcasts of integer build vectors when the new scalar type is legal. I've avoided floating point because the implementation bitcasts float to int along the way and we would need to check the intermediate types for legality

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355324 91177308-0d34-0410-b5e6-96231b3b80d8
2019-03-04 19:12:16 +00:00
Nirav Dave
1f844702f1 [DAG] Fix constant store folding to handle non-byte sizes.
Avoid crashes from zero-byte values due to sub-byte store sizes.

Reviewers: uabelho, courbet, rnk

Reviewed By: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354884 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-26 15:02:32 +00:00
Andrea Di Biagio
8767911873 Fix a sign compare warning breaking the -Werror build.
The warning was introduced at r354793.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354810 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 19:33:58 +00:00
Simon Pilgrim
4bda5af37c [DAGCombine] Add undef shuffle elt support to partitionShuffleOfConcats
Support undef shuffle mask indices in the shuffle(concat_vectors, concat_vectors) -> concat_vectors fold

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354793 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-25 16:02:01 +00:00
Jordan Rupprecht
19a56211e1 [NFC] Fix typos: preceeding -> preceding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354715 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-23 01:28:32 +00:00
Nirav Dave
4741b755fc Disable big-endian constant store merges from rL354676.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354677 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-22 16:20:34 +00:00
Nirav Dave
4eee65a5d3 [DAGCombine] Fold overlapping constant stores
Fold a smaller constant store into larger constant stores immediately
preceeding it.

Reviewers: rnk, courbet

Subscribers: javed.absar, hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354676 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-22 16:00:19 +00:00
Sanjay Patel
13419c122c [DAGCombiner] prevent infinite looping by truncating 'and' (PR40793)
This fold can occur during legalization, so it can fight with promotion
to the larger type. It apparently takes a special sequence and subtarget
to avoid more basic simplifications that would hide the problem.

But there's a bigger question raised here: why does distributeTruncateThroughAnd()
even exist? It duplicates functionality from a more minimal pattern that we
already have. But getting rid of this function requires some preliminary steps.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354594 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-21 16:01:48 +00:00
Nirav Dave
30f0c1109c [DAGCombine] Generalize Dead Store to overlapping stores.
Summary:
Remove stores that are immediately overwritten by larger
stores.

Reviewers: courbet, rnk

Reviewed By: rnk

Subscribers: javed.absar, hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354518 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-20 21:07:50 +00:00
Clement Courbet
1da2d4699d Re-land the refactoring part of r354244 "[DAGCombiner] Eliminate dead stores to stack."
This is an NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354476 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-20 15:45:58 +00:00
Clement Courbet
3cfd39d61c Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
Breaks some bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354245 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-18 08:24:29 +00:00
Clement Courbet
89d8d90473 [DAGCombiner] Eliminate dead stores to stack.
Summary:
A store to an object whose lifetime is about to end can be removed.

See PR40550 for motivation.

Reviewers: niravd

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354244 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-18 07:59:01 +00:00
Sanjay Patel
51dad635ad [DAGCombiner] convert logic-of-setcc into bit magic (PR40611)
If we're comparing some value for equality against 2 constants
and those constants have an absolute difference of just 1 bit,
then we can offset and mask off that 1 bit and reduce to a single
compare against zero:
         and/or (setcc X, C0, ne), (setcc X, C1, ne/eq) -->
         setcc ((add X, -C1), ~(C0 - C1)), 0, ne/eq

https://rise4fun.com/Alive/XslKj

This transform is disabled by default using a TLI hook
("convertSetCCLogicToBitwiseLogic()").

That should be overridden for AArch64, MIPS, Sparc and possibly
others based on the asm shown in:
https://bugs.llvm.org/show_bug.cgi?id=40611

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353859 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-12 17:07:47 +00:00
Benjamin Kramer
e258a80393 Move some classes into anonymous namespaces. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353710 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-11 15:16:21 +00:00
Simon Pilgrim
86334b318c [DAG] Add optional AllowUndefs to isNullOrNullSplat
No change in default behaviour (AllowUndefs = false)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353646 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 17:42:15 +00:00
Simon Pilgrim
bdd96a725f [DAGCombine] Simplify funnel shifts with undef/zero args to bitshifts
Now that we have SimplifyDemandedBits support for funnel shifts (rL353539), we need to simplify funnel shifts back to bitshifts in cases where either argument has been folded to undef/zero.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353645 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-10 17:04:00 +00:00
Nemanja Ivanovic
5f3121a8b0 [DAGCombine] Optimize pow(X, 0.75) to sqrt(X) * sqrt(sqrt(X))
The sqrt case is faster and we already do this for the case where
the exponent is 0.25. This adds the 0.75 case which is also not
sensitive to signed zeros.

Patch by Whitney Tsang (Whitney)

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353557 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-08 19:50:58 +00:00
Simon Pilgrim
de0c5e9f25 [TargetLowering] Add SimplifyDemandedBits funnel shift support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353539 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-08 17:19:01 +00:00
Nirav Dave
9274280d4a Revert r353416 "[DAG] Cleanup unused nodes on failed store-to-load forward combine."
This cleanup causes out-of-tree crashes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353527 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-08 15:21:13 +00:00
Simon Pilgrim
33d83dacf6 [DAGCombiner] (add (umax X, C), -C) --> (usubsat X, C) (PR40111)
Move the (add (umax X, C), -C) --> (usubsat X, C) X86 combine into generic DAGCombiner

First of a number of saturated arithmetic folds that can be moved out of X86-specific code for PR40111.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353457 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 20:14:43 +00:00
Nirav Dave
a0c48c8f7d Revert "[DAG] Cleanup of unused node in SimplifySelectCC."
Causes ASAN use-after-poison errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353442 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 18:31:05 +00:00
Sanjay Patel
df01cb5e33 [DAGCombiner] fold add/sub with bool operand based on target's boolean contents
I noticed that we are missing this canonicalization in IR:
rL352515
...and then realized that we don't get this right in SDAG either,
so this has to be fixed first regardless of what we choose to do in IR.

The existing fold was limited to scalars and using the wrong predicate
to guard the transform. We have a boolean contents TLI query that can
be used to decide which direction to fold.

This may eventually lead back to the problems/question in:
https://bugs.llvm.org/show_bug.cgi?id=40486
...but it makes no difference to that yet.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353433 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 17:43:34 +00:00
Nirav Dave
24658daa73 [DAG] Cleanup of unused node in SimplifySelectCC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353428 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 17:13:55 +00:00
Nirav Dave
9aa1395994 [DAG] Cleanup unused node on failed SELECT Combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353426 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 16:57:50 +00:00
Nirav Dave
72d855dd8b [DAG] Cleanup unused nodes on failed store-to-load forward combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353416 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-07 15:38:14 +00:00
Nirav Dave
13327941bd [DAG] Immediately cleanup unused nodes from extend-based combines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353338 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-06 20:12:03 +00:00
Clement Courbet
5c9002a0e5 [DAGCombine][NFC] GatherAllAliases should take a LSBaseSDNode.
GatherAllAliases only makes sense for LSBaseSDNode. Enforce it with
static typing instead of runtime cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353291 91177308-0d34-0410-b5e6-96231b3b80d8
2019-02-06 12:36:17 +00:00