| ; RUN: opt -S -basicaa -objc-arc -gvn < %s | FileCheck %s | |
| @x = common global i8* null, align 8 | |
| declare i8* @objc_retain(i8*) | |
| ; GVN should be able to eliminate this redundant load, with ARC-specific | |
| ; alias analysis. | |
| ; CHECK: @foo | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: %s = load i8** @x | |
| ; CHECK-NOT: load | |
| ; CHECK: ret i8* %s | |
| define i8* @foo(i32 %n) nounwind { | |
| entry: | |
| %s = load i8** @x | |
| %0 = tail call i8* @objc_retain(i8* %s) nounwind | |
| %t = load i8** @x | |
| ret i8* %s | |
| } |