зеркало из https://github.com/microsoft/clang-1.git
Cleanup clang's specializations of simplify_type.
Now that the basic implementation in llvm has been fixed, simplify the specializations in clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178173 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
9083628fec
Коммит
e81fdb1fdd
|
@ -351,15 +351,12 @@ namespace llvm {
|
|||
/// CanQual<T> to a specific Type class. We're prefer isa/dyn_cast/cast/etc.
|
||||
/// to return smart pointer (proxies?).
|
||||
template<typename T>
|
||||
struct simplify_type<const ::clang::CanQual<T> > {
|
||||
struct simplify_type< ::clang::CanQual<T> > {
|
||||
typedef const T *SimpleType;
|
||||
static SimpleType getSimplifiedValue(const ::clang::CanQual<T> &Val) {
|
||||
static SimpleType getSimplifiedValue(::clang::CanQual<T> &Val) {
|
||||
return Val.getTypePtr();
|
||||
}
|
||||
};
|
||||
template<typename T>
|
||||
struct simplify_type< ::clang::CanQual<T> >
|
||||
: public simplify_type<const ::clang::CanQual<T> > {};
|
||||
|
||||
// Teach SmallPtrSet that CanQual<T> is "basically a pointer".
|
||||
template<typename T>
|
||||
|
|
|
@ -69,17 +69,6 @@ public:
|
|||
} // end namespace clang
|
||||
|
||||
namespace llvm {
|
||||
/// Implement simplify_type for AnyFunctionDecl, so that we can dyn_cast from
|
||||
/// AnyFunctionDecl to any function or function template declaration.
|
||||
template<> struct simplify_type<const ::clang::AnyFunctionDecl> {
|
||||
typedef ::clang::NamedDecl* SimpleType;
|
||||
static SimpleType getSimplifiedValue(const ::clang::AnyFunctionDecl &Val) {
|
||||
return Val;
|
||||
}
|
||||
};
|
||||
template<> struct simplify_type< ::clang::AnyFunctionDecl>
|
||||
: public simplify_type<const ::clang::AnyFunctionDecl> {};
|
||||
|
||||
// Provide PointerLikeTypeTraits for non-cvr pointers.
|
||||
template<>
|
||||
class PointerLikeTypeTraits< ::clang::AnyFunctionDecl> {
|
||||
|
|
|
@ -998,14 +998,12 @@ private:
|
|||
namespace llvm {
|
||||
/// Implement simplify_type for QualType, so that we can dyn_cast from QualType
|
||||
/// to a specific Type class.
|
||||
template<> struct simplify_type<const ::clang::QualType> {
|
||||
template<> struct simplify_type< ::clang::QualType> {
|
||||
typedef const ::clang::Type *SimpleType;
|
||||
static SimpleType getSimplifiedValue(const ::clang::QualType &Val) {
|
||||
static SimpleType getSimplifiedValue(::clang::QualType &Val) {
|
||||
return Val.getTypePtr();
|
||||
}
|
||||
};
|
||||
template<> struct simplify_type< ::clang::QualType>
|
||||
: public simplify_type<const ::clang::QualType> {};
|
||||
|
||||
// Teach SmallPtrSet that QualType is "basically a pointer".
|
||||
template<>
|
||||
|
|
|
@ -841,17 +841,10 @@ namespace llvm {
|
|||
|
||||
/// Implement simplify_type for CFGTerminator, so that we can dyn_cast from
|
||||
/// CFGTerminator to a specific Stmt class.
|
||||
template <> struct simplify_type<const ::clang::CFGTerminator> {
|
||||
typedef const ::clang::Stmt *SimpleType;
|
||||
static SimpleType getSimplifiedValue(const ::clang::CFGTerminator &Val) {
|
||||
return Val.getStmt();
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct simplify_type< ::clang::CFGTerminator> {
|
||||
typedef ::clang::Stmt *SimpleType;
|
||||
static SimpleType getSimplifiedValue(const ::clang::CFGTerminator &Val) {
|
||||
return const_cast<SimpleType>(Val.getStmt());
|
||||
static SimpleType getSimplifiedValue(::clang::CFGTerminator &Val) {
|
||||
return Val.getStmt();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1042,7 +1042,7 @@ namespace llvm {
|
|||
typedef const T *SimpleType;
|
||||
|
||||
static SimpleType
|
||||
getSimplifiedValue(const clang::ento::CallEventRef<T>& Val) {
|
||||
getSimplifiedValue(clang::ento::CallEventRef<T>& Val) {
|
||||
return Val.getPtr();
|
||||
}
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче