summaryrefslogtreecommitdiffstats
path: root/src/opt/fxch/FxchSCHashTable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/opt/fxch/FxchSCHashTable.c')
-rw-r--r--src/opt/fxch/FxchSCHashTable.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/opt/fxch/FxchSCHashTable.c b/src/opt/fxch/FxchSCHashTable.c
index 1bf7e8b3..a37009eb 100644
--- a/src/opt/fxch/FxchSCHashTable.c
+++ b/src/opt/fxch/FxchSCHashTable.c
@@ -182,10 +182,6 @@ static inline int Fxch_SCHashTableEntryCompare( Fxch_SCHashTable_t* pSCHashTable
Vec_IntClear( &pSCHashTable->vSubCube0 );
Vec_IntClear( &pSCHashTable->vSubCube1 );
- if ( pSCData0->iLit1 == 0 && pSCData1->iLit1 == 0 &&
- Vec_IntEntry( vCube0, pSCData0->iLit0 ) == Abc_LitNot( Vec_IntEntry( vCube1, pSCData1->iLit0 ) ) )
- return 0;
-
if ( pSCData0->iLit1 > 0 && pSCData1->iLit1 > 0 &&
( Vec_IntEntry( vCube0, pSCData0->iLit0 ) == Vec_IntEntry( vCube1, pSCData1->iLit0 ) ||
Vec_IntEntry( vCube0, pSCData0->iLit0 ) == Vec_IntEntry( vCube1, pSCData1->iLit1 ) ||
@@ -270,14 +266,16 @@ int Fxch_SCHashTableInsert( Fxch_SCHashTable_t* pSCHashTable,
if ( !Fxch_SCHashTableEntryCompare( pSCHashTable, vCubes, &( pEntry->SCData ), &( pNewEntry->SCData ) ) )
continue;
- if ( pEntry->SCData.iLit0 == 0 )
- {
- printf("[FXCH] SCC detected\n");
- continue;
- }
- if ( pNewEntry->SCData.iLit0 == 0 )
+ if ( ( pEntry->SCData.iLit0 == 0 ) || ( pNewEntry->SCData.iLit0 == 0 ) )
{
- printf("[FXCH] SCC detected\n");
+ Vec_Int_t* vCube0 = Fxch_ManGetCube( pSCHashTable->pFxchMan, pEntry->SCData.iCube ),
+ * vCube1 = Fxch_ManGetCube( pSCHashTable->pFxchMan, pEntry->SCData.iCube );
+
+ if ( Vec_IntSize( vCube0 ) > Vec_IntSize( vCube1 ) )
+ Vec_IntPush( pSCHashTable->pFxchMan->vSCC, pEntry->SCData.iCube );
+ else
+ Vec_IntPush( pSCHashTable->pFxchMan->vSCC, pNewEntry->SCData.iCube );
+
continue;
}