cloud9_root/src/cloud9/lib/Core/Executor_CSCA.cpp
// generate tag inequality constraints for <symbolic, symbolic> address pairs
generate tag inequality constraints for  address pairs
generate tag inequality constraints for address pairs
ref<Expr> Executor::createCacheSetCompareConstraintSS(ref<Expr> &addr1, ref<Expr> &addr2) {
	std::pair<ref<Expr>, ref<Expr> > setPair(addr1, addr2);
	ref<Expr> set_addr1, set_addr2;
	if (setPairCache.count(setPair)) {
		return setPairCache[setPair];
	}
	if (setCache.count(addr1)) set_addr1 = setCache[addr1];
	else {
		set_addr1 = getCacheSet(addr1);
		setCache[addr1] = set_addr1;
	}
	if (setCache.count(addr2)) set_addr2 = setCache[addr2];
	else {
		set_addr2 = getCacheSet(addr2);
		setCache[addr2] = set_addr2;
	}
	setPairCache[setPair] = EqExpr::create(set_addr1, set_addr2);
	return setPairCache[setPair];
}
ref < Expr > Executor :: createCacheSetCompareConstraintSS ( ref < Expr > & addr1 , ref < Expr > & addr2 ) { std :: pair < ref < Expr > , ref < Expr > > setPair ( addr1 , addr2 ) ; ref < Expr > set_addr1 , set_addr2 ; if ( setPairCache . count ( setPair ) ) { return setPairCache [ setPair ] ; } if ( setCache . count ( addr1 ) ) set_addr1 = setCache [ addr1 ] ; else { set_addr1 = getCacheSet ( addr1 ) ; setCache [ addr1 ] = set_addr1 ; } if ( setCache . count ( addr2 ) ) set_addr2 = setCache [ addr2 ] ; else { set_addr2 = getCacheSet ( addr2 ) ; setCache [ addr2 ] = set_addr2 ; } setPairCache [ setPair ] = EqExpr :: create ( set_addr1 , set_addr2 ) ; return setPairCache [ setPair ] ; }
generate tag inequality constraints for <symbolic, symbolic> address pairs
generate tag inequality constraints for <symbolic symbolic > address pairs