@@ -29,6 +29,9 @@ def __init__(self, *args):
29
29
"__int128_t" , "__uint128_t" , "__builtin_va_list" ]
30
30
self .known_typedefs_llvm39 = \
31
31
self .known_typedefs + ["__builtin_ms_va_list" ]
32
+ self .known_classes = ["a" , "__va_list_tag" ]
33
+ self .known_classes_llvm39 = \
34
+ self .known_classes + ["__NSConstantString_tag" ]
32
35
33
36
def test_keep_va_list_tag (self ):
34
37
@@ -52,10 +55,16 @@ def test_keep_va_list_tag(self):
52
55
53
56
self .assertTrue (tag in [class_ .name for class_ in classes ])
54
57
self .assertTrue ("a" in [class_ .name for class_ in classes ])
55
- self .assertTrue (len (classes ) == 2 )
56
-
57
- self .assertTrue (len (typedefs ) == 4 )
58
- if tag not in [ty .name for ty in typedefs ]:
58
+ if len (classes ) == 2 :
59
+ for c in self .known_classes :
60
+ self .assertTrue (c in [cl .name for cl in classes ])
61
+ elif len (classes ) == 3 :
62
+ for c in self .known_classes_llvm39 :
63
+ # This is for llvm 3.9
64
+ self .assertTrue (c in [cl .name for cl in classes ])
65
+
66
+ self .assertTrue (len (typedefs ) == 4 or len (typedefs ) == 5 )
67
+ if len (typedefs ) == 5 :
59
68
# This is for llvm 3.9. The class __va_list_tag struct is still
60
69
# there but the typedef is gone
61
70
for t in self .known_typedefs_llvm39 :
@@ -71,7 +80,10 @@ def test_keep_va_list_tag(self):
71
80
72
81
self .assertTrue (
73
82
tag in [var .decl_string .split ("::" )[1 ] for var in variables ])
74
- self .assertTrue (len (variables ) == 4 )
83
+
84
+ # 4 variables in __va_list_tag, and 4 more in __NSConstantString_tag
85
+ # for llvm 3.9
86
+ self .assertTrue (len (variables ) == 4 or len (variables ) == 8 )
75
87
76
88
def test_remove_va_list_tag (self ):
77
89
0 commit comments