Author: rnk
Date: Thu Feb 19 15:13:45 2015
New Revision: 229915
URL: http://llvm.org/viewvc/llvm-project?rev=229915&view=rev
Log:
Avoid using a COMDAT for sized delete on MachO
Modified:
cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
cfe/trunk/test/CodeGenCXX/implicit-allocation-functions.cpp
Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=229915&r1=229914&r2=229915&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Thu Feb 19 15:13:45 2015
@@ -806,8 +806,9 @@ static void EmitSizedDeallocationFunctio
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()));
+ if (CGF.CGM.supportsCOMDAT())
+ CGF.CurFn->setComdat(
+ CGF.CGM.getModule().getOrInsertComdat(CGF.CurFn->getName()));
// Call the unsized deallocation function and forward the first argument
// unchanged.
Modified: cfe/trunk/test/CodeGenCXX/implicit-allocation-functions.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/implicit-allocation-functions.cpp?rev=229915&r1=229914&r2=229915&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/implicit-allocation-functions.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/implicit-allocation-functions.cpp Thu Feb 19
15:13:45 2015
@@ -2,8 +2,9 @@
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++11
-fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID
-check-prefix=CHECK11
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
%s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK14
-check-prefix=CHECK14UND
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
-fvisibility hidden %s 2>&1 | FileCheck %s -check-prefix=CHECKHID
-check-prefix=CHECK14 -check-prefix=CHECK14UND
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
-fdefine-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF
-check-prefix=CHECK14 -check-prefix=CHECK14DEF
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
-fdefine-sized-deallocation -fvisibility hidden %s 2>&1 | FileCheck %s
-check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14DEF
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
-fdefine-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF
-check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++14
-fdefine-sized-deallocation -fvisibility hidden %s 2>&1 | FileCheck %s
-check-prefix=CHECKHID -check-prefix=CHECK14 -check-prefix=CHECK14DEFCOMDAT
+// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-macosx -o - -std=c++14
-fdefine-sized-deallocation %s | FileCheck %s -check-prefix=CHECKDEF
-check-prefix=CHECK14 -check-prefix=CHECK14DEFNOCOMDAT
// PR22419: Implicit sized deallocation functions always have default
visibility.
// Generalized to all implicit allocation functions.
@@ -30,8 +31,10 @@ 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) #{{[0-9]+}} comdat
-// CHECK14DEF-DAG: declare void @_ZdlPv(i8*)
+// CHECK14DEFCOMDAT-DAG: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}}
comdat {
+// CHECK14DEFCOMDAT-DAG: declare void @_ZdlPv(i8*)
+// CHECK14DEFNOCOMDAT-DAG: define linkonce void @_ZdlPvm(i8*, i64) #{{[0-9]+}}
{
+// CHECK14DEFNOCOMDAT-DAG: declare void @_ZdlPv(i8*)
// CHECK14-DAG: %struct.B = type { i8 }
struct B { ~B() { }};
@@ -54,5 +57,7 @@ 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) #{{[0-9]+}} comdat
+// CHECK14DEF-DAG: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}} comdat {
// CHECK14DEF-DAG: declare void @_ZdaPv(i8*)
+// CHECK14DEFNOCOMDAT-DAG: define linkonce void @_ZdaPvm(i8*, i64) #{{[0-9]+}}
{
+// CHECK14DEFNOCOMDAT-DAG: declare void @_ZdaPv(i8*)
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits