aboutsummaryrefslogtreecommitdiff
path: root/tests/sysy_lvX/100_int_literal.sy
diff options
context:
space:
mode:
Diffstat (limited to 'tests/sysy_lvX/100_int_literal.sy')
-rw-r--r--tests/sysy_lvX/100_int_literal.sy50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/sysy_lvX/100_int_literal.sy b/tests/sysy_lvX/100_int_literal.sy
new file mode 100644
index 0000000..bcf61e0
--- /dev/null
+++ b/tests/sysy_lvX/100_int_literal.sy
@@ -0,0 +1,50 @@
+int s = 0;
+
+int get_ans_se(int ans, int v0, int v1) {
+ int v = 0;
+ if (v0 == v1) v = 1;
+ ans = ans * 2;
+ ans = ans + v;
+ s = s + ans;
+ return ans;
+}
+
+int get_ans(int ans, int v0, int v1) {
+ int v = 0;
+ if (v0 == v1) v = 1;
+ ans = ans * 2;
+ ans = ans + v;
+ return ans;
+}
+
+int main() {
+ const int k0 = -21474838;
+ const int k1 = 0x8000000;
+ const int k2 = 0x8000000 + 1;
+ const int k3 = 0x7fFfffF;
+ const int k4 = 0x7fFfffF - 1;
+ int a1, a2, a3, a4;
+ a1 = get_ans( 0, k0, k1);
+ a1 = get_ans(a1, k0 + 1, k2);
+ a1 = get_ans(a1, k0, -k3 - 1);
+ a1 = get_ans(a1, k0, k4 + 1);
+ a1 = get_ans(a1, k1 / 2, k2 / 2);
+ a1 = get_ans(a1, k1, -k3 - 1);
+ a1 = get_ans(a1, k1, k4 + 1);
+ a2 = get_ans( 0, k2, k3);
+ a2 = get_ans(a2, k2, k4);
+ a2 = get_ans(a2, k3, k4);
+ a2 = get_ans(a2, k0 / 2, k1 / 2);
+ a3 = get_ans_se( 0, k0, k1);
+ a3 = get_ans_se(a3, k0 + 1, k2);
+ a3 = get_ans_se(a3, k0, -k3 - 1);
+ a3 = get_ans_se(a3, k0, k4 + 1);
+ a3 = get_ans_se(a3, k1 / 2, k2 / 2);
+ a3 = get_ans_se(a3, k1, -k3 - 1);
+ a3 = get_ans_se(a3, k1, k4 + 1);
+ a4 = get_ans_se( 0, k2, k3);
+ a4 = get_ans_se(a4, k2, k4);
+ a4 = get_ans_se(a4, k3, k4);
+ a4 = get_ans_se(a4, k0 / 2, k1 / 2);
+ return a1 + a2 + a3 + a4;
+}