[CTU] Do not allow different CPP dialects in CTU
authorGabor Marton <martongabesz@gmail.com>
Thu, 28 Feb 2019 15:24:59 +0000 (15:24 +0000)
committerGabor Marton <martongabesz@gmail.com>
Thu, 28 Feb 2019 15:24:59 +0000 (15:24 +0000)
commita006b80a74874fbc25e349dcb71462fc5f93aac7
treee51a213d98ddc254491339f35c0f2ccb614f6b79
parentdf587199794469b4b47ae53b0be01a98b5e3ec0f
[CTU] Do not allow different CPP dialects in CTU

Summary:
If CPP dialects are different then return with error.

Consider this STL code:
  template<typename _Alloc>
    struct __alloc_traits
  #if __cplusplus >= 201103L
    : std::allocator_traits<_Alloc>
  #endif
    { // ...
    };
This class template would create ODR errors during merging the two units,
since in one translation unit the class template has a base class, however
in the other unit it has none.

Reviewers: xazax.hun, a_sidorin, r.stahl

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57906

llvm-svn: 355096
clang/include/clang/CrossTU/CrossTranslationUnit.h
clang/lib/CrossTU/CrossTranslationUnit.cpp