From 3750b7d55dc655b4be9b34e210e76a5ac38d6686 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 24 Dec 2013 15:03:48 -0800 Subject: fix phi cycle detection getting confused by non-relevant values --- lib/Target/CppBackend/CPPBackend.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/Target/CppBackend/CPPBackend.cpp') diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index 4244c2689e..35f679185d 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -330,9 +330,11 @@ std::string JSWriter::getPhiCode(const BasicBlock *From, const BasicBlock *To) { Value *V = P->getIncomingValue(index); values[name] = V; std::string vname = getValueAsStr(V); - if (!dyn_cast(V)) { - deps[name] = vname; - undeps[vname] = name; + if (const Instruction *VI = dyn_cast(V)) { + if (VI->getParent() == To) { + deps[name] = vname; + undeps[vname] = name; + } } } // Emit assignments+values, taking into account dependencies, and breaking cycles -- cgit v1.2.3-70-g09d2