diff mbox

[1/7] kds: add testcases for kill_dead_stores()

Message ID 20180319003354.90872-2-luc.vanoostenryck@gmail.com (mailing list archive)
State Mainlined, archived
Headers show

Commit Message

Luc Van Oostenryck March 19, 2018, 12:33 a.m. UTC
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
 validation/optim/kill-stores0.c | 35 +++++++++++++++++++++++++++++
 validation/optim/kill-stores1.c | 49 +++++++++++++++++++++++++++++++++++++++++
 validation/optim/kill-stores2.c | 18 +++++++++++++++
 validation/optim/live-stores0.c | 29 ++++++++++++++++++++++++
 4 files changed, 131 insertions(+)
 create mode 100644 validation/optim/kill-stores0.c
 create mode 100644 validation/optim/kill-stores1.c
 create mode 100644 validation/optim/kill-stores2.c
 create mode 100644 validation/optim/live-stores0.c
diff mbox

Patch

diff --git a/validation/optim/kill-stores0.c b/validation/optim/kill-stores0.c
new file mode 100644
index 000000000..eb6eaa4e3
--- /dev/null
+++ b/validation/optim/kill-stores0.c
@@ -0,0 +1,35 @@ 
+struct p {
+	int x, y;
+};
+
+struct q {
+	int w;
+};
+
+static int foo(void)
+{
+	int x = 1;
+	int y = x;
+	return &x == &y;
+}
+
+static int bar(struct p p)
+{
+	if (p.x != 0)
+		;
+}
+
+static int baz(struct p p, struct q q)
+{
+	if (p.x != 0 || p.y != 1 || q.w == 0)
+		;
+}
+
+/*
+ * check-name: kill-stores0
+ * check-command: test-linearize $file
+ * check-known-to-fail
+ *
+ * check-output-ignore
+ * check-output-excludes: store\\.
+ */
diff --git a/validation/optim/kill-stores1.c b/validation/optim/kill-stores1.c
new file mode 100644
index 000000000..095378720
--- /dev/null
+++ b/validation/optim/kill-stores1.c
@@ -0,0 +1,49 @@ 
+struct s {
+	int c[1];
+};
+
+static struct s x, y;
+static int p;
+
+static void foo0(void)
+{
+	(x = y).c;		// x = y;
+}
+
+static void foo1(void)
+{
+	int *t = (x = y).c;	// x = y;
+}
+
+static void foo2(void)
+{
+	(x = y).c + 1;		// x = y;
+}
+
+static void foo3(void)
+{
+	(x = y).c[0];		// x = y;
+}
+
+static void foo4(void)
+{
+	(p ? x : y).c[0];	// ;
+}
+
+static void foo5(void)
+{
+	(p, y).c[0];		// ;
+}
+
+/*
+ * check-name: kill-stores1
+ * check-command: test-linearize -Wno-decl $file
+ * check-known-to-fail
+ *
+ * check-output-ignore
+ * check-output-pattern(4): load\\.
+ * check-output-pattern(4): load\\..*0\\[y\\]
+ * check-output-pattern(4): store\\.
+ * check-output-pattern(4): store\\..*0\\[x\\]
+ * check-output-excludes: select\\.
+ */
diff --git a/validation/optim/kill-stores2.c b/validation/optim/kill-stores2.c
new file mode 100644
index 000000000..692888489
--- /dev/null
+++ b/validation/optim/kill-stores2.c
@@ -0,0 +1,18 @@ 
+extern void def(int *);
+
+static void foo(void)
+{
+	int c;
+	def(&c);
+	if (c)
+		c = c;
+}
+
+/*
+ * check-name: kill-stores2
+ * check-command: test-linearize $file
+ * check-known-to-fail
+ *
+ * check-output-ignore
+ * check-output-excludes: store\\.
+ */
diff --git a/validation/optim/live-stores0.c b/validation/optim/live-stores0.c
new file mode 100644
index 000000000..2cbc5ab14
--- /dev/null
+++ b/validation/optim/live-stores0.c
@@ -0,0 +1,29 @@ 
+void init(int *x);
+
+static int foo(void)
+{
+	int a[2] = { 0, 123, };
+
+	if (a[1] != 123)
+		return 1;
+	init(a);
+	if (a[1] == 123)
+		return 2;
+	return 0;
+}
+
+#if 0
+void init(int *x)
+{
+	x[0] = x[1] = 0;
+}
+#endif
+
+/*
+ * check-name: live-stores
+ * check-command: test-linearize $file
+ *
+ * check-output-ignore
+ * check-output-contains: store.32 *\\$123
+ * check-output-pattern(2,3): store\\.
+ */