| 
							
							; Instcombine was missing a test that caused it to make illegal transformations
 | 
						
						
						
						
							 | 
							
							; sometimes.  In this case, it transforms the sub into an add:
 | 
						
						
						
						
							 | 
							
							; RUN: opt < %s -instcombine -S | grep sub
 | 
						
						
						
						
							 | 
							
							;
 | 
						
						
						
						
							 | 
							
							define i32 @test(i32 %i, i32 %j) {
 | 
						
						
						
						
							 | 
							
							        %A = mul i32 %i, %j
 | 
						
						
						
						
							 | 
							
							        %B = sub i32 2, %A
 | 
						
						
						
						
							 | 
							
							        ret i32 %B
 | 
						
						
						
						
							 | 
							
							}
 | 
						
						
						
						
							 | 
							
							
 |