summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPat Gavlin <pgavlin@gmail.com>2016-09-08 10:52:21 -0700
committerGitHub <noreply@github.com>2016-09-08 10:52:21 -0700
commit65c2ff78e0e88f5052751747f6686084caab3d4c (patch)
tree9cfe49a34d2c4bfc03e50ebd663d32cdae6fdaa0
parent70fe825e7245a97c32d9af4212d668e6c1f1e3c5 (diff)
parentdb2281ccbcc610ca255d174a3d3e5cf287776089 (diff)
downloadcoreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.tar.gz
coreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.tar.bz2
coreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.zip
Merge pull request #7106 from pgavlin/DecompTP
Improve decomp throughput.
-rw-r--r--src/jit/decomposelongs.cpp23
-rw-r--r--src/jit/decomposelongs.h2
2 files changed, 9 insertions, 16 deletions
diff --git a/src/jit/decomposelongs.cpp b/src/jit/decomposelongs.cpp
index 25eb5d117a..bf0c424a1d 100644
--- a/src/jit/decomposelongs.cpp
+++ b/src/jit/decomposelongs.cpp
@@ -111,13 +111,7 @@ void DecomposeLongs::DecomposeRangeHelper()
GenTree* node = Range().FirstNonPhiNode();
while (node != nullptr)
{
- LIR::Use use;
- if (!Range().TryGetUse(node, &use))
- {
- use = LIR::Use::GetDummyUse(Range(), node);
- }
-
- node = DecomposeNode(use);
+ node = DecomposeNode(node);
}
assert(Range().CheckLIR(m_compiler));
@@ -132,10 +126,8 @@ void DecomposeLongs::DecomposeRangeHelper()
// Return Value:
// The next node to process.
//
-GenTree* DecomposeLongs::DecomposeNode(LIR::Use& use)
+GenTree* DecomposeLongs::DecomposeNode(GenTree* tree)
{
- GenTree* tree = use.Def();
-
// Handle the case where we are implicitly using the lower half of a long lclVar.
if ((tree->TypeGet() == TYP_INT) && tree->OperIsLocal())
{
@@ -171,14 +163,15 @@ GenTree* DecomposeLongs::DecomposeNode(LIR::Use& use)
}
#endif // DEBUG
+ LIR::Use use;
+ if (!Range().TryGetUse(tree, &use))
+ {
+ use = LIR::Use::GetDummyUse(Range(), tree);
+ }
+
GenTree* nextNode = nullptr;
switch (tree->OperGet())
{
- case GT_PHI:
- case GT_PHI_ARG:
- nextNode = tree->gtNext;
- break;
-
case GT_LCL_VAR:
nextNode = DecomposeLclVar(use);
break;
diff --git a/src/jit/decomposelongs.h b/src/jit/decomposelongs.h
index 72a7ac44c9..2908d7c27e 100644
--- a/src/jit/decomposelongs.h
+++ b/src/jit/decomposelongs.h
@@ -36,7 +36,7 @@ private:
// Driver functions
void DecomposeRangeHelper();
- GenTree* DecomposeNode(LIR::Use& use);
+ GenTree* DecomposeNode(GenTree* tree);
// Per-node type decompose cases
GenTree* DecomposeLclVar(LIR::Use& use);