summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/vect/pr33846.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/vect/pr33846.c')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr33846.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr33846.c b/gcc/testsuite/gcc.dg/vect/pr33846.c
new file mode 100644
index 000000000..3f421c9b7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr33846.c
@@ -0,0 +1,24 @@
+/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_shift } */
+
+int clamp_val (int i)
+{
+ return ~i >> 31;
+}
+
+typedef __PTRDIFF_TYPE__ intptr_t;
+
+void _mix_some_samples (intptr_t buf, int *mix_buffer, int mix_size)
+{
+ int i;
+ signed int *p = mix_buffer;
+ for (i = mix_size ; i > 0; i--)
+ {
+ *((short *) buf) = clamp_val ((*p) + 0x800000);
+ buf += 2;
+ p++;
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */