forked from OSchip/llvm-project
Make the order of visitation of the pending bodies in the AST reader
deterministic. llvm-svn: 165515
This commit is contained in:
parent
62692ce7f3
commit
7c0990ba35
|
@ -33,6 +33,7 @@
|
|||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/APInt.h"
|
||||
#include "llvm/ADT/APSInt.h"
|
||||
#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
|
@ -342,8 +343,13 @@ private:
|
|||
/// declarations that have not yet been linked to their definitions.
|
||||
llvm::SmallPtrSet<Decl *, 4> PendingDefinitions;
|
||||
|
||||
typedef llvm::MapVector<Decl *, uint64_t,
|
||||
llvm::SmallDenseMap<Decl *, unsigned, 4>,
|
||||
llvm::SmallVector<std::pair<Decl *, uint64_t>, 4> >
|
||||
PendingBodiesMap;
|
||||
|
||||
/// \brief Functions or methods that have bodies that will be attached.
|
||||
llvm::SmallDenseMap<Decl *, uint64_t, 4> PendingBodies;
|
||||
PendingBodiesMap PendingBodies;
|
||||
|
||||
/// \brief Read the records that describe the contents of declcontexts.
|
||||
bool ReadDeclContextStorage(ModuleFile &M,
|
||||
|
|
|
@ -6484,8 +6484,8 @@ void ASTReader::finishPendingActions() {
|
|||
// Load the bodies of any functions or methods we've encountered. We do
|
||||
// this now (delayed) so that we can be sure that the declaration chains
|
||||
// have been fully wired up.
|
||||
for (llvm::SmallDenseMap<Decl *, uint64_t, 4>::iterator
|
||||
PB = PendingBodies.begin(), PBEnd = PendingBodies.end();
|
||||
for (PendingBodiesMap::iterator PB = PendingBodies.begin(),
|
||||
PBEnd = PendingBodies.end();
|
||||
PB != PBEnd; ++PB) {
|
||||
if (FunctionDecl *FD = dyn_cast<FunctionDecl>(PB->first)) {
|
||||
// FIXME: Check for =delete/=default?
|
||||
|
|
Loading…
Reference in New Issue