269
|
1
|
|
2 """
|
|
3 Test individual parts of the code generation for arm using the c3 frontend.
|
|
4 """
|
|
5
|
|
6 import c3
|
|
7 import ppci
|
|
8 import codegenarm
|
|
9 import outstream
|
|
10
|
|
11 testsrc = """
|
|
12 package test2;
|
|
13
|
|
14 function void tesssst(int henkie)
|
|
15 {
|
|
16 var int a, b, cee;
|
|
17 a = 2 * 33 - 12;
|
|
18 b = a * 2;
|
|
19 a = b + a;
|
|
20 cee = a;
|
|
21 cee = cee * 2 + cee;
|
|
22 if (cee + a > b and b - a+b== 3*6-b)
|
|
23 {
|
|
24 var int x = a;
|
|
25 x = b - a;
|
|
26 a = x * (x + a);
|
|
27 }
|
|
28 else
|
|
29 {
|
|
30 a = b + (a + b);
|
|
31 }
|
|
32 var int y;
|
|
33 y = a - b * 53;
|
|
34 }
|
|
35 """
|
|
36
|
|
37 if __name__ == '__main__':
|
|
38 diag = ppci.DiagnosticsManager()
|
|
39 builder = c3.Builder(diag)
|
|
40 ir = builder.build(testsrc)
|
|
41 ir.dump()
|
|
42 outs = outstream.TextOutputStream()
|
|
43 cga = codegenarm.ArmCodeGenerator(outs)
|
|
44 cfg_file = open('cfg.gv', 'w')
|
|
45 ig_file = open('ig.gv', 'w')
|
|
46 cga.generate(ir, cfg_file=cfg_file, ig_file=ig_file)
|
|
47 cfg_file.close()
|
|
48 ig_file.close()
|
|
49
|