aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
new file mode 100644
index 000000000..5bf840cf2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/mode-dependent-address.c
@@ -0,0 +1,49 @@
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+void f883b (int8_t * result,
+ int16_t * __restrict arg1,
+ uint32_t * __restrict arg2,
+ uint64_t * __restrict arg3,
+ uint8_t * __restrict arg4)
+{
+ int idx;
+ for (idx=0;idx<96;idx += 1) {
+ result[idx] = (((((((((((-27 + 2+1)>>1) || arg4[idx]) < arg1[idx])
+ ? (((-27 + 2+1)>>1) || arg4[idx])
+ : arg1[idx])
+ >> (arg2[idx] & 31)) ^ 1) - -32)>>7) | -5) & arg3[idx]);
+ }
+}
+
+int8_t result[96];
+int16_t arg1[96];
+uint32_t arg2[96];
+uint64_t arg3[96];
+uint8_t arg4[96];
+
+int main (void)
+{
+ int i;
+ int correct[] = {0x0,0x1,0x2,0x3,0x0,0x1,0x2,0x3,0x8,0x9,0xa,0xb,0x8,0x9,
+ 0xa,0xb,0x10,0x11,0x12,0x13,0x10,0x11,0x12,0x13,
+ 0x18,0x19,0x1a,0x1b,0x18,0x19,0x1a,0x1b,0x20,0x21,0x22,
+ 0x23,0x20,0x21,0x22,0x23,0x28,0x29,0x2a,
+ 0x2b,0x28,0x29,0x2a,0x2b,0x30,0x31,0x32,0x33,
+ 0x30,0x31,0x32,0x33,0x38,0x39,0x3a,0x3b,0x38,0x39,0x3a,
+ 0x3b,0x40,0x41,0x42,0x43,0x40,0x41,0x42,0x43,0x48,0x49,
+ 0x4a,0x4b,0x48,0x49,0x4a,0x4b,0x50,0x51,
+ 0x52,0x53,0x50,0x51,0x52,0x53,0x58,0x59,0x5a,0x5b,
+ 0x58,0x59,0x5a,0x5b};
+
+ for (i=0; i < 96; i++)
+ arg3[i] = arg2[i] = arg1[i] = arg4[i] = i;
+
+ f883b(result, arg1, arg2, arg3, arg4);
+
+ for (i=0; i < 96; i++)
+ if (result[i] != correct[i]) abort();
+
+ return 0;
+}