mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	reassociation opportunities are exposed. This fixes a bug where the nested reassociation expects to be the IR to be consistent, but it isn't, because the outer reassociation has disconnected some of the operands. rdar://9167457 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129324 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			25 lines
		
	
	
		
			649 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			649 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt -S -reassociate < %s | FileCheck %s
 | |
| ; rdar://9167457
 | |
| 
 | |
| ; Reassociate shouldn't break this testcase involving a secondary
 | |
| ; reassociation.
 | |
| 
 | |
| ; CHECK:     define
 | |
| ; CHECK-NOT: undef
 | |
| ; CHECK:     %factor = mul i32 %tmp3, -2
 | |
| ; CHECK-NOT: undef
 | |
| ; CHECK:     }
 | |
| 
 | |
| define void @x0f2f640ab6718391b59ce96d9fdeda54(i32 %arg, i32 %arg1, i32 %arg2, i32* %.out) nounwind {
 | |
| _:
 | |
|   %tmp = sub i32 %arg, %arg1
 | |
|   %tmp3 = mul i32 %tmp, -1268345047
 | |
|   %tmp4 = add i32 %tmp3, 2014710503
 | |
|   %tmp5 = add i32 %tmp3, -1048397418
 | |
|   %tmp6 = sub i32 %tmp4, %tmp5
 | |
|   %tmp7 = sub i32 -2014710503, %tmp3
 | |
|   %tmp8 = add i32 %tmp6, %tmp7
 | |
|   store i32 %tmp8, i32* %.out
 | |
|   ret void
 | |
| }
 |