aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/unsorted/bad.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/unsorted/bad.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/unsorted/bad.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/unsorted/bad.c b/gcc/testsuite/gcc.c-torture/unsorted/bad.c
new file mode 100644
index 00000000000..8cc84973b72
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/unsorted/bad.c
@@ -0,0 +1,26 @@
+typedef union longlong
+{
+ struct {unsigned short h0, h1, h2, h3;} h;
+ struct {signed long low, high;} si;
+ struct {unsigned long low, high;} ui;
+ signed long long sll;
+ unsigned long long ull;
+} long_long;
+
+
+long long
+__negdi2 (u)
+ long long u;
+{
+ long_long uu;
+
+ uu.sll = u;
+
+ uu.si.low = -uu.si.low;
+ if (uu.si.low == 0)
+ uu.si.high = -uu.si.high;
+ else
+ uu.si.high = ~uu.si.high;
+
+ return uu.sll;
+}