aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-10-27 16:59:06 +0000
committerChris Lattner <sabre@nondot.org>2005-10-27 16:59:06 +0000
commitc9409e10d07737c335b7a73a22d3552f5413738b (patch)
tree7596b75631552866e7085170f179d75666bd76e0
parent902f546f4b71019112475444acc4c14caa77a6d8 (diff)
new testcase, from... PR491.
git-svn-id: https://llvm.org/svn/llvm-project/test-suite/trunk@24045 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--SingleSource/Regression/C/PR491.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/SingleSource/Regression/C/PR491.c b/SingleSource/Regression/C/PR491.c
new file mode 100644
index 00000000..b082fa1f
--- /dev/null
+++ b/SingleSource/Regression/C/PR491.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+
+static int assert_fail(const char* s, unsigned l)
+{
+ fprintf(stderr, "assertion failed in line %u: '%s'\n", l, s);
+ return 0;
+}
+#define ASSERT(expr) ((expr) ? 1 : assert_fail(#expr,__LINE__))
+
+int test(int r) {
+#if !defined(__i386__)
+ #if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN)
+ return r;
+ #else
+ if (BYTE_ORDER != LITTLE_ENDIAN) return r;
+ #endif
+#endif
+
+ /* little endian */
+ union { long l; unsigned char c[sizeof(long)]; } u;
+ u.l = 0; u.c[0] = 0x80;
+ r &= ASSERT(u.l == 128);
+ u.l = 0; u.c[sizeof(long)-1] = 0x80;
+ r &= ASSERT(u.l < 0);
+ return r;
+}
+
+int main() {
+ return test(1) == 1;
+}
+