Ariel-Burton updated this revision to Diff 450153. Ariel-Burton added a comment.
Added C++ tests for __ptr32. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D130123/new/ https://reviews.llvm.org/D130123 Files: clang/test/Sema/MicrosoftExtensions.cpp Index: clang/test/Sema/MicrosoftExtensions.cpp =================================================================== --- clang/test/Sema/MicrosoftExtensions.cpp +++ clang/test/Sema/MicrosoftExtensions.cpp @@ -1,6 +1,5 @@ // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wmicrosoft -verify -fms-extensions // RUN: %clang_cc1 -triple x86_64-windows %s -fsyntax-only -Wmicrosoft -verify -fms-extensions -// expected-no-diagnostics // Check that __ptr32/__ptr64 can be compared. int test_ptr_comparison(int *__ptr32 __uptr p32u, int *__ptr32 __sptr p32s, @@ -9,3 +8,23 @@ (p32u == p64) + (p32s == p64); } + +template<typename T> +void bad(T __ptr32 a) { // expected-error {{'__ptr32' attribute only applies to pointer arguments}}` + (*a) += 1; +} + +template<int size_expected, typename T> +void f(T a) { + (*a) += sizeof(a); + static_assert(sizeof(a) == size_expected, "instantiated template argument has unexpected size"); +} +void g(int *p) { + // instantiate for default sized pointer + f<sizeof(void*)>(p); +} + +void h(int *__ptr32 p) { + // instantiate for 32-bit pointer + f<4>(p); +}
Index: clang/test/Sema/MicrosoftExtensions.cpp =================================================================== --- clang/test/Sema/MicrosoftExtensions.cpp +++ clang/test/Sema/MicrosoftExtensions.cpp @@ -1,6 +1,5 @@ // RUN: %clang_cc1 -triple i686-windows %s -fsyntax-only -Wmicrosoft -verify -fms-extensions // RUN: %clang_cc1 -triple x86_64-windows %s -fsyntax-only -Wmicrosoft -verify -fms-extensions -// expected-no-diagnostics // Check that __ptr32/__ptr64 can be compared. int test_ptr_comparison(int *__ptr32 __uptr p32u, int *__ptr32 __sptr p32s, @@ -9,3 +8,23 @@ (p32u == p64) + (p32s == p64); } + +template<typename T> +void bad(T __ptr32 a) { // expected-error {{'__ptr32' attribute only applies to pointer arguments}}` + (*a) += 1; +} + +template<int size_expected, typename T> +void f(T a) { + (*a) += sizeof(a); + static_assert(sizeof(a) == size_expected, "instantiated template argument has unexpected size"); +} +void g(int *p) { + // instantiate for default sized pointer + f<sizeof(void*)>(p); +} + +void h(int *__ptr32 p) { + // instantiate for 32-bit pointer + f<4>(p); +}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits