merge from gcc
This commit is contained in:
parent
e8ecdb5c3b
commit
aed1add31b
6 changed files with 38 additions and 16 deletions
|
@ -1,3 +1,15 @@
|
|||
2008-10-27 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
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.
|
||||
|
||||
2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* Makefile.in ($(srcdir)/aclocal.m4): Update dependencies.
|
||||
|
|
|
@ -1660,8 +1660,10 @@ decFloat * decFloatCompareTotal(decFloat *result,
|
|||
/* decode the coefficients */
|
||||
/* (shift both right two if Quad to make a multiple of four) */
|
||||
#if QUAD
|
||||
USHORTAT(bufl)=0;
|
||||
USHORTAT(bufr)=0;
|
||||
ub = bufl; /* avoid type-pun violation */
|
||||
USHORTAT(ub)=0;
|
||||
uc = bufr; /* avoid type-pun violation */
|
||||
USHORTAT(uc)=0;
|
||||
#endif
|
||||
GETCOEFF(dfl, bufl+QUAD*2); /* decode from decFloat */
|
||||
GETCOEFF(dfr, bufr+QUAD*2); /* .. */
|
||||
|
@ -3542,8 +3544,10 @@ static Int decNumCompare(const decFloat *dfl, const decFloat *dfr, Flag tot) {
|
|||
/* decode the coefficients */
|
||||
/* (shift both right two if Quad to make a multiple of four) */
|
||||
#if QUAD
|
||||
UINTAT(bufl)=0;
|
||||
UINTAT(bufr)=0;
|
||||
ub=bufl; /* avoid type-pun violation */
|
||||
UINTAT(ub)=0;
|
||||
uc=bufr; /* avoid type-pun violation */
|
||||
UINTAT(uc)=0;
|
||||
#endif
|
||||
GETCOEFF(dfl, bufl+QUAD*2); /* decode from decFloat */
|
||||
GETCOEFF(dfr, bufr+QUAD*2); /* .. */
|
||||
|
|
|
@ -58,9 +58,11 @@
|
|||
#include "decContext.h"
|
||||
#include "decQuad.h"
|
||||
|
||||
/* The decDouble decimal 64-bit type, accessible by bytes */
|
||||
typedef struct {
|
||||
/* The decDouble decimal 64-bit type, accessible by various types */
|
||||
typedef union {
|
||||
uint8_t bytes[DECDOUBLE_Bytes]; /* fields: 1, 5, 8, 50 bits */
|
||||
uint16_t shorts[DECDOUBLE_Bytes/2];
|
||||
uint32_t words[DECDOUBLE_Bytes/4];
|
||||
} decDouble;
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -59,9 +59,11 @@
|
|||
/* Required include */
|
||||
#include "decContext.h"
|
||||
|
||||
/* The decQuad decimal 128-bit type, accessible by bytes */
|
||||
typedef struct {
|
||||
/* The decQuad decimal 128-bit type, accessible by various types */
|
||||
typedef union {
|
||||
uint8_t bytes[DECQUAD_Bytes]; /* fields: 1, 5, 12, 110 bits */
|
||||
uint16_t shorts[DECQUAD_Bytes/2];
|
||||
uint32_t words[DECQUAD_Bytes/4];
|
||||
} decQuad;
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
|
|
@ -59,9 +59,11 @@
|
|||
#include "decQuad.h"
|
||||
#include "decDouble.h"
|
||||
|
||||
/* The decSingle decimal 32-bit type, accessible by bytes */
|
||||
typedef struct {
|
||||
/* The decSingle decimal 32-bit type, accessible by various types */
|
||||
typedef union {
|
||||
uint8_t bytes[DECSINGLE_Bytes]; /* fields: 1, 5, 6, 20 bits */
|
||||
uint16_t shorts[DECSINGLE_Bytes/2];
|
||||
uint32_t words[DECSINGLE_Bytes/4];
|
||||
} decSingle;
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
|
Loading…
Reference in a new issue