forked from OSchip/llvm-project
Share the common code of ComputeHash(Selector Sel) instead of keeping 2 copies in PCHReader and PCHWriter.
No functionality change. llvm-svn: 111629
This commit is contained in:
parent
da7be91e1c
commit
4bd97102e9
|
@ -0,0 +1,29 @@
|
|||
//===--- ASTCommon.cpp - Common stuff for ASTReader/ASTWriter----*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines common functions that both ASTReader and ASTWriter use.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "ASTCommon.h"
|
||||
#include "clang/Basic/IdentifierTable.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
|
||||
using namespace clang;
|
||||
|
||||
unsigned serialization::ComputeHash(Selector Sel) {
|
||||
unsigned N = Sel.getNumArgs();
|
||||
if (N == 0)
|
||||
++N;
|
||||
unsigned R = 5381;
|
||||
for (unsigned I = 0; I != N; ++I)
|
||||
if (IdentifierInfo *II = Sel.getIdentifierInfoForSlot(I))
|
||||
R = llvm::HashString(II->getName(), R);
|
||||
return R;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
//===- ASTCommon.h - Common stuff for ASTReader/ASTWriter -*- C++ -*-=========//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines common functions that both ASTReader and ASTWriter use.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_SERIALIZATION_LIB_AST_COMMON_H
|
||||
#define LLVM_CLANG_SERIALIZATION_LIB_AST_COMMON_H
|
||||
|
||||
namespace clang {
|
||||
class Selector;
|
||||
|
||||
namespace serialization {
|
||||
|
||||
unsigned ComputeHash(Selector Sel);
|
||||
|
||||
} // namespace serialization
|
||||
|
||||
} // namespace clang
|
||||
|
||||
#endif
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
#include "clang/Serialization/ASTReader.h"
|
||||
#include "clang/Serialization/ASTDeserializationListener.h"
|
||||
#include "ASTCommon.h"
|
||||
#include "clang/Frontend/FrontendDiagnostic.h"
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "clang/Sema/Sema.h"
|
||||
|
@ -477,14 +478,7 @@ public:
|
|||
}
|
||||
|
||||
static unsigned ComputeHash(Selector Sel) {
|
||||
unsigned N = Sel.getNumArgs();
|
||||
if (N == 0)
|
||||
++N;
|
||||
unsigned R = 5381;
|
||||
for (unsigned I = 0; I != N; ++I)
|
||||
if (IdentifierInfo *II = Sel.getIdentifierInfoForSlot(I))
|
||||
R = llvm::HashString(II->getName(), R);
|
||||
return R;
|
||||
return serialization::ComputeHash(Sel);
|
||||
}
|
||||
|
||||
// This hopefully will just get inlined and removed by the optimizer.
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Serialization/ASTWriter.h"
|
||||
#include "ASTCommon.h"
|
||||
#include "clang/Sema/Sema.h"
|
||||
#include "clang/Sema/IdentifierResolver.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
|
@ -1571,14 +1572,7 @@ public:
|
|||
explicit ASTMethodPoolTrait(ASTWriter &Writer) : Writer(Writer) { }
|
||||
|
||||
static unsigned ComputeHash(Selector Sel) {
|
||||
unsigned N = Sel.getNumArgs();
|
||||
if (N == 0)
|
||||
++N;
|
||||
unsigned R = 5381;
|
||||
for (unsigned I = 0; I != N; ++I)
|
||||
if (IdentifierInfo *II = Sel.getIdentifierInfoForSlot(I))
|
||||
R = llvm::HashString(II->getName(), R);
|
||||
return R;
|
||||
return serialization::ComputeHash(Sel);
|
||||
}
|
||||
|
||||
std::pair<unsigned,unsigned>
|
||||
|
|
|
@ -2,6 +2,7 @@ set(LLVM_NO_RTTI 1)
|
|||
|
||||
add_clang_library(clangSerialization
|
||||
GeneratePCH.cpp
|
||||
ASTCommon.cpp
|
||||
ASTReader.cpp
|
||||
ASTReaderDecl.cpp
|
||||
ASTReaderStmt.cpp
|
||||
|
|
Loading…
Reference in New Issue