From 05c305bee19221e3b5b9557267c5cfa7525f752f Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 30 May 2023 18:20:21 +0200 Subject: fix void conditional expr; condjump, condexprvalue optimizations --- test.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test.c') diff --git a/test.c b/test.c index 461d42f..e16e415 100644 --- a/test.c +++ b/test.c @@ -17,4 +17,19 @@ int test0(struct foo *foo) { return foo->x ? foo->y : foo->z; } int test1(int x, int y, int z) { return x && y || z; } int test2(int x, int y, int z) { return x || y && z; } +extern void f(); +int test3(int x, int y) { + if (x < 0 && y < 0 && 1) return x - y; + if ((x == 0 || x > 0) && y > 0) return y; + if (f(), x == y ? x && 1 : 0 || y) return x; + return x + y; +} + +int test4(int c) { + return c == 'a' || c == 'x' ? 1 + : (f(), c == 'b' || c == 'y') ? 2 + : c == 'c' || c == 'z' ? 3 + : 0; +} + // -- cgit v1.2.3