Commit ccb5bb34 by Alan Mishchenko

Suggested patch for type-punned warnings

parent ca9eca3b
...@@ -50,6 +50,13 @@ struct Gia_PtrAre_t_ ...@@ -50,6 +50,13 @@ struct Gia_PtrAre_t_
unsigned fMark : 1; // user mark 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 // tree nodes
typedef struct Gia_ObjAre_t_ Gia_ObjAre_t; typedef struct Gia_ObjAre_t_ Gia_ObjAre_t;
struct Gia_ObjAre_t_ struct Gia_ObjAre_t_
...@@ -118,8 +125,8 @@ struct Gia_ManAre_t_ ...@@ -118,8 +125,8 @@ struct Gia_ManAre_t_
int timeCube; // cube checking time int timeCube; // cube checking time
}; };
static inline Gia_PtrAre_t Gia_Int2Ptr( unsigned n ) { return *(Gia_PtrAre_t *)(&n); } 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 ) { return (*(int *)(&n)) & 0x7fffffff; } 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_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); } static inline int Gia_ObjHasBranch1( Gia_ObjAre_t * q ) { return !q->nStas1 && (q->F[1].nPage || q->F[1].nItem); }
......
...@@ -170,11 +170,14 @@ Gia_Man_t * Shr_ManFree( Shr_Man_t * p ) ...@@ -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 ) static inline void Shr_ManAddFanout( Shr_Man_t * p, int iFanin, int iFanout )
{ {
Shr_Fan_t FanStr; union {
FanStr.iFan = iFanout; Shr_Fan_t sFan;
FanStr.Next = Vec_IntEntry(p->vObj2Fan, iFanin); 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_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 ) static inline int Shr_ManFanIterStart( Shr_Man_t * p, int iNode )
{ {
......
...@@ -512,10 +512,13 @@ word Mio_DeriveTruthTable6( Mio_Gate_t * pGate ) ...@@ -512,10 +512,13 @@ word Mio_DeriveTruthTable6( Mio_Gate_t * pGate )
{ 0xFFFF0000, 0xFFFF0000 }, { 0xFFFF0000, 0xFFFF0000 },
{ 0x00000000, 0xFFFFFFFF } { 0x00000000, 0xFFFFFFFF }
}; };
unsigned uTruthRes[2]; union {
unsigned u[2];
word w;
} uTruthRes;
assert( pGate->nInputs <= 6 ); assert( pGate->nInputs <= 6 );
Mio_DeriveTruthTable( pGate, uTruths6, pGate->nInputs, 6, uTruthRes ); Mio_DeriveTruthTable( pGate, uTruths6, pGate->nInputs, 6, uTruthRes.u );
return *((word *)uTruthRes); return uTruthRes.w;
} }
#if 0 #if 0
......
...@@ -46,6 +46,13 @@ struct Hsh_IntObj_t_ ...@@ -46,6 +46,13 @@ struct Hsh_IntObj_t_
int iNext; 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; typedef struct Hsh_IntMan_t_ Hsh_IntMan_t;
struct Hsh_IntMan_t_ struct Hsh_IntMan_t_
{ {
...@@ -80,7 +87,7 @@ struct Hsh_VecMan_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 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 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)); } 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)); }
......
...@@ -294,7 +294,10 @@ int Msat_ClauseIsLocked( Msat_Solver_t * p, Msat_Clause_t * pC ) ...@@ -294,7 +294,10 @@ int Msat_ClauseIsLocked( Msat_Solver_t * p, Msat_Clause_t * pC )
***********************************************************************/ ***********************************************************************/
float Msat_ClauseReadActivity( 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************************************************************* /**Function*************************************************************
...@@ -310,7 +313,7 @@ float Msat_ClauseReadActivity( Msat_Clause_t * pC ) ...@@ -310,7 +313,7 @@ float Msat_ClauseReadActivity( Msat_Clause_t * pC )
***********************************************************************/ ***********************************************************************/
void Msat_ClauseWriteActivity( Msat_Clause_t * pC, float Num ) void Msat_ClauseWriteActivity( Msat_Clause_t * pC, float Num )
{ {
*((float *)(pC->pData + pC->nSize)) = Num; memcpy( pC->pData + pC->nSize, &Num, sizeof (Num) );
} }
/**Function************************************************************* /**Function*************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment