r317706 - [bindings] fix TLS test failure

Masud Rahman via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 8 11:17:27 PST 2017

Author: frutiger
Date: Wed Nov  8 11:17:27 2017
New Revision: 317706

URL: http://llvm.org/viewvc/llvm-project?rev=317706&view=rev
[bindings] fix TLS test failure

Since cfe commit r237337, '__declspec(thread)' and 'thread_local' have
been the same since MSVC 2015.  i.e. they are both considered to supply
a dynamic TLS kind, not a static TLS kind.

This test originally did not specify which version of MS compatibility
to assume.  As a result, the test was brittle, since changing the
default compatibility version could break the test.

This commit adds a specific version when building up the flags used to
parse the translation unit, and tests both versions.


Modified: cfe/trunk/bindings/python/tests/cindex/test_tls_kind.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/tests/cindex/test_tls_kind.py?rev=317706&r1=317705&r2=317706&view=diff
--- cfe/trunk/bindings/python/tests/cindex/test_tls_kind.py (original)
+++ cfe/trunk/bindings/python/tests/cindex/test_tls_kind.py Wed Nov  8 11:17:27 2017
@@ -27,11 +27,21 @@ _Thread_local int tls_static;
     # The following case tests '__declspec(thread)'.  Since it is a Microsoft
     # specific extension, specific flags are required for the parser to pick
     # these up.
-    flags = ['-fms-extensions', '-target', 'x86_64-unknown-windows-win32']
+    flags = ['-fms-extensions', '-target', 'x86_64-unknown-windows-win32',
+             '-fms-compatibility-version=18']
     tu = get_tu("""
-__declspec(thread) int tls_declspec;
+__declspec(thread) int tls_declspec_msvc18;
 """, lang = 'cpp', flags=flags)
-    tls_declspec = get_cursor(tu.cursor, 'tls_declspec')
-    assert tls_declspec.tls_kind == TLSKind.STATIC
+    tls_declspec_msvc18 = get_cursor(tu.cursor, 'tls_declspec_msvc18')
+    assert tls_declspec_msvc18.tls_kind == TLSKind.STATIC
+    flags = ['-fms-extensions', '-target', 'x86_64-unknown-windows-win32',
+             '-fms-compatibility-version=19']
+    tu = get_tu("""
+__declspec(thread) int tls_declspec_msvc19;
+""", lang = 'cpp', flags=flags)
+    tls_declspec_msvc19 = get_cursor(tu.cursor, 'tls_declspec_msvc19')
+    assert tls_declspec_msvc19.tls_kind == TLSKind.DYNAMIC

More information about the cfe-commits mailing list