aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--validation/optim/and-or-crash.c5
-rw-r--r--validation/optim/and-or-mask.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/validation/optim/and-or-crash.c b/validation/optim/and-or-crash.c
new file mode 100644
index 00000000..98a8a9b8
--- /dev/null
+++ b/validation/optim/and-or-crash.c
@@ -0,0 +1,5 @@
+static unsigned a(unsigned b, unsigned c) { (c << 1 | b & 1 << 1) >> 1; }
+
+/*
+ * check-name: catch crashes during AND-OR simplifications
+ */
diff --git a/validation/optim/and-or-mask.c b/validation/optim/and-or-mask.c
new file mode 100644
index 00000000..46803789
--- /dev/null
+++ b/validation/optim/and-or-mask.c
@@ -0,0 +1,18 @@
+int foo(int a, int b)
+{
+ return ((a & 7) | (b & 3)) & 8;
+}
+
+/*
+ * check-name: and-or-mask
+ * check-command: test-linearize -Wno-decl $file
+ *
+ * check-output-start
+foo:
+.L0:
+ <entry-point>
+ ret.32 $0
+
+
+ * check-output-end
+ */