scc

simple C compiler
git clone git://git.2f30.org/scc
Log | Files | Refs | README | LICENSE

commit 4cd3b53a109cfc9c02c2ff15a8f60cb658a4b574
parent 560dd3edc56c0a0baf08804246e57fb8006d3a87
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 14 Aug 2015 19:01:04 +0200

Add tests for integer operations

Diffstat:
Acc1/tests/test004.c | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acc1/tests/test005.c | 36++++++++++++++++++++++++++++++++++++
2 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/cc1/tests/test004.c b/cc1/tests/test004.c @@ -0,0 +1,55 @@ +/* +name: TEST004 +description: Test integer operations +output: +F1 +X1 F1 main +G1 F1 main { +- +A2 I x + A2 #I0 :I + A2 A2 #I2 +I :I + A2 A2 #I1 -I :I + A2 A2 #I6 *I :I + A2 A2 #I2 /I :I + A2 A2 #I2 %I :I + A2 A2 #I2 lI :I + A2 A2 #I1 rI :I + A2 A2 #IFF |I :I + A2 A2 #I3 &I :I + A2 A2 #I1 ^I :I + A2 A2 A2 #I1 >I #I1 #I0 ?I +I :I + A2 A2 A2 #I3 <I #I1 #I0 ?I +I :I + A2 A2 A2 #I1 >I #I1 #I0 ?I +I :I + A2 A2 A2 #I4 <I #I1 #I0 ?I +I :I + j L0 A2 #I4 =I + yI #I1 +L0 + yI #I0 +} +*/ + +int +main() +{ + int x; + + x = 0; + x = x + 2; // 2 + x = x - 1; // 1 + x = x * 6; // 6 + x = x / 2; // 3 + x = x % 2; // 1 + x = x << 2; // 4 + x = x >> 1; // 2 + x = x | 255; // 255 + x = x & 3; // 3 + x = x ^ 1; // 2 + x = x + (x > 1); // 2 + x = x + (x < 3); // 2 + x = x + (x > 1); // 3 + x = x + (x < 4); // 4 + if(x != 4) + return 1; + return 0; +} +\ No newline at end of file diff --git a/cc1/tests/test005.c b/cc1/tests/test005.c @@ -0,0 +1,36 @@ +/* +name: TEST005 +description: Test unary integer operations +output: +F1 +X1 F1 main +G1 F1 main { +- +A2 I x + A2 #I3 :I + A2 A2 #I0 =I #I1 #I0 ?I :I + A2 A2 #I0 =I #I1 #I0 ?I :I + A2 A2 ~I :I + A2 A2 _I :I + j L0 A2 #I2 =I + yI #I1 +L0 + yI #I0 +} +*/ + + +int +main() +{ + int x; + + x = 3; + x = !x; // 0 + x = !x; // 1 + x = ~x; // -1 + x = -x; // 2 + if(x != 2) + return 1; + return 0; +}