Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / runtime / gdtoa.may_alias-unions.patch
1 diff -Naur gdtoa.0/arithchk.c gdtoa.1/arithchk.c
2 --- gdtoa.0/arithchk.c 2016-02-18 20:37:07.000000000 +0000
3 +++ gdtoa.1/arithchk.c 2018-01-25 20:47:16.000000000 +0000
4 @@ -46,7 +46,7 @@
5 union {
6 double d;
7 long L[2];
8 - } u;
9 + } __attribute__((__may_alias__)) u;
10 struct {
11 double d;
12 long L;
13 @@ -73,7 +73,7 @@
14 union {
15 double d;
16 int L[2];
17 - } u;
18 + } __attribute__((__may_alias__)) u;
19 struct {
20 double d;
21 int L;
22 @@ -100,7 +100,7 @@
23 union {
24 double d;
25 long L;
26 - } u;
27 + } __attribute__((__may_alias__)) u;
28 long Cray1;
29
30 /* Cray1 = 4617762693716115456 -- without overflow on non-Crays */
31 diff -Naur gdtoa.0/gdtoaimp.h gdtoa.1/gdtoaimp.h
32 --- gdtoa.0/gdtoaimp.h 2016-02-19 18:37:41.000000000 +0000
33 +++ gdtoa.1/gdtoaimp.h 2018-01-25 20:47:16.000000000 +0000
34 @@ -299,7 +299,7 @@
35 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.
36 #endif
37
38 -typedef union { double d; ULong L[2]; } U;
39 +typedef union { double d; ULong L[2]; } __attribute__((__may_alias__)) U;
40
41 #ifdef IEEE_8087
42 #define word0(x) (x)->L[1]
43 diff -Naur gdtoa.0/qnan.c gdtoa.1/qnan.c
44 --- gdtoa.0/qnan.c 2016-02-19 04:23:34.000000000 +0000
45 +++ gdtoa.1/qnan.c 2018-01-25 20:47:16.000000000 +0000
46 @@ -89,7 +89,7 @@
47 unsigned short u[5];
48 long double D;
49 #endif
50 - } U;
51 + } __attribute__((__may_alias__)) U;
52 U a, b, c;
53 #ifdef Gen_ld_QNAN
54 int i;
55 diff -Naur gdtoa.0/strtodnrp.c gdtoa.1/strtodnrp.c
56 --- gdtoa.0/strtodnrp.c 2016-02-19 04:38:18.000000000 +0000
57 +++ gdtoa.1/strtodnrp.c 2018-01-25 20:47:16.000000000 +0000
58 @@ -48,7 +48,7 @@
59 ULong bits[2];
60 Long exp;
61 int k;
62 - union { ULong L[2]; double d; } u;
63 + union { ULong L[2]; double d; } __attribute__((__may_alias__)) u;
64
65 k = strtodg(s, sp, &fpi, &exp, bits);
66 switch(k & STRTOG_Retmask) {
67 diff -Naur gdtoa.0/strtof.c gdtoa.1/strtof.c
68 --- gdtoa.0/strtof.c 2016-02-19 05:05:40.000000000 +0000
69 +++ gdtoa.1/strtof.c 2018-01-25 20:47:16.000000000 +0000
70 @@ -42,7 +42,7 @@
71 ULong bits[1];
72 Long exp;
73 int k;
74 - union { ULong L[1]; float f; } u;
75 + union { ULong L[1]; float f; } __attribute__((__may_alias__)) u;
76 #ifdef Honor_FLT_ROUNDS
77 #include "gdtoa_fltrnds.h"
78 #else
79 diff -Naur gdtoa.0/strtopdd.c gdtoa.1/strtopdd.c
80 --- gdtoa.0/strtopdd.c 2016-02-19 04:40:59.000000000 +0000
81 +++ gdtoa.1/strtopdd.c 2018-01-25 20:47:16.000000000 +0000
82 @@ -49,7 +49,7 @@
83 typedef union {
84 double d[2];
85 ULong L[4];
86 - } U;
87 + } __attribute__((__may_alias__)) U;
88 U *u;
89 #ifdef Honor_FLT_ROUNDS
90 #include "gdtoa_fltrnds.h"