diff options
author | Janis Johnson <janis187@us.ibm.com> | 2008-10-27 16:45:40 +0000 |
---|---|---|
committer | Janis Johnson <janis@gcc.gnu.org> | 2008-10-27 16:45:40 +0000 |
commit | 4a44abab56d863c6916cde14e67b78422a7a3f0a (patch) | |
tree | 130ea634c2b45eddb3c5bd4abf6babb041bd851a /libdecnumber/decNumberLocal.h | |
parent | cb1ca6ac11d48dc88a44579ed631c3d9d8a3402c (diff) |
re PR other/37897 (decNumber functions break strict-aliasing rules)
PR other/37897
* decDouble.h (decDouble): Replace struct with union accessible
by more types.
* decSingle.h (decSingle): Ditto.
* decQuad.h (decQuad): Ditto.
* decNumberLocal.h (DFWORD, DFBYTE, DFWWORD): access decFloat via
new members.
* decBasic.c (decFloatCompareTotal): Avoid type-pun violation.
(decNumberCompare): Ditto.
From-SVN: r141386
Diffstat (limited to 'libdecnumber/decNumberLocal.h')
-rw-r--r-- | libdecnumber/decNumberLocal.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libdecnumber/decNumberLocal.h b/libdecnumber/decNumberLocal.h index 809eaa466a2..f1568f725e1 100644 --- a/libdecnumber/decNumberLocal.h +++ b/libdecnumber/decNumberLocal.h @@ -308,13 +308,13 @@ #define DECWORDS (DECBYTES/4) #define DECWWORDS (DECWBYTES/4) #if DECLITEND - #define DFWORD(df, off) UINTAT((df)->bytes+(DECWORDS-1-(off))*4) - #define DFBYTE(df, off) UBYTEAT((df)->bytes+(DECBYTES-1-(off))) - #define DFWWORD(dfw, off) UINTAT((dfw)->bytes+(DECWWORDS-1-(off))*4) + #define DFWORD(df, off) ((df)->words[DECWORDS-1-(off)]) + #define DFBYTE(df, off) ((df)->bytes[DECBYTES-1-(off)]) + #define DFWWORD(dfw, off) ((dfw)->words[DECWWORDS-1-(off)]) #else - #define DFWORD(df, off) UINTAT((df)->bytes+(off)*4) - #define DFBYTE(df, off) UBYTEAT((df)->bytes+(off)) - #define DFWWORD(dfw, off) UINTAT((dfw)->bytes+(off)*4) + #define DFWORD(df, off) ((df)->words[off]) + #define DFBYTE(df, off) ((df)->bytes[off]) + #define DFWWORD(dfw, off) ((dfw)->words[off]) #endif /* Tests for sign or specials, directly on DECFLOATs */ |