mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-22 04:55:50 -04:00

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
74 lines
3.7 KiB
C++
74 lines
3.7 KiB
C++
// Note: %s must be preceded by --, otherwise it may be interpreted as a
|
|
// command-line option, e.g. on Mac where %s is commonly under /Users.
|
|
|
|
// RUN: %clang_cl /c -### -- %s 2>&1 | FileCheck -check-prefix=TRIGRAPHS-DEFAULT %s
|
|
// cc1 will disable trigraphs for -fms-compatibility as long as -ftrigraphs
|
|
// isn't explicitly passed.
|
|
// TRIGRAPHS-DEFAULT-NOT: "-ftrigraphs"
|
|
|
|
// RUN: %clang_cl /c -### /Zc:trigraphs -- %s 2>&1 | FileCheck -check-prefix=TRIGRAPHS-ON %s
|
|
// TRIGRAPHS-ON: "-ftrigraphs"
|
|
|
|
// RUN: %clang_cl /c -### /Zc:trigraphs- -- %s 2>&1 | FileCheck -check-prefix=TRIGRAPHS-OFF %s
|
|
// TRIGRAPHS-OFF: "-fno-trigraphs"
|
|
|
|
// RUN: %clang_cl /c -### /Zc:sizedDealloc -- %s 2>&1 | FileCheck -check-prefix=SIZED-DEALLOC-ON %s
|
|
// SIZED-DEALLOC-ON: "-fsized-deallocation"
|
|
|
|
// 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
|
|
// STRICTSTRINGS-ON: -Werror=c++11-compat-deprecated-writable-strings
|
|
// RUN: %clang_cl /c -### /Zc:strictStrings- -- %s 2>&1 | FileCheck -check-prefix=STRICTSTRINGS-OFF %s
|
|
// STRICTSTRINGS-OFF: argument unused during compilation
|
|
|
|
|
|
// RUN: %clang_cl /c -### /Zc:foobar -- %s 2>&1 | FileCheck -check-prefix=FOOBAR-ON %s
|
|
// FOOBAR-ON: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:foobar- -- %s 2>&1 | FileCheck -check-prefix=FOOBAR-ON %s
|
|
// FOOBAR-OFF: argument unused during compilation
|
|
|
|
// These are ignored if enabled, and warn if disabled.
|
|
|
|
// RUN: %clang_cl /c -### /Zc:forScope -- %s 2>&1 | FileCheck -check-prefix=FORSCOPE-ON %s
|
|
// FORSCOPE-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:forScope- -- %s 2>&1 | FileCheck -check-prefix=FORSCOPE-OFF %s
|
|
// FORSCOPE-OFF: argument unused during compilation
|
|
|
|
// RUN: %clang_cl /c -### /Zc:wchar_t -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-ON %s
|
|
// WCHAR_T-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:wchar_t- -- %s 2>&1 | FileCheck -check-prefix=WCHAR_T-OFF %s
|
|
// WCHAR_T-OFF: argument unused during compilation
|
|
|
|
// RUN: %clang_cl /c -### /Zc:auto -- %s 2>&1 | FileCheck -check-prefix=AUTO-ON %s
|
|
// AUTO-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:auto- -- %s 2>&1 | FileCheck -check-prefix=AUTO-OFF %s
|
|
// AUTO-OFF: argument unused during compilation
|
|
|
|
// RUN: %clang_cl /c -### /Zc:inline -- %s 2>&1 | FileCheck -check-prefix=INLINE-ON %s
|
|
// INLINE-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:inline- -- %s 2>&1 | FileCheck -check-prefix=INLINE-OFF %s
|
|
// INLINE-OFF: argument unused during compilation
|
|
|
|
// RUN: %clang_cl /c -### /Zc:ternary -- %s 2>&1 | FileCheck -check-prefix=TERNARY-ON %s
|
|
// TERNARY-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:ternary- -- %s 2>&1 | FileCheck -check-prefix=TERNARY-OFF %s
|
|
// TERNARY-OFF: argument unused during compilation
|
|
|
|
|
|
// These never warn, but don't have an effect yet.
|
|
|
|
// RUN: %clang_cl /c -### /Zc:rvalueCast -- %s 2>&1 | FileCheck -check-prefix=RVALUECAST-ON %s
|
|
// RVALUECAST-ON-NOT: argument unused during compilation
|
|
// RUN: %clang_cl /c -### /Zc:rvalueCast- -- %s 2>&1 | FileCheck -check-prefix=RVALUECAST-OFF %s
|
|
// RVALUECAST-OFF: argument unused during compilation
|