more testcases
authorMatthias Braun <matze@braunis.de>
Tue, 12 Aug 2008 13:16:42 +0000 (13:16 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 12 Aug 2008 13:16:42 +0000 (13:16 +0000)
[r21121]

parsetest/gnu99/mode_attrib.c [new file with mode: 0644]
parsetest/gnu99/transparent_union3.c [new file with mode: 0644]
parsetest/shouldfail/f.c [new file with mode: 0644]

diff --git a/parsetest/gnu99/mode_attrib.c b/parsetest/gnu99/mode_attrib.c
new file mode 100644 (file)
index 0000000..a7e4a37
--- /dev/null
@@ -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 (file)
index 0000000..eabe18b
--- /dev/null
@@ -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 (file)
index 0000000..fbfd622
--- /dev/null
@@ -0,0 +1,6 @@
+int k |= 4;
+
+int foo(void)
+{
+       int l |= 2;
+}