1b61ac4a8Savl-llvm$ cat main.cpp 2b61ac4a8Savl-llvm#include <stdio.h> 3b61ac4a8Savl-llvm 4b61ac4a8Savl-llvmstatic void Foo(void) 5b61ac4a8Savl-llvm{ 6b61ac4a8Savl-llvm typedef struct { 7b61ac4a8Savl-llvm int x1; 8b61ac4a8Savl-llvm int x2; 9b61ac4a8Savl-llvm } FOO_VAR_TYPE; 10b61ac4a8Savl-llvm static FOO_VAR_TYPE MyDummyVar __attribute__((aligned(4), used, section("TAD_VIRTUAL, TAD_DUMMY_DATA"), nocommon)); 11b61ac4a8Savl-llvm printf("Foo called"); 12b61ac4a8Savl-llvm} 13b61ac4a8Savl-llvm 14b61ac4a8Savl-llvmint main() 15b61ac4a8Savl-llvm{ 16b61ac4a8Savl-llvm Foo(); 17b61ac4a8Savl-llvm return 1; 18b61ac4a8Savl-llvm} 19b61ac4a8Savl-llvm 20b61ac4a8Savl-llvm$ clang++ -O2 -g main.cpp -c -o main.o 21b61ac4a8Savl-llvm$ clang++ main.o -o main.out 22b61ac4a8Savl-llvm 23*f1fdfe68SAlexey LapshinRUN: dsymutil --linker parallel -oso-prepend-path %p/../../Inputs %p/../../Inputs/private/tmp/keep_func/main.out -o %t.omit.dSYM 24*f1fdfe68SAlexey LapshinRUN: dsymutil --linker parallel -oso-prepend-path %p/../../Inputs %p/../../Inputs/private/tmp/keep_func/main.out -o %t.keep.dSYM -keep-function-for-static 25b61ac4a8Savl-llvmRUN: llvm-dwarfdump %t.omit.dSYM | FileCheck %s --check-prefix OMIT 26b61ac4a8Savl-llvmRUN: llvm-dwarfdump %t.keep.dSYM | FileCheck %s --check-prefix KEEP 27b61ac4a8Savl-llvm 28b61ac4a8Savl-llvmKEEP: DW_AT_name ("x1") 29b61ac4a8Savl-llvmKEEP: DW_AT_name ("x2") 30b61ac4a8Savl-llvmKEEP: DW_AT_name ("FOO_VAR_TYPE") 31b61ac4a8Savl-llvmKEEP: DW_AT_name ("MyDummyVar") 32b61ac4a8Savl-llvm 33b61ac4a8Savl-llvmOMIT-NOT: DW_AT_name ("MyDummyVar") 34b61ac4a8Savl-llvmOMIT-NOT: DW_AT_name ("FOO_VAR_TYPE") 35b61ac4a8Savl-llvmOMIT-NOT: DW_AT_name ("x1") 36b61ac4a8Savl-llvmOMIT-NOT: DW_AT_name ("x2") 37