r351701 - Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...>

Axel Naumann via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 22 23:20:53 PST 2019


This got fixed in r351820.

Thanks, Serge!

Axel.

On 1/23/19 5:56 AM, Hubert Tong wrote:
> I am also hitting this. GCC 4.8 is still the minimum at this time.
>
> -- HT
>
> On Tue, Jan 22, 2019 at 8:10 AM Axel Naumann via cfe-commits
> <cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>> wrote:
>
>     Hi,
>
>     This broke our clang builds with
>
>     $ gcc --version
>     gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
>
>     on CentOS Linux release 7.6.1810 (Core),
>
>     [ 23%] Building CXX object
>     tools/clang/lib/Basic/CMakeFiles/clangBasic.dir/Module.cpp.o
>
>     In file included from include/llvm/ADT/StringMap.h:20:0,
>                      from include/llvm/Support/Host.h:16,
>                      from include/llvm/ADT/Hashing.h:48,
>                      from include/llvm/ADT/ArrayRef.h:12,
>                      from include/llvm/ADT/DenseMapInfo.h:16,
>                      from include/llvm/ADT/DenseMap.h:16,
>                      from
>     tools/clang/include/clang/Basic/FileManager.h:19,
>                      from tools/clang/include/clang/Basic/Module.h:18,
>                      from tools/clang/lib/Basic/Module.cpp:14:
>     include/llvm/Support/PointerLikeTypeTraits.h: In instantiation of
>     ‘struct llvm::PointerLikeTypeTraits<clang::Module*>’:
>     /usr/include/c++/4.8.2/type_traits:1087:41:   required by substitution
>     of ‘template<class _Tp1, class _Up1> static decltype
>     (((declval<_Tp1>)()=(declval<_Up1>)(), std::__sfinae_types::__one()))
>     std::__is_assignable_helper<_Tp, _Up>::__test(int) [with _Tp1 = _Tp1;
>     _Up1 = _Up1; _Tp =
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&; _Up = const
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&] [with _Tp1 =
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&; _Up1 = const
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&]’
>     /usr/include/c++/4.8.2/type_traits:1094:50:   required from ‘constexpr
>     const bool
>     std::__is_assignable_helper<llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*,
>     1u, bool> >&, const
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&>::value’
>     /usr/include/c++/4.8.2/type_traits:1099:12:   required from ‘struct
>     std::is_assignable<llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*,
>     1u, bool> >&, const
>     llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >&>’
>     /usr/include/c++/4.8.2/type_traits:1112:12:   required from ‘struct
>     std::__is_copy_assignable_impl<llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*,
>     1u, bool> >, false>’
>     /usr/include/c++/4.8.2/type_traits:1118:12:   required from ‘struct
>     std::is_copy_assignable<llvm::detail::trivial_helper<llvm::PointerIntPair<clang::Module*,
>     1u, bool> > >’
>     include/llvm/Support/type_traits.h:142:25:   required from ‘constexpr
>     const bool
>     llvm::is_trivially_copyable<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >::has_trivial_copy_assign’
>     include/llvm/Support/type_traits.h:163:32:   required from ‘constexpr
>     const bool
>     llvm::is_trivially_copyable<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >::value’
>     include/llvm/ADT/SmallVector.h:321:7:   required from ‘class
>     llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Module*, 1u,
>     bool> >’
>     include/llvm/ADT/SmallVector.h:845:7:   required from ‘class
>     llvm::SmallVector<llvm::PointerIntPair<clang::Module*, 1u, bool>, 2u>’
>     tools/clang/include/clang/Basic/Module.h:290:30:   required from here
>     include/llvm/Support/PointerLikeTypeTraits.h:59:8: error: invalid
>     application of ‘__alignof__’ to incomplete type ‘clang::Module’
>        enum { NumLowBitsAvailable =
>     detail::ConstantLog2<alignof(T)>::value };
>             ^
>
>     FYI in case you wonder:
>
>     $ ls -l /usr/include/c++/
>     total 8
>     drwxr-xr-x. 12 root root 4096 Dec 11 03:24 4.8.2
>     lrwxrwxrwx.  1 root root    5 Dec 11 03:24 4.8.5 -> 4.8.2
>
>
>     Are we outside the "allowed" range for GCC versions?
>
>     Cheers, Axel.
>
>     On 1/20/19 10:19 PM, Serge Guelton via cfe-commits wrote:
>     > Author: serge_sans_paille
>     > Date: Sun Jan 20 13:19:56 2019
>     > New Revision: 351701
>     >
>     > URL: http://llvm.org/viewvc/llvm-project?rev=351701&view=rev
>     > Log:
>     > Replace llvm::isPodLike<...>  by llvm::is_trivially_copyable<...>
>     >
>     > As noted in https://bugs.llvm.org/show_bug.cgi?id=36651, the
>     specialization for
>     > isPodLike<std::pair<...>> did not match the expectation of
>     > std::is_trivially_copyable which makes the memcpy optimization
>     invalid.
>     >
>     > This patch renames the llvm::isPodLike trait into
>     llvm::is_trivially_copyable.
>     > Unfortunately std::is_trivially_copyable is not portable across
>     compiler / STL
>     > versions. So a portable version is provided too.
>     >
>     > Note that the following specialization were invalid:
>     >
>     >     std::pair<T0, T1>
>     >     llvm::Optional<T>
>     >
>     > Tests have been added to assert that former specialization are
>     respected by the
>     > standard usage of llvm::is_trivially_copyable, and that when a
>     decent version
>     > of std::is_trivially_copyable is available,
>     llvm::is_trivially_copyable is
>     > compared to std::is_trivially_copyable.
>     >
>     > As of this patch, llvm::Optional is no longer considered
>     trivially copyable,
>     > even if T is. This is to be fixed in a later patch, as it has
>     impact on a
>     > long-running bug (see r347004)
>     >
>     > Note that GCC warns about this UB, but this got silented by
>     https://reviews.llvm.org/D50296.
>     >
>     > Differential Revision: https://reviews.llvm.org/D54472
>     >
>     >
>     > Modified:
>     >     cfe/trunk/include/clang/AST/BaseSubobject.h
>     >     cfe/trunk/include/clang/AST/CharUnits.h
>     >     cfe/trunk/include/clang/AST/DeclAccessPair.h
>     >     cfe/trunk/include/clang/AST/DeclarationName.h
>     >     cfe/trunk/include/clang/AST/ExprObjC.h
>     >     cfe/trunk/include/clang/AST/GlobalDecl.h
>     >     cfe/trunk/include/clang/AST/Type.h
>     >     cfe/trunk/include/clang/Analysis/ProgramPoint.h
>     >     cfe/trunk/include/clang/Basic/IdentifierTable.h
>     >     cfe/trunk/include/clang/Basic/SourceLocation.h
>     >     cfe/trunk/include/clang/Lex/Token.h
>     >     cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h
>     >     cfe/trunk/include/clang/Sema/Ownership.h
>     >   
>      cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>     >     cfe/trunk/lib/AST/VTableBuilder.cpp
>     >     cfe/trunk/lib/Sema/SemaChecking.cpp
>     >     cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
>     >     cfe/trunk/test/Analysis/llvm-conventions.cpp
>     >     cfe/trunk/tools/libclang/Indexing.cpp
>     >
>     > Modified: cfe/trunk/include/clang/AST/BaseSubobject.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/BaseSubobject.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/BaseSubobject.h (original)
>     > +++ cfe/trunk/include/clang/AST/BaseSubobject.h Sun Jan 20
>     13:19:56 2019
>     > @@ -80,11 +80,6 @@ template<> struct DenseMapInfo<clang::Ba
>     >    }
>     >  };
>>     > -// It's OK to treat BaseSubobject as a POD type.
>     > -template <> struct isPodLike<clang::BaseSubobject> {
>     > -  static const bool value = true;
>     > -};
>     > -
>     >  } // namespace llvm
>>     >  #endif // LLVM_CLANG_AST_BASESUBOBJECT_H
>     >
>     > Modified: cfe/trunk/include/clang/AST/CharUnits.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/CharUnits.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/CharUnits.h (original)
>     > +++ cfe/trunk/include/clang/AST/CharUnits.h Sun Jan 20 13:19:56 2019
>     > @@ -237,10 +237,6 @@ template<> struct DenseMapInfo<clang::Ch
>     >    }
>     >  };
>>     > -template <> struct isPodLike<clang::CharUnits> {
>     > -  static const bool value = true;
>     > -};
>     > -
>     >  } // end namespace llvm
>>     >  #endif // LLVM_CLANG_AST_CHARUNITS_H
>     >
>     > Modified: cfe/trunk/include/clang/AST/DeclAccessPair.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclAccessPair.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/DeclAccessPair.h (original)
>     > +++ cfe/trunk/include/clang/AST/DeclAccessPair.h Sun Jan 20
>     13:19:56 2019
>     > @@ -60,12 +60,4 @@ public:
>     >  };
>     >  }
>>     > -// Take a moment to tell SmallVector that DeclAccessPair is POD.
>     > -namespace llvm {
>     > -template<typename> struct isPodLike;
>     > -template<> struct isPodLike<clang::DeclAccessPair> {
>     > -   static const bool value = true;
>     > -};
>     > -}
>     > -
>     >  #endif
>     >
>     > Modified: cfe/trunk/include/clang/AST/DeclarationName.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclarationName.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/DeclarationName.h (original)
>     > +++ cfe/trunk/include/clang/AST/DeclarationName.h Sun Jan 20
>     13:19:56 2019
>     > @@ -861,9 +861,6 @@ struct DenseMapInfo<clang::DeclarationNa
>     >    }
>     >  };
>>     > -template <>
>     > -struct isPodLike<clang::DeclarationName> { static const bool
>     value = true; };
>     > -
>     >  } // namespace llvm
>>     >  #endif // LLVM_CLANG_AST_DECLARATIONNAME_H
>     >
>     > Modified: cfe/trunk/include/clang/AST/ExprObjC.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExprObjC.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/ExprObjC.h (original)
>     > +++ cfe/trunk/include/clang/AST/ExprObjC.h Sun Jan 20 13:19:56 2019
>     > @@ -255,12 +255,6 @@ struct ObjCDictionaryElement {
>>     >  } // namespace clang
>>     > -namespace llvm {
>     > -
>     > -template <> struct isPodLike<clang::ObjCDictionaryElement> :
>     std::true_type {};
>     > -
>     > -} // namespace llvm
>     > -
>     >  namespace clang {
>>     >  /// Internal struct for storing Key/value pair.
>     >
>     > Modified: cfe/trunk/include/clang/AST/GlobalDecl.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/GlobalDecl.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/GlobalDecl.h (original)
>     > +++ cfe/trunk/include/clang/AST/GlobalDecl.h Sun Jan 20 13:19:56
>     2019
>     > @@ -139,13 +139,6 @@ namespace llvm {
>     >      }
>     >    };
>>     > -  // GlobalDecl isn't *technically* a POD type. However, its
>     copy constructor,
>     > -  // copy assignment operator, and destructor are all trivial.
>     > -  template <>
>     > -  struct isPodLike<clang::GlobalDecl> {
>     > -    static const bool value = true;
>     > -  };
>     > -
>     >  } // namespace llvm
>>     >  #endif // LLVM_CLANG_AST_GLOBALDECL_H
>     >
>     > Modified: cfe/trunk/include/clang/AST/Type.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/AST/Type.h (original)
>     > +++ cfe/trunk/include/clang/AST/Type.h Sun Jan 20 13:19:56 2019
>     > @@ -94,9 +94,6 @@ namespace llvm {
>     >      enum { NumLowBitsAvailable = clang::TypeAlignmentInBits };
>     >    };
>>     > -  template <>
>     > -  struct isPodLike<clang::QualType> { static const bool value =
>     true; };
>     > -
>     >  } // namespace llvm
>>     >  namespace clang {
>     >
>     > Modified: cfe/trunk/include/clang/Analysis/ProgramPoint.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/ProgramPoint.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Analysis/ProgramPoint.h (original)
>     > +++ cfe/trunk/include/clang/Analysis/ProgramPoint.h Sun Jan 20
>     13:19:56 2019
>     > @@ -777,9 +777,6 @@ static bool isEqual(const clang::Program
>>     >  };
>>     > -template <>
>     > -struct isPodLike<clang::ProgramPoint> { static const bool value
>     = true; };
>     > -
>     >  } // end namespace llvm
>>     >  #endif
>     >
>     > Modified: cfe/trunk/include/clang/Basic/IdentifierTable.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Basic/IdentifierTable.h (original)
>     > +++ cfe/trunk/include/clang/Basic/IdentifierTable.h Sun Jan 20
>     13:19:56 2019
>     > @@ -938,9 +938,6 @@ struct DenseMapInfo<clang::Selector> {
>     >    }
>     >  };
>>     > -template <>
>     > -struct isPodLike<clang::Selector> { static const bool value =
>     true; };
>     > -
>     >  template<>
>     >  struct PointerLikeTypeTraits<clang::Selector> {
>     >    static const void *getAsVoidPointer(clang::Selector P) {
>     >
>     > Modified: cfe/trunk/include/clang/Basic/SourceLocation.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/SourceLocation.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Basic/SourceLocation.h (original)
>     > +++ cfe/trunk/include/clang/Basic/SourceLocation.h Sun Jan 20
>     13:19:56 2019
>     > @@ -25,7 +25,6 @@
>     >  namespace llvm {
>>     >  template <typename T> struct DenseMapInfo;
>     > -template <typename T> struct isPodLike;
>>     >  } // namespace llvm
>>     > @@ -457,11 +456,6 @@ namespace llvm {
>     >      }
>     >    };
>>     > -  template <>
>     > -  struct isPodLike<clang::SourceLocation> { static const bool
>     value = true; };
>     > -  template <>
>     > -  struct isPodLike<clang::FileID> { static const bool value =
>     true; };
>     > -
>     >    // Teach SmallPtrSet how to handle SourceLocation.
>     >    template<>
>     >    struct PointerLikeTypeTraits<clang::SourceLocation> {
>     >
>     > Modified: cfe/trunk/include/clang/Lex/Token.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Token.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Lex/Token.h (original)
>     > +++ cfe/trunk/include/clang/Lex/Token.h Sun Jan 20 13:19:56 2019
>     > @@ -328,9 +328,4 @@ struct PPConditionalInfo {
>>     >  } // end namespace clang
>>     > -namespace llvm {
>     > -  template <>
>     > -  struct isPodLike<clang::Token> { static const bool value =
>     true; };
>     > -} // end namespace llvm
>     > -
>     >  #endif // LLVM_CLANG_LEX_TOKEN_H
>     >
>     > Modified: cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h (original)
>     > +++ cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h Sun Jan
>     20 13:19:56 2019
>     > @@ -655,14 +655,6 @@ public:
>>     >  } // namespace clang
>>     > -namespace llvm {
>     > -
>     > -template <> struct isPodLike<clang::CodeCompletionString::Chunk> {
>     > -  static const bool value = true;
>     > -};
>     > -
>     > -} // namespace llvm
>     > -
>     >  namespace clang {
>>     >  /// A builder class used to construct new code-completion strings.
>     >
>     > Modified: cfe/trunk/include/clang/Sema/Ownership.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Ownership.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/include/clang/Sema/Ownership.h (original)
>     > +++ cfe/trunk/include/clang/Sema/Ownership.h Sun Jan 20 13:19:56
>     2019
>     > @@ -128,9 +128,6 @@ namespace llvm {
>     >      }
>     >    };
>>     > -  template <class T>
>     > -  struct isPodLike<clang::OpaquePtr<T>> { static const bool
>     value = true; };
>     > -
>     >  } // namespace llvm
>>     >  namespace clang {
>     >
>     > Modified:
>     cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > ---
>     cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>     (original)
>     > +++
>     cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>     Sun Jan 20 13:19:56 2019
>     > @@ -667,13 +667,4 @@ private:
>>     >  } // namespace clang
>>     > -namespace llvm {
>     > -
>     > -template <typename T> struct isPodLike;
>     > -template <> struct isPodLike<clang::ento::SVal> {
>     > -  static const bool value = true;
>     > -};
>     > -
>     > -} // namespace llvm
>     > -
>     >  #endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SVALS_H
>     >
>     > Modified: cfe/trunk/lib/AST/VTableBuilder.cpp
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/lib/AST/VTableBuilder.cpp (original)
>     > +++ cfe/trunk/lib/AST/VTableBuilder.cpp Sun Jan 20 13:19:56 2019
>     > @@ -846,6 +846,8 @@ private:
>     >        : BaseOffset(CharUnits::Zero()),
>     >        BaseOffsetInLayoutClass(CharUnits::Zero()),
>     >        VTableIndex(0) { }
>     > +
>     > +    MethodInfo(MethodInfo const&) = default;
>     >    };
>>     >    typedef llvm::DenseMap<const CXXMethodDecl *, MethodInfo>
>     MethodInfoMapTy;
>     >
>     > Modified: cfe/trunk/lib/Sema/SemaChecking.cpp
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/lib/Sema/SemaChecking.cpp (original)
>     > +++ cfe/trunk/lib/Sema/SemaChecking.cpp Sun Jan 20 13:19:56 2019
>     > @@ -11662,12 +11662,12 @@ class SequenceChecker : public Evaluated
>     >      class Seq {
>     >        friend class SequenceTree;
>>     > -      unsigned Index = 0;
>     > +      unsigned Index;
>>     >        explicit Seq(unsigned N) : Index(N) {}
>>     >      public:
>     > -      Seq() = default;
>     > +      Seq() : Index(0) {}
>     >      };
>>     >      SequenceTree() { Values.push_back(Value(0)); }
>     >
>     > Modified: cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp (original)
>     > +++ cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp Sun Jan 20
>     13:19:56 2019
>     > @@ -130,10 +130,6 @@ namespace llvm {
>     >      return os;
>     >    }
>>     > -  template <typename T> struct isPodLike;
>     > -  template <> struct isPodLike<BindingKey> {
>     > -    static const bool value = true;
>     > -  };
>     >  } // end llvm namespace
>>     >  #ifndef NDEBUG
>     >
>     > Modified: cfe/trunk/test/Analysis/llvm-conventions.cpp
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/llvm-conventions.cpp?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/test/Analysis/llvm-conventions.cpp (original)
>     > +++ cfe/trunk/test/Analysis/llvm-conventions.cpp Sun Jan 20
>     13:19:56 2019
>     > @@ -152,8 +152,6 @@ inline bool operator>(StringRef LHS, Str
>     >  inline bool operator>=(StringRef LHS, StringRef RHS);
>     >  inline std::string &operator+=(std::string &buffer, StringRef
>     string);
>     >  hash_code hash_value(StringRef S);
>     > -template <typename T> struct isPodLike;
>     > -template <> struct isPodLike<StringRef> { static const bool
>     value = true; };
>>     >  } // end of namespace llvm
>>     >
>     > Modified: cfe/trunk/tools/libclang/Indexing.cpp
>     > URL:
>     http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/Indexing.cpp?rev=351701&r1=351700&r2=351701&view=diff
>     >
>     ==============================================================================
>     > --- cfe/trunk/tools/libclang/Indexing.cpp (original)
>     > +++ cfe/trunk/tools/libclang/Indexing.cpp Sun Jan 20 13:19:56 2019
>     > @@ -93,9 +93,6 @@ typedef llvm::DenseSet<PPRegion> PPRegio
>     >  } // end anonymous namespace
>>     >  namespace llvm {
>     > -  template <> struct isPodLike<PPRegion> {
>     > -    static const bool value = true;
>     > -  };
>>     >    template <>
>     >    struct DenseMapInfo<PPRegion> {
>     >
>     >
>     > _______________________________________________
>     > cfe-commits mailing list
>     > cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
>     > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>     >
>
>     -- 
>     ROOT https://root.cern
>     CERN EP-SFT, 1211 Geneva 23, Switzerland
>     Phone: +41227678225
>
>     _______________________________________________
>     cfe-commits mailing list
>     cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-- 
ROOT https://root.cern
CERN EP-SFT, 1211 Geneva 23, Switzerland
Phone: +41227678225

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190123/ace7f57f/attachment-0001.html>


More information about the cfe-commits mailing list