From 850ecbdea344c451ea7d69658bb2db933eb9ba6b Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 12 Aug 2008 13:16:42 +0000 Subject: [PATCH] more testcases [r21121] --- parsetest/gnu99/mode_attrib.c | 12 ++++++++++++ parsetest/gnu99/transparent_union3.c | 25 +++++++++++++++++++++++++ parsetest/shouldfail/f.c | 6 ++++++ 3 files changed, 43 insertions(+) create mode 100644 parsetest/gnu99/mode_attrib.c create mode 100644 parsetest/gnu99/transparent_union3.c create mode 100644 parsetest/shouldfail/f.c diff --git a/parsetest/gnu99/mode_attrib.c b/parsetest/gnu99/mode_attrib.c new file mode 100644 index 0000000..a7e4a37 --- /dev/null +++ b/parsetest/gnu99/mode_attrib.c @@ -0,0 +1,12 @@ +typedef int i16 __attribute__ ((__mode__ (__HI__))), i32; +/*typedef int i16;*/ + +int size16 = sizeof(i16); +/*int size32 = sizeof(i32); */ + +i16 p16; +short *ps16 = &p16; + +int main(void) { + return size16 != 2; +} diff --git a/parsetest/gnu99/transparent_union3.c b/parsetest/gnu99/transparent_union3.c new file mode 100644 index 0000000..eabe18b --- /dev/null +++ b/parsetest/gnu99/transparent_union3.c @@ -0,0 +1,25 @@ +struct sockaddr { + int bla; +}; + +struct sockaddr_at { + int blo, blup; +}; + +typedef union bla { + struct sockaddr *__restrict__ sockaddr_ptr; + struct sockaddr_at *__restrict__ sockaddr_at_ptr; +} sockaddr_arg __attribute__((__transparent_union__)); + +void *t_recvfrom(sockaddr_arg arg) { + return arg.sockaddr_at_ptr; +} + +int main(void) { + struct sockaddr_at at; + union bla bl; + bl.sockaddr_at_ptr = &at; + int r = (t_recvfrom(&at) != &at); + r |= (bl.sockaddr_at_ptr != &at); + return r; +} diff --git a/parsetest/shouldfail/f.c b/parsetest/shouldfail/f.c new file mode 100644 index 0000000..fbfd622 --- /dev/null +++ b/parsetest/shouldfail/f.c @@ -0,0 +1,6 @@ +int k |= 4; + +int foo(void) +{ + int l |= 2; +} -- 2.20.1