diff options
author | Philip Chimento <philip.chimento@gmail.com> | 2019-12-11 17:47:43 -0800 |
---|---|---|
committer | Philip Chimento <philip.chimento@gmail.com> | 2019-12-14 13:28:41 -0800 |
commit | 8bfecdf6c7f5e02c698dfab740660660b6d05135 (patch) | |
tree | a5f1f88505823dc89379762b3c0f2ecca749a161 | |
parent | de5f87a30f9d11f7ec13e16f0cb31ff98dd1f427 (diff) |
gsignal: Assume __vectorcall is unsafe for GObject signals
__vectorcall is a callee-cleanup convention, so assume it is unsafe for
the same reason that the other callee-cleanup conventions are.
-rw-r--r-- | clang-plugin/gsignal-checker.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang-plugin/gsignal-checker.cpp b/clang-plugin/gsignal-checker.cpp index 2f8cb50..2a2be1c 100644 --- a/clang-plugin/gsignal-checker.cpp +++ b/clang-plugin/gsignal-checker.cpp @@ -578,6 +578,7 @@ _is_gtype_subclass (GIBaseInfo *a, GIBaseInfo *b) * Note: This is used for C++ non-static member function calls (when using * MSVC++), so we cannot use C++ methods for callbacks with swapped * parameters. + * • Microsoft vectorcall: Same. * * References: * [1]: http://en.wikipedia.org/wiki/X86_calling_conventions @@ -623,9 +624,6 @@ calling_convention_is_safe (CallingConv conv) #ifndef HAVE_LLVM_3_7 case CC_PnaclCall: /* Chromium PNC — equivalent to cdecl */ #endif -#ifdef HAVE_LLVM_3_7 - case CC_X86VectorCall: -#endif #ifdef HAVE_LLVM_3_9 case CC_Swift: /* Swift — lowered to C calling conventions */ case CC_PreserveMost: /* arguments passed identically to cdecl */ @@ -639,6 +637,9 @@ calling_convention_is_safe (CallingConv conv) case CC_X86FastCall: case CC_X86ThisCall: case CC_X86Pascal: +#ifdef HAVE_LLVM_3_7 + case CC_X86VectorCall: +#endif return false; case CC_IntelOclBicc: /* Intel OpenCL Built-Ins. I can’t find any documentation about |