summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-16 17:16:29 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2012-07-16 17:16:29 +0000
commit1498e4f7a91a83ba9b6040a86381e5a35da495e3 (patch)
tree977f5c8ab489e7dcd1a5c378a56e4d9ea0e90159
parenta07e3d8405896dc07454f33dacf88fbccf5caf04 (diff)
downloadgcc-1498e4f7a91a83ba9b6040a86381e5a35da495e3.tar.gz
2012-07-16 Andrew Pinski <apinski@cavium.com>
* gcc.c-torture/execute/bswap-1.c: New testcase. * gcc.c-torture/compile/unalign-1.c: New testcase. * gcc.c-torture/compile/20120524-1.c: New testcase. * gcc.c-torture/compile/20101216-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189543 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20101216-1.c32
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20120524-1.c4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/unalign-1.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/bswap-1.c51
5 files changed, 109 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 239baafb818..12cf1cab2f1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2012-07-16 Andrew Pinski <apinski@cavium.com>
+
+ * gcc.c-torture/execute/bswap-1.c: New testcase.
+ * gcc.c-torture/compile/unalign-1.c: New testcase.
+ * gcc.c-torture/compile/20120524-1.c: New testcase.
+ * gcc.c-torture/compile/20101216-1.c: New testcase.
+
2012-07-16 Dehao Chen <dehao@google.com>
Revert
diff --git a/gcc/testsuite/gcc.c-torture/compile/20101216-1.c b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c
new file mode 100644
index 00000000000..0c58898c13f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20101216-1.c
@@ -0,0 +1,32 @@
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+typedef union
+{
+ double value;
+ struct
+ {
+ __uint32_t msw;
+ __uint32_t lsw;
+ } parts;
+} ieee_double_shape_type;
+two52= 4.50359962737049600000e+15,
+w6 = -1.63092934096575273989e-03;
+double sin_pi(double x)
+{
+ double y,z;
+ __int32_t n,ix;
+ieee_double_shape_type gh_u;
+ gh_u.value = (x);
+(ix) = gh_u.parts.msw;
+ if(ix<0x43300000)
+ z = y+two52;
+ ieee_double_shape_type gl_u;
+ gl_u.value = (z);
+ (n) = gl_u.parts.lsw;
+ n &= 1;
+ switch (n)
+ {
+ case 0:
+__kernel_sin();
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20120524-1.c b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c
new file mode 100644
index 00000000000..021756b0526
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20120524-1.c
@@ -0,0 +1,4 @@
+ char CJPAT_Packet[1508] = {};
+void build_packet(int port, char *packet) {
+ memcpy(packet, CJPAT_Packet, sizeof(CJPAT_Packet));
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/unalign-1.c b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c
new file mode 100644
index 00000000000..350111fdff4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/unalign-1.c
@@ -0,0 +1,15 @@
+typedef struct __attribute__ ((__packed__))
+{
+ char valueField[2];
+} ptp_tlv_t;
+typedef struct __attribute__ ((__packed__))
+{
+ char stepsRemoved;
+ ptp_tlv_t tlv[1];
+} ptp_message_announce_t;
+int ptplib_send_announce(int sequenceId, int i)
+{
+ ptp_message_announce_t tx_packet;
+ ((long long *)tx_packet.tlv[0].valueField)[sequenceId] = i;
+ f(&tx_packet);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/bswap-1.c b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c
new file mode 100644
index 00000000000..ff80c0559d4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/bswap-1.c
@@ -0,0 +1,51 @@
+/* Test __builtin_bswap64 . */
+
+unsigned long long g(unsigned long long a) __attribute__((noinline));
+unsigned long long g(unsigned long long a)
+{
+ return __builtin_bswap64(a);
+}
+
+
+unsigned long long f(unsigned long long c)
+{
+ union {
+ unsigned long long a;
+ unsigned char b[8];
+ } a, b;
+ a.a = c;
+ b.b[0] = a.b[7];
+ b.b[1] = a.b[6];
+ b.b[2] = a.b[5];
+ b.b[3] = a.b[4];
+ b.b[4] = a.b[3];
+ b.b[5] = a.b[2];
+ b.b[6] = a.b[1];
+ b.b[7] = a.b[0];
+ return b.a;
+}
+
+int main(void)
+{
+ unsigned long long i;
+ /* The rest of the testcase assumes 8 byte long long. */
+ if (sizeof(i) != sizeof(char)*8)
+ return 0;
+ if (f(0x12) != g(0x12))
+ __builtin_abort();
+ if (f(0x1234) != g(0x1234))
+ __builtin_abort();
+ if (f(0x123456) != g(0x123456))
+ __builtin_abort();
+ if (f(0x12345678ull) != g(0x12345678ull))
+ __builtin_abort();
+ if (f(0x1234567890ull) != g(0x1234567890ull))
+ __builtin_abort();
+ if (f(0x123456789012ull) != g(0x123456789012ull))
+ __builtin_abort();
+ if (f(0x12345678901234ull) != g(0x12345678901234ull))
+ __builtin_abort();
+ if (f(0x1234567890123456ull) != g(0x1234567890123456ull))
+ __builtin_abort();
+ return 0;
+}