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