On Jun 21, 2010, at 3:57 PM, Chris Lattner wrote: > On Jun 21, 2010, at 2:27 PM, Fariborz Jahanian wrote: >> URL: http://llvm.org/viewvc/llvm-project?rev=106485&view=rev >> Log: >> In supporting init-priority, globals with the same init_priority >> must be >> emitted in the order in which they are seen (still radar 8076356). > > Thanks Fariborz, one more tweak :) > >> >> if (D->hasAttr<InitPriorityAttr>()) { >> + static unsigned lix = 0; // to keep the lexical order of equal >> priority >> + // objects intact; >> unsigned int order = D->getAttr<InitPriorityAttr>()- >> >getPriority(); >> - PrioritizedCXXGlobalInits.push_back(std::make_pair(order,Fn)); >> + OrderGlobalInitsType Key(order, lix++); >> + PrioritizedCXXGlobalInits.push_back(std::make_pair(Key, Fn)); > > Using a static here will interact poorly with threading. You > already have the order because of the position in the list. How > about using something like: > > OrderGlobalInitsType Key(PrioritizedCXXGlobalInits.size(), lix++);
In http://llvm.org/viewvc/llvm-project?view=rev&revision=106503 (a modified version). - fariborz _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
