mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-08 09:03:18 +00:00
f770683f14
The extension has the following syntax: __builtin_call_with_static_chain(Call, Chain) where Call must be a function call expression and Chain must be of pointer type This extension performs a function call Call with a static chain pointer Chain passed to the callee in a designated register. This is useful for calling foreign language functions whose ABI uses static chain pointers (e.g. to implement closures). Differential Revision: http://reviews.llvm.org/D6332 llvm-svn: 224167
16 lines
479 B
C++
16 lines
479 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
int &f();
|
|
|
|
struct A {
|
|
void f();
|
|
};
|
|
|
|
typedef int I;
|
|
|
|
void g() {
|
|
__builtin_call_with_static_chain(f(), f) = 42;
|
|
__builtin_call_with_static_chain(A().f(), f); // expected-error {{first argument to __builtin_call_with_static_chain must be a non-member call expression}}
|
|
__builtin_call_with_static_chain((42).~I(), f); // expected-error {{first argument to __builtin_call_with_static_chain must not be a pseudo-destructor call}}
|
|
}
|