| ; RUN: opt < %s -passes=gvn -S | FileCheck %s | |
| define i32 @main(ptr %p, i32 %x, i32 %y) { | |
| block1: | |
| %cmp = icmp eq i32 %x, %y | |
| br i1 %cmp , label %block2, label %block3 | |
| block2: | |
| %a = load ptr, ptr %p | |
| br label %block4 | |
| block3: | |
| %b = load ptr, ptr %p | |
| br label %block4 | |
| block4: | |
| ; CHECK-NOT: %existingPHI = phi | |
| ; CHECK: %DEAD = phi | |
| %existingPHI = phi ptr [ %a, %block2 ], [ %b, %block3 ] | |
| %DEAD = load ptr, ptr %p | |
| %c = load i32, ptr %DEAD | |
| %d = load i32, ptr %existingPHI | |
| %e = add i32 %c, %d | |
| ret i32 %e | |
| } |