summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.cpp2
-rw-r--r--clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp4
-rw-r--r--clang/test/CodeGenCXX/implicit-allocation-functions.cpp4
3 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index ec726098a54..fa9697ec51e 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -806,6 +806,8 @@ static void EmitSizedDeallocationFunction(CodeGenFunction &CGF,
const FunctionDecl *UnsizedDealloc) {
// This is a weak discardable definition of the sized deallocation function.
CGF.CurFn->setLinkage(llvm::Function::LinkOnceAnyLinkage);
+ CGF.CurFn->setComdat(
+ CGF.CGM.getModule().getOrInsertComdat(CGF.CurFn->getName()));
// Call the unsized deallocation function and forward the first argument
// unchanged.
diff --git a/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp b/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
index ccd1cf994af..2daf28c3092 100644
--- a/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
+++ b/clang/test/CodeGenCXX/cxx1y-sized-deallocation.cpp
@@ -52,7 +52,7 @@ D::D() {}
// CHECK: call void @_ZdlPvm(i8* %{{[^ ]*}}, i64 4)
// CHECK: call void @_ZdaPv(i8* %{{[^ ]*}})
-// CHECKDEF-LABEL: define linkonce void @_ZdlPvm(i8*
+// CHECKDEF-LABEL: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECKDEF: call void @_ZdlPv(i8* %0)
// CHECKUND-LABEL: declare void @_ZdlPvm(i8*
@@ -74,7 +74,7 @@ D::D() {}
// CHECK: add i64 %{{[^ ]*}}, 8
// CHECK: call void @_ZdaPvm(i8* %{{[^ ]*}}, i64 %{{[^ ]*}})
-// CHECKDEF-LABEL: define linkonce void @_ZdaPvm(i8*
+// CHECKDEF-LABEL: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECKDEF: call void @_ZdaPv(i8* %0)
// CHECKUND-LABEL: declare void @_ZdaPvm(i8*
diff --git a/clang/test/CodeGenCXX/implicit-allocation-functions.cpp b/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
index 0d0f4cee1e0..c3eada2bc93 100644
--- a/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
+++ b/clang/test/CodeGenCXX/implicit-allocation-functions.cpp
@@ -30,7 +30,7 @@ void foo(A* is) {
// CHECK14-DAG: declare noalias i8* @_Znwm(i64)
// CHECK14UND-DAG: declare void @_ZdlPvm(i8*, i64)
-// CHECK14DEF-DAG: define linkonce void @_ZdlPvm(i8*, i64)
+// CHECK14DEF-DAG: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECK14DEF-DAG: declare void @_ZdlPv(i8*)
// CHECK14-DAG: %struct.B = type { i8 }
@@ -54,5 +54,5 @@ void f(B *p) {
// CHECK14-DAG: declare noalias i8* @_Znam(i64)
// CHECK14UND-DAG: declare void @_ZdaPvm(i8*, i64)
-// CHECK14DEF-DAG: define linkonce void @_ZdaPvm(i8*, i64)
+// CHECK14DEF-DAG: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} comdat
// CHECK14DEF-DAG: declare void @_ZdaPv(i8*)
OpenPOWER on IntegriCloud