The infinite loop bug was not caused by the notifyProgress call, but because we accidentally created a loop in _replacedAtoms. When the undefined atom "func" is added to the symbol table second time, it's replacement atom (in _replacedAtoms in SymbolTable.cpp) is set to itself. It's easily fixable. PTAL. http://reviews.llvm.org/D3734