aboutsummaryrefslogtreecommitdiff
path: root/tests/sysy_lvX/088_int_literal.sy
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.001@gmail.com>2026-09-15 08:16:43 +0800
committerRichard Qin <richard.qin.001@gmail.com>2026-09-15 08:16:43 +0800
commit4022e5c95210631e4aceb08eaf9d9071aa5aefc4 (patch)
treea5922559836e45fb3459a3d070367912e1035b1a /tests/sysy_lvX/088_int_literal.sy
downloadrcc-master.tar.gz
rcc-master.tar.xz
Set up a git repoHEADmaster
Diffstat (limited to 'tests/sysy_lvX/088_int_literal.sy')
-rw-r--r--tests/sysy_lvX/088_int_literal.sy50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/sysy_lvX/088_int_literal.sy b/tests/sysy_lvX/088_int_literal.sy
new file mode 100644
index 0000000..69eacfe
--- /dev/null
+++ b/tests/sysy_lvX/088_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 = -214743648;
+ const int k1 = 0x800000;
+ const int k2 = 0x800000 + 1;
+ const int k3 = 0x7fFfff;
+ const int k4 = 0x7fFfff - 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;
+}