annotate tests/code/if_4.d @ 24:2d28b21faad6 new_gen

New codegen! Rewritten codegen to use the llvm bindings Everything except struct are back to normal, and there a a few additions. 1. Correct code in more cases, return at the end of a while/if wont generate a "ret" followed by a "br". 2. Better scope, "int x = x" now illegal 3. Probably more
author Anders Halager <halager@gmail.com>
date Sat, 19 Apr 2008 18:29:42 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
1 int main()
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
2 {
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
3 int x = 0;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
4 int y = 1;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
5 if (x)
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
6 return 1;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
7 else if (y == 2)
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
8 return 1;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
9 else
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
10 y = 0;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
11 return y;
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
12 }
2d28b21faad6 New codegen!
Anders Halager <halager@gmail.com>
parents:
diff changeset
13