xref: /llvm-project/clang/test/Driver/visibility-global-new-delete.cl (revision 27ce26b06655cfece3d54b30e442ef93d3e78ac7)
1/// Check driver handling for "-fvisibility-global-new-delete-hidden" and "-fvisibility-global-new-delete=".
2
3/// These options are not added by default.
4// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm %s 2>&1 | \
5// RUN:   FileCheck -check-prefix=DEFAULTS %s
6// DEFAULTS-NOT: "-fvisibility-global-new-delete="
7// DEFAULTS-NOT: "-fvisibility-global-new-delete-hidden"
8
9// DEFINE: %{implicit-check-nots} = --implicit-check-not=-fvisibility-global-new-delete= --implicit-check-not=-fvisibility-global-new-delete-hidden
10
11/// "-fvisibility-global-new-delete=source" added by default for PS5.
12// RUN: %clang -### --target=x86_64-sie-ps5 -c -emit-llvm %s 2>&1 | \
13// RUN:   FileCheck -check-prefix=PS5 %s
14// PS5: "-fvisibility-global-new-delete=source"
15
16/// -fvisibility-global-new-delete-hidden added explicitly.
17// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
18// RUN:   -fvisibility-global-new-delete-hidden %s 2>&1 | FileCheck -check-prefixes=VGNDH,DEPRECATED %s %{implicit-check-nots}
19// RUN: %clang -### --target=x86_64-sie-ps5 -c -emit-llvm \
20// RUN:   -fvisibility-global-new-delete-hidden %s 2>&1 | FileCheck -check-prefixes=VGNDH,DEPRECATED %s %{implicit-check-nots}
21// DEPRECATED-DAG:  clang: warning: argument '-fvisibility-global-new-delete-hidden' is deprecated, use '-fvisibility-global-new-delete=force-hidden' instead [-Wdeprecated]
22// VGNDH-DAG: "-fvisibility-global-new-delete=force-hidden"
23
24/// -fvisibility-global-new-delete=force-hidden added explicitly.
25// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
26// RUN:   -fvisibility-global-new-delete=force-hidden %s 2>&1 | FileCheck -check-prefixes=VGNDH %s %{implicit-check-nots}
27// RUN: %clang -### --target=x86_64-sie-ps5 -c -emit-llvm \
28// RUN:   -fvisibility-global-new-delete=force-hidden %s 2>&1 | FileCheck -check-prefixes=VGNDH %s %{implicit-check-nots}
29
30/// -fvisibility-global-new-delete=force-protected added explicitly.
31// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
32// RUN:   -fvisibility-global-new-delete=force-protected %s 2>&1 | FileCheck -check-prefixes=VGNDP %s %{implicit-check-nots}
33// RUN: %clang -### --target=x86_64-sie-ps5 -c -emit-llvm \
34// RUN:   -fvisibility-global-new-delete=force-protected %s 2>&1 | FileCheck -check-prefixes=VGNDP %s %{implicit-check-nots}
35// VGNDP-DAG: "-fvisibility-global-new-delete=force-protected"
36
37/// -fvisibility-global-new-delete=force-default added explicitly.
38// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
39// RUN:   -fvisibility-global-new-delete=force-default %s 2>&1 | FileCheck -check-prefixes=VGNDD %s %{implicit-check-nots}
40// RUN: %clang -### --target=x86_64-sie-ps5 -c -emit-llvm \
41// RUN:   -fvisibility-global-new-delete=force-default %s 2>&1 | FileCheck -check-prefixes=VGNDD %s %{implicit-check-nots}
42// VGNDD-DAG: "-fvisibility-global-new-delete=force-default"
43
44/// last specfied used: -fvisibility-global-new-delete-hidden.
45// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
46// RUN:   -fvisibility-global-new-delete=force-default -fvisibility-global-new-delete=force-protected -fvisibility-global-new-delete-hidden %s 2>&1 | \
47// RUN:     FileCheck -check-prefixes=VGNDH,DEPRECATED %s %{implicit-check-nots}
48
49/// last specfied used: -fvisibility-global-new-delete=.
50// RUN: %clang -### --target=x86_64-unknown-unknown -c -emit-llvm \
51// RUN:   -fvisibility-global-new-delete-hidden -fvisibility-global-new-delete=force-default -fvisibility-global-new-delete=force-protected %s 2>&1 | \
52// RUN:     FileCheck -check-prefixes=VGNDP,DEPRECATED %s %{implicit-check-nots}
53