From 52b29440f8f1310e0c074c8eb409e433c56bdd62 Mon Sep 17 00:00:00 2001 From: Teddy Date: Wed, 7 May 2014 03:17:32 +0800 Subject: rename --- semantics_data/pass.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 semantics_data/pass.c (limited to 'semantics_data/pass.c') diff --git a/semantics_data/pass.c b/semantics_data/pass.c new file mode 100644 index 0000000..a7d4481 --- /dev/null +++ b/semantics_data/pass.c @@ -0,0 +1,147 @@ +int; +char; +struct {int x;}; +/* useless declarations are ok */ + +int a(int a); +int a(int d); +/* duplicate function declarations are ok */ + +struct A {int x; int y;} b; + +/* struct definitions in parameters is in a local scope + * subsequent parameter can make use of previous defined struct */ + +int foo(struct A {int x;} a, struct A b) { + /* function declaration in local scope is ok */ + int f(char *x); + /* A is defined in parameters */ + struct A c; + c.x = 43; +} + +void bar() { + /* struct definition is ok inside a function */ + struct A {int x;}; + struct A a; + a.x = 1; + { + /* the following `A' is different from previous one */ + struct A {int y;}; + struct A b; + b.y = 2; + } +} + +struct C c; +struct C { + struct D { + int x, y; + } b; + int c; + struct D d; +}; +struct D d; /* feasible here */ + +void nonsense() { + char q; + (void)q; + return "yay"; +} + +int assign() { + int *a; + struct {int *x;} b; + a = b.x; +} + +void incomplete() { + struct E {struct F *f;} e; +} + +void delay() { + struct G *g; + struct G {int x; }; + g->x = 1; +} + +void comma() { + int a; + int *b; + (b++, a++) * 3; +} + +int complex_pointer() { + int (*g(int ***e[10]))(); +} + +int fp(int a, int b, int c) { + int (*f)(int a, int b, int c); + f = ****fp + 1; + (****f)(1, 2, 3); + f = &fp + 1; +} + +int fc(int fc()) { + fc(complex_pointer); +} + +int incomp(struct I a); +struct I { int i, j; }; + +void (*bsd_signal(int sig, void (*func)(int a)))(int b); + +void array() { + int a[(1 + 1 == 2) * 2]; +} + +void local_decl() { + int y = y; + { + int x = x; + int a; + int b = a = 2; + } +} + +struct Node n; +struct Node {int x, y;} n; +/* global forward declaration is ok */ +int again; +int again; + +typedef int def; +int typedef1() { + int def; /* overrides outer typedef */ + def = 1; +} +typedef int *ptr1; +int typedef2() { + typedef int **ptr2; + { + typedef int ***ptr3; + ptr3 ptr2; + ptr3 ptr1; + } +} + +typedef struct TA { + int x; +} TA; +typedef struct TA TA; +int typedef_struct() { + TA a; + a.x = 1; +} + +struct AA {int x; int y; }; +int aa(struct AA {int a;} p) { + struct AA a; + a.a; +} + +int main() { + int self = sizeof self; + n.x = 1; + n.y = 2; +} -- cgit v1.2.3