From 0a6fde48954471957234ea42b7645425d8765f5f Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Tue, 16 Jan 2018 19:49:52 +0000 Subject: Move target MV resolver to COMDAT As reported here: https://bugs.llvm.org/show_bug.cgi?id=35921 The resolver functions should be in their own COMDAT regions. This patch sets that up. Differential Revision: https://reviews.llvm.org/D42110 llvm-svn: 322592 --- clang/lib/CodeGen/CodeGenModule.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'clang/lib/CodeGen/CodeGenModule.cpp') diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index acf6e4d63cc..fb16c8f2607 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -2185,6 +2185,9 @@ void CodeGenModule::emitMultiVersionFunctions() { llvm::Function *ResolverFunc = cast( GetGlobalValue((getMangledName(GD) + ".resolver").str())); + if (supportsCOMDAT()) + ResolverFunc->setComdat( + getModule().getOrInsertComdat(ResolverFunc->getName())); std::stable_sort( Options.begin(), Options.end(), std::greater()); -- cgit v1.2.3