From 4b11dc566a5bbfa1378d6266525c281b028abcc8 Mon Sep 17 00:00:00 2001 From: Jiyoung Yun Date: Fri, 10 Feb 2017 20:35:12 +0900 Subject: Imported Upstream version 1.0.0.9910 --- src/jit/lir.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/jit/lir.cpp') diff --git a/src/jit/lir.cpp b/src/jit/lir.cpp index 35dd1815ef..6eb8a49aca 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))); continue; } -- cgit v1.2.3