]> granicus.if.org Git - clang/commitdiff
Add -fno-sized-deallocation option for completeness of fix in r229241 in documentatio...
authorLarisse Voufo <lvoufo@google.com>
Fri, 20 Feb 2015 02:07:22 +0000 (02:07 +0000)
committerLarisse Voufo <lvoufo@google.com>
Fri, 20 Feb 2015 02:07:22 +0000 (02:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229950 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.td
lib/Driver/Tools.cpp
lib/Frontend/CompilerInvocation.cpp
test/CodeGenCXX/cxx1y-sized-deallocation.cpp
test/CodeGenCXX/implicit-allocation-functions.cpp
test/CodeGenCXX/pr21754.cpp

index 80f68ef690ecd5e840faa3ad0c92993641de3c5e..221f545d0140dd86aea00954584d6e41f87cb9c6 100644 (file)
@@ -394,8 +394,10 @@ def fasm_blocks : Flag<["-"], "fasm-blocks">, Group<f_Group>, Flags<[CC1Option]>
 def fno_asm_blocks : Flag<["-"], "fno-asm-blocks">, Group<f_Group>;
 
 def fassume_sane_operator_new : Flag<["-"], "fassume-sane-operator-new">, Group<f_Group>;
+def fno_sized_deallocation: Flag<["-"], "fno-sized-deallocation">, Group<f_Group>,
+  HelpText<"Disable sized deallocation functions">, Flags<[CC1Option]>;
 def fdefine_sized_deallocation: Flag<["-"], "fdefine-sized-deallocation">, Group<f_Group>,
-  HelpText<"Allow compiler-generated definition of sized deallocation function">, Flags<[CC1Option]>;
+  HelpText<"Allow compiler-generated definition of sized deallocation functions">, Flags<[CC1Option]>;
 def fastcp : Flag<["-"], "fastcp">, Group<f_Group>;
 def fastf : Flag<["-"], "fastf">, Group<f_Group>;
 def fast : Flag<["-"], "fast">, Group<f_Group>;
index f47a92b7c39bbc554837e4fddae32893e57545fb..fc6773d21c521c3fec3f36de611cee8d9546683b 100644 (file)
@@ -4213,6 +4213,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
                     options::OPT_fno_assume_sane_operator_new))
     CmdArgs.push_back("-fno-assume-sane-operator-new");
   
+  // -fno-sized-deallocation: disable sized delete.
+  if (Args.hasArg(options::OPT_fno_sized_deallocation))
+    CmdArgs.push_back("-fno-sized-deallocation");
+  
   // -fdefine-sized-deallocation: default implementation of sized delete as a
   // weak definition.
   if (Args.hasArg(options::OPT_fdefine_sized_deallocation))
index edfee21399465db45e386dd4a98ca0f7b493b489..4c1ac0a148a5e65709798f33ac5a6810a2ed593e 100644 (file)
@@ -1522,6 +1522,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
   Opts.NoMathBuiltin = Args.hasArg(OPT_fno_math_builtin);
   Opts.AssumeSaneOperatorNew = !Args.hasArg(OPT_fno_assume_sane_operator_new);
   Opts.SizedDeallocation |= Args.hasArg(OPT_fsized_deallocation);
+  Opts.SizedDeallocation &= !Args.hasArg(OPT_fno_sized_deallocation);
   Opts.DefineSizedDeallocation = Opts.SizedDeallocation &&
       Args.hasArg(OPT_fdefine_sized_deallocation);
   Opts.HeinousExtensions = Args.hasArg(OPT_fheinous_gnu_extensions);
index 2daf28c3092ab30a46aaa9460629c990e2c52b2e..9f26fa5e93748a734a8d9263150e9b45b75da2a1 100644 (file)
@@ -3,6 +3,7 @@
 // RUN: %clang_cc1 -std=c++11 -fsized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKUND
 // RUN: %clang_cc1 -std=c++11 -fsized-deallocation -fdefine-sized-deallocation %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECKDEF
 // RUN: %clang_cc1 -std=c++11 %s -emit-llvm -triple x86_64-linux-gnu -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
+// RUN: %clang_cc1 -std=c++1y %s -emit-llvm -triple x86_64-linux-gnu -fno-sized-deallocation -o - | FileCheck %s --check-prefix=CHECK-UNSIZED
 
 // CHECK-UNSIZED-NOT: _ZdlPvm
 // CHECK-UNSIZED-NOT: _ZdaPvm
index 8988e94326eab004343e2d52d280cfc8353691dc..3bac6b9c572231ab0a25e0bfc21ff772a8953aca 100644 (file)
@@ -1,5 +1,6 @@
 // RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-unknown -o - -std=c++11 %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -check-prefix=CHECK11
 // 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 -fno-sized-deallocation %s 2>&1 | FileCheck %s -check-prefix=CHECKDEF -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=CHECK14DEFCOMDAT
index 295dbfe563d1d08a0b94f337e8bc285cf9a8eb81..65ee76559aef17afc5f473492ec0db6f15f2b7f6 100644 (file)
@@ -1,12 +1,10 @@
 // RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -o - %s 2>&1 | FileCheck %s
 // RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s
+// RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++1y -fno-sized-deallocation -o - %s 2>&1 | FileCheck %s
 // RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -o - %s 2>&1 | FileCheck %s
 // RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -fsized-deallocation -fdefine-sized-deallocation -o - %s 2>&1 | FileCheck %s
 // RUN: %clang -cc1 -emit-llvm -triple x86_64-unknown-unknown -std=c++11 -o - %s 2>&1 | FileCheck %s
 
-// CHECK-UNSIZED-NOT: _ZdlPvm
-// CHECK-UNSIZED-NOT: _ZdaPvm
-
 void operator delete(void*, unsigned long) throw() __attribute__((alias("foo")));
 extern "C" void foo(void*, unsigned long) {}