aboutsummaryrefslogtreecommitdiff
path: root/libdecnumber/decNumberLocal.h
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2008-10-27 16:45:40 +0000
committerJanis Johnson <janis@gcc.gnu.org>2008-10-27 16:45:40 +0000
commit4a44abab56d863c6916cde14e67b78422a7a3f0a (patch)
tree130ea634c2b45eddb3c5bd4abf6babb041bd851a /libdecnumber/decNumberLocal.h
parentcb1ca6ac11d48dc88a44579ed631c3d9d8a3402c (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.h12
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 */