path: root/src/jit/lir.cpp
diff options
authorJiyoung Yun <>2017-02-10 11:35:12 (GMT)
committerJiyoung Yun <>2017-02-10 11:35:12 (GMT)
commit4b11dc566a5bbfa1378d6266525c281b028abcc8 (patch)
treeb48831a898906734f8884d08b6e18f1144ee2b82 /src/jit/lir.cpp
parentdb20f3f1bb8595633a7e16c8900fd401a453a6b5 (diff)
Imported Upstream version
Diffstat (limited to 'src/jit/lir.cpp')
1 files changed, 7 insertions, 3 deletions
diff --git a/src/jit/lir.cpp b/src/jit/lir.cpp
index 35dd181..6eb8a49 100644
--- a/src/jit/lir.cpp
+++ b/src/jit/lir.cpp
@@ -1494,9 +1494,13 @@ bool LIR::Range::CheckLIR(Compiler* compiler, bool checkUnusedValues) const
else if (!def->IsValue())
- // Calls may contain "uses" of nodes that do not produce a value. This is an artifact of
- // the HIR and should probably be fixed, but doing so is an unknown amount of work.
- assert(node->OperGet() == GT_CALL);
+ // Stack arguments do not produce a value, but they are considered children of the call.
+ // It may be useful to remove these from being call operands, but that may also impact
+ // other code that relies on being able to reach all the operands from a call node.
+ // The GT_NOP case is because sometimes we eliminate stack argument stores as dead, but
+ // instead of removing them we replace with a NOP.
+ assert((node->OperGet() == GT_CALL) &&
+ (def->OperIsStore() || (def->OperGet() == GT_PUTARG_STK) || (def->OperGet() == GT_NOP)));