diff options
Diffstat (limited to 'passes')
| -rw-r--r-- | passes/opt/wreduce.cc | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/passes/opt/wreduce.cc b/passes/opt/wreduce.cc index 908a85d5b..22af0bd8b 100644 --- a/passes/opt/wreduce.cc +++ b/passes/opt/wreduce.cc @@ -372,13 +372,12 @@ struct WreduceWorker  			int i;  			for (i = 0; i < GetSize(sig); i++) { -				if (B.at(i, Sx) != S0 && (sub || A.at(i, Sx) != S0)) -					break; -				if (B[i] == S0) +				if (B.at(i, Sx) == S0 && A.at(i, Sx) != Sx)  					module->connect(sig[i], A[i]); -				else if (A[i] == S0) +				else if (!sub && A.at(i, Sx) == S0 && B.at(i, Sx) != Sx)  					module->connect(sig[i], B[i]); -				else log_abort(); +				else +					break;  			}  			if (i > 0) {  				cell->setPort("\\A", A.extract(i, -1));  | 
