Import Upstream version 20180207
[hcoop/debian/mlton.git] / runtime / gdtoa.may_alias-unions.patch
CommitLineData
7f918cf1
CE
1diff -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 */
31diff -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]
43diff -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;
55diff -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) {
67diff -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
79diff -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"