Hola Reid, Comments inline.
Thanks, Chuck. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Reid Spencer Sent: Friday, July 27, 2007 10:05 AM To: CVS Commit Messages for LLVM repository Subject: Re: [llvm-commits] Two patches: some VStudio compiler errors and aninterpreter multi-use crash Chuck, Looks okay to me. Some feedback for you .. Reid. On Fri, 2007-07-27 at 09:31 -0700, Chuck Rose III wrote: > > Index: ExecutionEngine/Interpreter/ExternalFunctions.cpp > =================================================================== > --- ExecutionEngine/Interpreter/ExternalFunctions.cpp (revision > 40471) > +++ ExecutionEngine/Interpreter/ExternalFunctions.cpp (working copy) > @@ -25,6 +25,7 @@ > #include "llvm/Support/Streams.h" > #include "llvm/System/DynamicLibrary.h" > #include "llvm/Target/TargetData.h" > +#include "llvm/Support/ManagedStatic.h" > #include <csignal> > #include <map> > #include <cmath> > @@ -33,7 +34,7 @@ > using namespace llvm; > > typedef GenericValue (*ExFunc)(FunctionType *, const > vector<GenericValue> &); > -static std::map<const Function *, ExFunc> Functions; > +static ManagedStatic<std::map<const Function *, ExFunc> > Functions; > static std::map<std::string, ExFunc> FuncNames; Why not make FuncNames a ManagedStatic as well? It should most likely be one as well. I'll make that change in my area and run it through its paces in our system and will put that in as a second fix next week. I've been working with our system here with that first fix applied to llvm for a few weeks now, so I have good confidence that it doesn't mess things up. I'd like to get my current crop of fixes in today so I can checkout tonight on a clean system and see that the new vstudio files build there too. > > static Interpreter *TheInterpreter; > @@ -80,7 +81,7 @@ > FnPtr = (ExFunc)(intptr_t) > sys::DynamicLibrary::SearchForAddressOfSymbol(F->getName()); > if (FnPtr != 0) > - Functions.insert(std::make_pair(F, FnPtr)); // Cache for later > + Functions->insert(std::make_pair(F, FnPtr)); // Cache for later > return FnPtr; > } > > @@ -90,8 +91,8 @@ > > // Do a lookup to see if the function is in our cache... this > should just be a > // deferred annotation! > - std::map<const Function *, ExFunc>::iterator FI = > Functions.find(F); > - ExFunc Fn = (FI == Functions.end()) ? lookupFunction(F) : > FI->second; > + std::map<const Function *, ExFunc>::iterator FI = > Functions->find(F); > + ExFunc Fn = (FI == Functions->end()) ? lookupFunction(F) : > FI->second; > if (Fn == 0) { > cerr << "Tried to execute an unknown external function: " > << F->getType()->getDescription() << " " << F->getName() << > "\n"; > Index: Transforms/Scalar/LoopUnswitch.cpp > =================================================================== > --- Transforms/Scalar/LoopUnswitch.cpp (revision 40471) > +++ Transforms/Scalar/LoopUnswitch.cpp (working copy) > @@ -482,9 +482,9 @@ > for (DominanceFrontier::DomSetType::iterator I = S.begin(), E = > S.end(); > I != E; ++I) { > BasicBlock *BB = *I; > - DenseMap<const Value*, Value*>::iterator I = VM.find(BB); > - if (I != VM.end()) > - NewDFSet.insert(cast<BasicBlock>(I->second)); > + DenseMap<const Value*, Value*>::iterator IDM = VM.find(BB); > + if (IDM != VM.end()) > + NewDFSet.insert(cast<BasicBlock>(IDM->second)); I assume this is because of a VC++ error/warning on the redefinition of I ? Exactly. Vstudio doesn't like that. Ditto for the patch on TableGen too. > else > NewDFSet.insert(BB); > } > > Index: TableGen/RegisterInfoEmitter.cpp > =================================================================== > --- TableGen/RegisterInfoEmitter.cpp (revision 40471) > +++ TableGen/RegisterInfoEmitter.cpp (working copy) > @@ -240,8 +240,8 @@ > > bool Empty = true; > > - for (unsigned subrc = 0, e2 = RC.SubRegClasses.size(); > - subrc != e2; ++subrc) { > + for (unsigned subrc = 0, subrcMax = RC.SubRegClasses.size(); > + subrc != subrcMax; ++subrc) { > unsigned rc2 = 0, e2 = RegisterClasses.size(); > for (; rc2 != e2; ++rc2) { > const CodeGenRegisterClass &RC2 = RegisterClasses[rc2]; > _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits