cloud9_root/src/cloud9/lib/Core/Executor_CSCA.cpp
// generate tag inequality constraints for <symbolic,symbolic> constraint pairs
generate tag inequality constraints for  constraint pairs
generate tag inequality constraints for constraint pairs
ref<Expr> Executor::createCacheTagCompareConstraintSS(ref<Expr> &addr1, ref<Expr> &addr2) {
	std::pair<ref<Expr>, ref<Expr> > tagPair(addr1, addr2);
	ref<Expr> tag_addr1, tag_addr2;
	if (tagPairCache.count(tagPair)) {
		return tagPairCache[tagPair];
	}
	if (tagCache.count(addr1)) tag_addr1 = tagCache[addr1];
	else {
		tag_addr1 = getCacheTag(addr1);
		tagCache[addr1] = tag_addr1;
	}
	if (tagCache.count(addr2)) tag_addr2 = tagCache[addr2];
	else {
		tag_addr2 = getCacheTag(addr2);
		tagCache[addr2] = tag_addr2;
	}
	tagPairCache[tagPair] = EqExpr::create(tag_addr1, tag_addr2);
	return tagPairCache[tagPair];
}
ref < Expr > Executor :: createCacheTagCompareConstraintSS ( ref < Expr > & addr1 , ref < Expr > & addr2 ) { std :: pair < ref < Expr > , ref < Expr > > tagPair ( addr1 , addr2 ) ; ref < Expr > tag_addr1 , tag_addr2 ; if ( tagPairCache . count ( tagPair ) ) { return tagPairCache [ tagPair ] ; } if ( tagCache . count ( addr1 ) ) tag_addr1 = tagCache [ addr1 ] ; else { tag_addr1 = getCacheTag ( addr1 ) ; tagCache [ addr1 ] = tag_addr1 ; } if ( tagCache . count ( addr2 ) ) tag_addr2 = tagCache [ addr2 ] ; else { tag_addr2 = getCacheTag ( addr2 ) ; tagCache [ addr2 ] = tag_addr2 ; } tagPairCache [ tagPair ] = EqExpr :: create ( tag_addr1 , tag_addr2 ) ; return tagPairCache [ tagPair ] ; }
generate tag inequality constraints for <symbolic,symbolic> constraint pairs
generate tag inequality constraints for <symbolic symbolic > constraint pairs