From ede93da6fe153e88e8272b71d766cee5fbc21a86 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Tue, 15 Jan 2019 21:24:55 +0000 Subject: [clang-cl] Alias /Zc:alignedNew[-] to -f[no-]aligned-allocation Implements PR40180. clang-cl has one minor behavior difference with cl with this change. Clang allows the user to enable the C++17 feature of aligned allocation without enabling all of C++17, but MSVC will not call the aligned allocation overloads unless -std:c++17 is passed. While our behavior is technically incompatible, it would require making driver mode specific changes to match MSVC precisely, and clang's behavior is useful because it allows people to experiment with new C++17 features individually. Therefore, I plan to leave it as is. llvm-svn: 351249 --- clang/include/clang/Driver/CLCompatOptions.td | 6 ++++++ clang/test/Driver/cl-zc.cpp | 6 ++++++ 2 files changed, 12 insertions(+) (limited to 'clang') diff --git a/clang/include/clang/Driver/CLCompatOptions.td b/clang/include/clang/Driver/CLCompatOptions.td index b09ea41049d1..3e0dc2db7d07 100644 --- a/clang/include/clang/Driver/CLCompatOptions.td +++ b/clang/include/clang/Driver/CLCompatOptions.td @@ -207,6 +207,12 @@ def _SLASH_Zc_sizedDealloc : CLFlag<"Zc:sizedDealloc">, def _SLASH_Zc_sizedDealloc_ : CLFlag<"Zc:sizedDealloc-">, HelpText<"Disable C++14 sized global deallocation functions">, Alias; +def _SLASH_Zc_alignedNew : CLFlag<"Zc:alignedNew">, + HelpText<"Enable C++17 aligned allocation functions">, + Alias; +def _SLASH_Zc_alignedNew_ : CLFlag<"Zc:alignedNew-">, + HelpText<"Disable C++17 aligned allocation functions">, + Alias; def _SLASH_Zc_strictStrings : CLFlag<"Zc:strictStrings">, HelpText<"Treat string literals as const">, Alias, AliasArgs<["error=c++11-compat-deprecated-writable-strings"]>; diff --git a/clang/test/Driver/cl-zc.cpp b/clang/test/Driver/cl-zc.cpp index 4414eb6ebba2..cf7734875e1f 100644 --- a/clang/test/Driver/cl-zc.cpp +++ b/clang/test/Driver/cl-zc.cpp @@ -18,6 +18,12 @@ // RUN: %clang_cl /c -### /Zc:sizedDealloc- -- %s 2>&1 | FileCheck -check-prefix=SIZED-DEALLOC-OFF %s // SIZED-DEALLOC-OFF-NOT: "-fsized-deallocation" +// RUN: %clang_cl /c /std:c++17 -### /Zc:alignedNew -- %s 2>&1 | FileCheck -check-prefix=ALIGNED-NEW-ON %s +// ALIGNED-NEW-ON: "-faligned-allocation" + +// RUN: %clang_cl /c /std:c++17 -### /Zc:alignedNew- -- %s 2>&1 | FileCheck -check-prefix=ALIGNED-NEW-OFF %s +// ALIGNED-NEW-OFF-NOT: "-faligned-allocation" + // RUN: %clang_cl /c -### -- %s 2>&1 | FileCheck -check-prefix=STRICTSTRINGS-DEFAULT %s // STRICTSTRINGS-DEFAULT-NOT: -Werror=c++11-compat-deprecated-writable-strings // RUN: %clang_cl /c -### /Zc:strictStrings -- %s 2>&1 | FileCheck -check-prefix=STRICTSTRINGS-ON %s -- cgit v1.2.3