diff options
-rw-r--r-- | test/Sema/offsetof.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/Sema/offsetof.c b/test/Sema/offsetof.c new file mode 100644 index 0000000000..5848ba4083 --- /dev/null +++ b/test/Sema/offsetof.c @@ -0,0 +1,23 @@ +// RUN: clang -parse-ast-check %s + +#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) + +typedef struct P { int i; float f; } PT; +struct external_sun3_core +{ + unsigned c_regs; + + PT X[100]; + +}; + +void swap() +{ + int x; + x = offsetof(struct external_sun3_core, c_regs); + x = __builtin_offsetof(struct external_sun3_core, X[42].f); + + x = __builtin_offsetof(struct external_sun3_core, X[42].f2); // expected-error {{no member named 'f2'}} + x = __builtin_offsetof(int, X[42].f2); // expected-error {{offsetof requires struct}} +} + |