summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/aig/gia/giaEra2.c11
-rw-r--r--src/aig/gia/giaShrink6.c11
-rw-r--r--src/map/mio/mioUtils.c9
-rw-r--r--src/misc/vec/vecHsh.h9
-rw-r--r--src/sat/msat/msatClause.c7
5 files changed, 35 insertions, 12 deletions
diff --git a/src/aig/gia/giaEra2.c b/src/aig/gia/giaEra2.c
index 82c1c22f..9a9547b4 100644
--- a/src/aig/gia/giaEra2.c
+++ b/src/aig/gia/giaEra2.c
@@ -50,6 +50,13 @@ struct Gia_PtrAre_t_
unsigned fMark : 1; // user mark
};
+typedef union Gia_PtrAreInt_t_ Gia_PtrAreInt_t;
+union Gia_PtrAreInt_t_
+{
+ Gia_PtrAre_t iGia;
+ unsigned iInt;
+};
+
// tree nodes
typedef struct Gia_ObjAre_t_ Gia_ObjAre_t;
struct Gia_ObjAre_t_
@@ -118,8 +125,8 @@ struct Gia_ManAre_t_
int timeCube; // cube checking time
};
-static inline Gia_PtrAre_t Gia_Int2Ptr( unsigned n ) { return *(Gia_PtrAre_t *)(&n); }
-static inline unsigned Gia_Ptr2Int( Gia_PtrAre_t n ) { return (*(int *)(&n)) & 0x7fffffff; }
+static inline Gia_PtrAre_t Gia_Int2Ptr( unsigned n ) { Gia_PtrAreInt_t g; g.iInt = n; return g.iGia; }
+static inline unsigned Gia_Ptr2Int( Gia_PtrAre_t n ) { Gia_PtrAreInt_t g = { n }; return g.iInt & 0x7fffffff; }
static inline int Gia_ObjHasBranch0( Gia_ObjAre_t * q ) { return !q->nStas0 && (q->F[0].nPage || q->F[0].nItem); }
static inline int Gia_ObjHasBranch1( Gia_ObjAre_t * q ) { return !q->nStas1 && (q->F[1].nPage || q->F[1].nItem); }
diff --git a/src/aig/gia/giaShrink6.c b/src/aig/gia/giaShrink6.c
index ee89f311..9b92c213 100644
--- a/src/aig/gia/giaShrink6.c
+++ b/src/aig/gia/giaShrink6.c
@@ -170,11 +170,14 @@ Gia_Man_t * Shr_ManFree( Shr_Man_t * p )
***********************************************************************/
static inline void Shr_ManAddFanout( Shr_Man_t * p, int iFanin, int iFanout )
{
- Shr_Fan_t FanStr;
- FanStr.iFan = iFanout;
- FanStr.Next = Vec_IntEntry(p->vObj2Fan, iFanin);
+ union {
+ Shr_Fan_t sFan;
+ word sWord;
+ } FanStr;
+ FanStr.sFan.iFan = iFanout;
+ FanStr.sFan.Next = Vec_IntEntry(p->vObj2Fan, iFanin);
Vec_IntWriteEntry( p->vObj2Fan, iFanin, Vec_WrdSize(p->vFanMem) );
- Vec_WrdPush(p->vFanMem, *((word *)&FanStr) );
+ Vec_WrdPush(p->vFanMem, FanStr.sWord );
}
static inline int Shr_ManFanIterStart( Shr_Man_t * p, int iNode )
{
diff --git a/src/map/mio/mioUtils.c b/src/map/mio/mioUtils.c
index 4241e7b4..57c274ee 100644
--- a/src/map/mio/mioUtils.c
+++ b/src/map/mio/mioUtils.c
@@ -512,10 +512,13 @@ word Mio_DeriveTruthTable6( Mio_Gate_t * pGate )
{ 0xFFFF0000, 0xFFFF0000 },
{ 0x00000000, 0xFFFFFFFF }
};
- unsigned uTruthRes[2];
+ union {
+ unsigned u[2];
+ word w;
+ } uTruthRes;
assert( pGate->nInputs <= 6 );
- Mio_DeriveTruthTable( pGate, uTruths6, pGate->nInputs, 6, uTruthRes );
- return *((word *)uTruthRes);
+ Mio_DeriveTruthTable( pGate, uTruths6, pGate->nInputs, 6, uTruthRes.u );
+ return uTruthRes.w;
}
#if 0
diff --git a/src/misc/vec/vecHsh.h b/src/misc/vec/vecHsh.h
index 34a6c993..8fcf7b0a 100644
--- a/src/misc/vec/vecHsh.h
+++ b/src/misc/vec/vecHsh.h
@@ -46,6 +46,13 @@ struct Hsh_IntObj_t_
int iNext;
};
+typedef union Hsh_IntObjWord_t_ Hsh_IntObjWord_t;
+union Hsh_IntObjWord_t_
+{
+ Hsh_IntObj_t wObj;
+ word wWord;
+};
+
typedef struct Hsh_IntMan_t_ Hsh_IntMan_t;
struct Hsh_IntMan_t_
{
@@ -80,7 +87,7 @@ struct Hsh_VecMan_t_
static inline unsigned * Hsh_IntData( Hsh_IntMan_t * p, int iData ) { return (unsigned *)Vec_IntEntryP( p->vData, p->nSize * iData ); }
static inline Hsh_IntObj_t * Hsh_IntObj( Hsh_IntMan_t * p, int iObj ) { return iObj == -1 ? NULL : (Hsh_IntObj_t *)Vec_WrdEntryP( p->vObjs, iObj ); }
-static inline word Hsh_IntWord( int iData, int iNext ) { Hsh_IntObj_t Obj = {iData, iNext}; return *((word *)&Obj); }
+static inline word Hsh_IntWord( int iData, int iNext ) { Hsh_IntObjWord_t Obj = { {iData, iNext} }; return Obj.wWord; }
static inline Hsh_VecObj_t * Hsh_VecObj( Hsh_VecMan_t * p, int i ) { return i == -1 ? NULL : (Hsh_VecObj_t *)Vec_IntEntryP(p->vData, Vec_IntEntry(p->vMap, i)); }
diff --git a/src/sat/msat/msatClause.c b/src/sat/msat/msatClause.c
index a464f23a..6b1b9e98 100644
--- a/src/sat/msat/msatClause.c
+++ b/src/sat/msat/msatClause.c
@@ -294,7 +294,10 @@ int Msat_ClauseIsLocked( Msat_Solver_t * p, Msat_Clause_t * pC )
***********************************************************************/
float Msat_ClauseReadActivity( Msat_Clause_t * pC )
{
- return *((float *)(pC->pData + pC->nSize));
+ float f;
+
+ memcpy( &f, pC->pData + pC->nSize, sizeof (f));
+ return f;
}
/**Function*************************************************************
@@ -310,7 +313,7 @@ float Msat_ClauseReadActivity( Msat_Clause_t * pC )
***********************************************************************/
void Msat_ClauseWriteActivity( Msat_Clause_t * pC, float Num )
{
- *((float *)(pC->pData + pC->nSize)) = Num;
+ memcpy( pC->pData + pC->nSize, &Num, sizeof (Num) );
}
/**Function*************************************************************