From: Richard Smith Date: Tue, 17 Mar 2015 02:36:51 +0000 (+0000) Subject: Fix ODR violations caused by putting anonymous namespaces in header files (and X-Git-Tag: llvmorg-3.7.0-rc1~9047 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=92f18ffce75ee4baf83cf77cf83edb39e7480909;p=platform%2Fupstream%2Fllvm.git Fix ODR violations caused by putting anonymous namespaces in header files (and then using the symbols from those anonymous namespaces from outside the anonymous namespace). This was "detected" by causing the modules selfhost to fail in some cases. The corresponding Clang bug was fixed in r232455. llvm-svn: 232457 --- diff --git a/llvm/include/llvm/Analysis/DominanceFrontierImpl.h b/llvm/include/llvm/Analysis/DominanceFrontierImpl.h index 735bfb8..278d298 100644 --- a/llvm/include/llvm/Analysis/DominanceFrontierImpl.h +++ b/llvm/include/llvm/Analysis/DominanceFrontierImpl.h @@ -23,7 +23,6 @@ namespace llvm { -namespace { template class DFCalculateWorkObject { public: @@ -37,7 +36,6 @@ public: const DomTreeNodeT *Node; const DomTreeNodeT *parentNode; }; -} template void DominanceFrontierBase::removeBlock(BlockT *BB) { diff --git a/llvm/include/llvm/Analysis/LoopInfoImpl.h b/llvm/include/llvm/Analysis/LoopInfoImpl.h index 3321f39..7cc4a77 100644 --- a/llvm/include/llvm/Analysis/LoopInfoImpl.h +++ b/llvm/include/llvm/Analysis/LoopInfoImpl.h @@ -402,7 +402,6 @@ static void discoverAndMapSubloop(LoopT *L, ArrayRef Backedges, L->reserveBlocks(NumBlocks); } -namespace { /// Populate all loop data in a stable order during a single forward DFS. template class PopulateLoopsDFS { @@ -430,7 +429,6 @@ protected: DFSStack.push_back(std::make_pair(Block, BlockTraits::child_begin(Block))); } }; -} // anonymous /// Top-level driver for the forward DFS within the loop. template