+Sean Callanan <[email protected]> I couldn't include you on the Phabricator issue Sean, so I'm CC'ing you directly. PTAL
On Tue Jan 06 2015 at 3:45:04 PM Zachary Turner <[email protected]> wrote: > MS ABI guard variables end with @4IA, so this patch teaches the > interpreter about that. Additionally, there was an issue with > TurnGuardLoadIntoZero which was causing some guard uses of a variable to be > missed. This fixes that by calling Instruction::replaceAllUsesWith() > instead of trying to replicate that function. > > This fixes between 8 and 10 tests on Windows, and in particular fixes > evaluation of C / C++ local variables. > > http://reviews.llvm.org/D6859 > > Files: > source/Expression/IRForTarget.cpp > > Index: source/Expression/IRForTarget.cpp > =================================================================== > --- source/Expression/IRForTarget.cpp > +++ source/Expression/IRForTarget.cpp > @@ -2043,8 +2043,12 @@ > > GlobalVariable *GV = dyn_cast<GlobalVariable>(Old); > > - if (!GV || !GV->hasName() || !GV->getName().startswith("_ZGV")) > + if (!GV || !GV->hasName() || > + (!GV->getName().startswith("_ZGV") && // Itanium ABI guard > variable > + !GV->getName().endswith("@4IA"))) // Microsoft ABI guard > variable > + { > return false; > + } > > return true; > } > @@ -2052,20 +2056,8 @@ > void > IRForTarget::TurnGuardLoadIntoZero(llvm::Instruction* guard_load) > { > - Constant* zero(ConstantInt::get(Type::getInt8Ty(m_module->getContext()), > 0, true)); > - > - for (llvm::User *u : guard_load->users()) > - { > - if (isa<Constant>(u)) > - { > - // do nothing for the moment > - } > - else > - { > - u->replaceUsesOfWith(guard_load, zero); > - } > - } > - > + Constant *zero(Constant::getNullValue(guard_load->getType())); > + guard_load->replaceAllUsesWith(zero); > guard_load->eraseFromParent(); > } > > EMAIL PREFERENCES > http://reviews.llvm.org/settings/panel/emailpreferences/ >
_______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
