1 //// Check behaviour of -fvisibility-from-dllstorageclass options 2 3 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 4 // RUN: -Werror -S -### %s 2>&1 | \ 5 // RUN: FileCheck %s \ 6 // RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ 7 // RUN: --implicit-check-not=-fvisibility-dllexport \ 8 // RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ 9 // RUN: --implicit-check-not=-fvisibility-externs-dllimport \ 10 // RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass 11 12 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 13 // RUN: -fvisibility-from-dllstorageclass \ 14 // RUN: -fno-visibility-from-dllstorageclass \ 15 // RUN: -Werror -S -### %s 2>&1 | \ 16 // RUN: FileCheck %s \ 17 // RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ 18 // RUN: --implicit-check-not=-fvisibility-dllexport \ 19 // RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ 20 // RUN: --implicit-check-not=-fvisibility-externs-dllimport \ 21 // RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass 22 23 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 24 // RUN: -fno-visibility-from-dllstorageclass \ 25 // RUN: -fvisibility-from-dllstorageclass \ 26 // RUN: -Werror -S -### %s 2>&1 | \ 27 // RUN: FileCheck %s --check-prefix=SET \ 28 // RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ 29 // RUN: --implicit-check-not=-fvisibility-dllexport \ 30 // RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ 31 // RUN: --implicit-check-not=-fvisibility-externs-dllimport \ 32 // RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass 33 34 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 35 // RUN: -fvisibility-dllexport=hidden \ 36 // RUN: -fvisibility-nodllstorageclass=protected \ 37 // RUN: -fvisibility-externs-dllimport=hidden \ 38 // RUN: -fvisibility-externs-nodllstorageclass=protected \ 39 // RUN: -S -### %s 2>&1 | \ 40 // RUN: FileCheck %s --check-prefixes=UNUSED \ 41 // RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ 42 // RUN: --implicit-check-not=-fvisibility-dllexport \ 43 // RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ 44 // RUN: --implicit-check-not=-fvisibility-externs-dllimport \ 45 // RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass \ 46 // RUN: --implicit-check-not=error: \ 47 // RUN: --implicit-check-not=warning: 48 49 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 50 // RUN: -fno-visibility-from-dllstorageclass \ 51 // RUN: -fvisibility-dllexport=hidden \ 52 // RUN: -fvisibility-nodllstorageclass=protected \ 53 // RUN: -fvisibility-externs-dllimport=hidden \ 54 // RUN: -fvisibility-externs-nodllstorageclass=protected \ 55 // RUN: -S -### %s 2>&1 | \ 56 // RUN: FileCheck %s --check-prefixes=UNUSED \ 57 // RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ 58 // RUN: --implicit-check-not=-fvisibility-dllexport \ 59 // RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ 60 // RUN: --implicit-check-not=-fvisibility-externs-dllimport \ 61 // RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass \ 62 // RUN: --implicit-check-not=error: \ 63 // RUN: --implicit-check-not=warning: 64 65 // UNUSED: warning: argument unused during compilation: '-fvisibility-dllexport=hidden' 66 // UNUSED-NEXT: warning: argument unused during compilation: '-fvisibility-nodllstorageclass=protected' 67 // UNUSED-NEXT: warning: argument unused during compilation: '-fvisibility-externs-dllimport=hidden' 68 // UNUSED-NEXT: warning: argument unused during compilation: '-fvisibility-externs-nodllstorageclass=protected' 69 70 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 71 // RUN: -fvisibility-from-dllstorageclass \ 72 // RUN: -fvisibility-dllexport=default \ 73 // RUN: -fvisibility-dllexport=hidden \ 74 // RUN: -fvisibility-nodllstorageclass=default \ 75 // RUN: -fvisibility-nodllstorageclass=protected \ 76 // RUN: -fvisibility-externs-dllimport=default \ 77 // RUN: -fvisibility-externs-dllimport=hidden \ 78 // RUN: -fvisibility-externs-nodllstorageclass=default \ 79 // RUN: -fvisibility-externs-nodllstorageclass=protected \ 80 // RUN: -Werror -S -### %s 2>&1 | \ 81 // RUN: FileCheck %s --check-prefixes=SET,ALL 82 83 // SET: "-fvisibility-from-dllstorageclass" 84 // ALL-SAME: "-fvisibility-dllexport=hidden" 85 // ALL-SAME: "-fvisibility-nodllstorageclass=protected" 86 // ALL-SAME: "-fvisibility-externs-dllimport=hidden" 87 // ALL-SAME: "-fvisibility-externs-nodllstorageclass=protected" 88 89 //// Test that "keep" can be specified, which means that the visibility of 90 //// the matching globals will not be adjusted. 91 92 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 93 // RUN: -fvisibility-from-dllstorageclass \ 94 // RUN: -fvisibility-dllexport=keep \ 95 // RUN: -fvisibility-nodllstorageclass=keep \ 96 // RUN: -fvisibility-externs-dllimport=keep \ 97 // RUN: -fvisibility-externs-nodllstorageclass=keep \ 98 // RUN: -Werror -S -### %s 2>&1 | \ 99 // RUN: FileCheck %s --check-prefixes=KEEP 100 101 // KEEP: "-fvisibility-from-dllstorageclass" 102 // KEEP-SAME: "-fvisibility-dllexport=keep" 103 // KEEP-SAME: "-fvisibility-nodllstorageclass=keep" 104 // KEEP-SAME: "-fvisibility-externs-dllimport=keep" 105 // KEEP-SAME: "-fvisibility-externs-nodllstorageclass=keep" 106 107 // RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \ 108 // RUN: -fvisibility-from-dllstorageclass \ 109 // RUN: -fvisibility-dllexport=default \ 110 // RUN: -fvisibility-dllexport=keep \ 111 // RUN: -fvisibility-nodllstorageclass=default \ 112 // RUN: -fvisibility-nodllstorageclass=keep \ 113 // RUN: -fvisibility-externs-dllimport=default \ 114 // RUN: -fvisibility-externs-dllimport=keep \ 115 // RUN: -fvisibility-externs-nodllstorageclass=default \ 116 // RUN: -fvisibility-externs-nodllstorageclass=keep \ 117 // RUN: -Werror -S -### %s 2>&1 | \ 118 // RUN: FileCheck %s --check-prefixes=KEEP 119 120