aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/init.c
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2005-03-04 20:17:11 +0000
committerGeoffrey Keating <geoffk@apple.com>2005-03-04 20:17:11 +0000
commit8fb36317f1b3cd85655af61504bb31bf33364dd1 (patch)
tree0eb2bbc4dad75d90f41114820f3ee7088d24961c /gcc/cp/init.c
parente7205ceb9c1707750c7ea129d8087eb1a9c685dc (diff)
Merge changes between apple-ppc-merge-20041026 and apple-gcc-4049
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/apple-local-200502-branch@95897 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/init.c')
-rw-r--r--gcc/cp/init.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 4ad5e62c4ac..ebac6d77df4 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2837,6 +2837,16 @@ build_delete (tree type, tree addr, special_function_kind auto_delete,
build_op_delete_call (DELETE_EXPR, addr, cxx_sizeof_nowarn (type),
/*global_p=*/false, NULL_TREE);
}
+ /* APPLE LOCAL begin KEXT double destructor --matt 20020501 */
+ /* If we're compiling a class in kext compatibility mode we
+ don't have a non-deleting destructor, so we unconditionally
+ generate a reference to the deleting variety. */
+ if (flag_apple_kext && has_apple_kext_compatibility_attr_p (type))
+ {
+ gcc_assert (auto_delete != sfk_base_destructor);
+ auto_delete = sfk_deleting_destructor;
+ }
+ /* APPLE LOCAL end KEXT double destructor --matt 20020501 */
expr = build_dtor_call (build_indirect_ref (addr, NULL),
auto_delete, flags);