120 lines · c
1//// Check behaviour of -fvisibility-from-dllstorageclass options2 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-nodllstorageclass11 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-nodllstorageclass22 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-nodllstorageclass33 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,ALL82 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 of90//// 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=KEEP100 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=KEEP119 120