r178952 - Remove nondeterminism introduced in r178950.

Richard Smith richard at metafoo.co.uk
Fri Apr 12 18:30:26 PDT 2013


On Mon, Apr 8, 2013 at 10:42 AM, John McCall <rjmccall at apple.com> wrote:

>
> On Apr 6, 2013, at 12:07 AM, Richard Smith <richard-llvm at metafoo.co.uk>
> wrote:
>
> > Author: rsmith
> > Date: Sat Apr  6 02:07:44 2013
> > New Revision: 178952
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=178952&view=rev
> > Log:
> > Remove nondeterminism introduced in r178950.
> >
> > Modified:
> >    cfe/trunk/lib/CodeGen/CodeGenModule.cpp
> >    cfe/trunk/lib/CodeGen/CodeGenModule.h
> >
> > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=178952&r1=178951&r2=178952&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
> > +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Sat Apr  6 02:07:44 2013
> > @@ -1732,13 +1732,15 @@ void CodeGenModule::MaybeHandleStaticInE
> >   // OK, this is an internal linkage entity inside an extern "C" linkage
> >   // specification. Make a note of that so we can give it the "expected"
> >   // mangled name if nothing else is using that name.
> > -  StaticExternCMap::iterator I =
> > -      StaticExternCValues.insert(std::make_pair(D->getIdentifier(),
> GV)).first;
> > +  std::pair<StaticExternCMap::iterator, bool> R =
> > +      StaticExternCValues.insert(std::make_pair(D->getIdentifier(),
> GV));
> >
> >   // If we have multiple internal linkage entities with the same name
> >   // in extern "C" regions, none of them gets that name.
> > -  if (I->second != GV)
> > -    I->second = 0;
> > +  if (!R.second)
> > +    R.first->second = 0;
> > +  else
> > +    StaticExternCIdents.push_back(D->getIdentifier());
> > }
> >
> > void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
> > @@ -2947,13 +2949,13 @@ static void EmitGlobalDeclMetadata(CodeG
> > /// to such functions with an unmangled name from inline assembly within
> the
> > /// same translation unit.
> > void CodeGenModule::EmitStaticExternCAliases() {
> > -  for (StaticExternCMap::iterator I = StaticExternCValues.begin(),
> > -                                  E = StaticExternCValues.end();
> > -       I != E; ++I)
> > -    if (I->second && !getModule().getNamedValue(I->first->getName()))
> > -      AddUsedGlobal(
> > -        new llvm::GlobalAlias(I->second->getType(),
> I->second->getLinkage(),
> > -                              I->first->getName(), I->second,
> &getModule()));
> > +  for (unsigned I = 0, N = StaticExternCIdents.size(); I != N; ++I) {
> > +    IdentifierInfo *Name = StaticExternCIdents[I];
> > +    llvm::GlobalValue *Val = StaticExternCValues[Name];
> > +    if (Val && !getModule().getNamedValue(Name->getName()))
> > +      AddUsedGlobal(new llvm::GlobalAlias(Val->getType(),
> Val->getLinkage(),
> > +                                          Name->getName(), Val,
> &getModule()));
> > +  }
> > }
> >
> > /// Emits metadata nodes associating all the global values in the
> >
> > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=178952&r1=178951&r2=178952&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
> > +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Sat Apr  6 02:07:44 2013
> > @@ -310,6 +310,7 @@ class CodeGenModule : public CodeGenType
> >   typedef llvm::DenseMap<IdentifierInfo *,
> >                          llvm::GlobalValue *> StaticExternCMap;
> >   StaticExternCMap StaticExternCValues;
> > +  std::vector<IdentifierInfo*> StaticExternCIdents;
>
> I think this is just llvm::MapVector<IdentifierInfo*, llvm::GlobalValue*>.
>

Huh, I somehow didn't find that despite looking for it. r179438, thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130412/15fa2156/attachment.html>


More information about the cfe-commits mailing list