[COFF] Emit embedded -exclude-symbols: directives for hidden visibili… · llvm/llvm-project@c5b3de6 (original) (raw)

``

1

`+

; RUN: llc -mtriple i386-pc-win32 < %s \

`

``

2

`+

; RUN: | FileCheck --check-prefixes=CHECK,CHECK-MSVC %s

`

``

3

`+

; RUN: llc -mtriple i386-pc-mingw32 < %s \

`

``

4

`+

; RUN: | FileCheck --check-prefixes=CHECK,CHECK-MINGW %s

`

``

5

`+

; RUN: llc -mtriple i386-pc-mingw32 < %s \

`

``

6

`+

; RUN: | FileCheck --check-prefix=NOTEXPORTED %s

`

``

7

+

``

8

`+

; CHECK: .text

`

``

9

+

``

10

`+

; CHECK: .globl _notHidden

`

``

11

`+

define void @notHidden() {

`

``

12

`+

ret void

`

``

13

`+

}

`

``

14

+

``

15

`+

; CHECK: .globl _f1

`

``

16

`+

define hidden void @f1() {

`

``

17

`+

ret void

`

``

18

`+

}

`

``

19

+

``

20

`+

; CHECK: .globl _f2

`

``

21

`+

define hidden void @f2() unnamed_addr {

`

``

22

`+

ret void

`

``

23

`+

}

`

``

24

+

``

25

`+

declare hidden void @notDefined()

`

``

26

+

``

27

`+

; CHECK: .globl _stdfun@0

`

``

28

`+

define hidden x86_stdcallcc void @stdfun() nounwind {

`

``

29

`+

ret void

`

``

30

`+

}

`

``

31

+

``

32

`+

; CHECK: .globl _lnk1

`

``

33

`+

$lnk1 = comdat any

`

``

34

+

``

35

`+

define linkonce_odr hidden void @lnk1() comdat {

`

``

36

`+

ret void

`

``

37

`+

}

`

``

38

+

``

39

`+

; CHECK: .globl _lnk2

`

``

40

`+

$lnk2 = comdat any

`

``

41

+

``

42

`+

define linkonce_odr hidden void @lnk2() alwaysinline comdat {

`

``

43

`+

ret void

`

``

44

`+

}

`

``

45

+

``

46

`+

; CHECK: .data

`

``

47

`+

; CHECK: .globl _Var1

`

``

48

`+

@Var1 = hidden global i32 1, align 4

`

``

49

+

``

50

`+

; CHECK: .rdata,"dr"

`

``

51

`+

; CHECK: .globl _Var2

`

``

52

`+

@Var2 = hidden unnamed_addr constant i32 1

`

``

53

+

``

54

`+

; CHECK: .comm _Var3

`

``

55

`+

@Var3 = common hidden global i32 0, align 4

`

``

56

+

``

57

`+

; CHECK: .globl "_complex-name"

`

``

58

`+

@"complex-name" = hidden global i32 1, align 4

`

``

59

+

``

60

`+

; CHECK: .globl _complex.name

`

``

61

`+

@"complex.name" = hidden global i32 1, align 4

`

``

62

+

``

63

+

``

64

`+

; Verify items that should not be marked hidden do not appear in the directives.

`

``

65

`+

; We use a separate check prefix to avoid confusion between -NOT and -SAME.

`

``

66

`+

; NOTEXPORTED: .section .drectve

`

``

67

`+

; NOTEXPORTED-NOT: :notHidden

`

``

68

`+

; NOTEXPORTED-NOT: :notDefined

`

``

69

+

``

70

`+

; CHECK-MSVC-NOT: .section .drectve

`

``

71

`+

; CHECK-MINGW: .section .drectve

`

``

72

`+

; CHECK-MINGW: .ascii " -exclude-symbols:f1"

`

``

73

`+

; CHECK-MINGW: .ascii " -exclude-symbols:f2"

`

``

74

`+

; CHECK-MINGW: .ascii " -exclude-symbols:stdfun@0"

`

``

75

`+

; CHECK-MINGW: .ascii " -exclude-symbols:lnk1"

`

``

76

`+

; CHECK-MINGW: .ascii " -exclude-symbols:lnk2"

`

``

77

`+

; CHECK-MINGW: .ascii " -exclude-symbols:Var1"

`

``

78

`+

; CHECK-MINGW: .ascii " -exclude-symbols:Var2"

`

``

79

`+

; CHECK-MINGW: .ascii " -exclude-symbols:Var3"

`

``

80

`+

; CHECK-MINGW: .ascii " -exclude-symbols:"complex-name""

`

``

81

`+

; CHECK-MINGW: .ascii " -exclude-symbols:"complex.name""

`