Home | History | Annotate | Download | only in ObjCARC
      1 ; RUN: opt -S -basicaa -objc-arc -gvn < %s | FileCheck %s
      2 
      3 @x = common global i8* null, align 8
      4 
      5 declare i8* @objc_retain(i8*)
      6 
      7 ; GVN should be able to eliminate this redundant load, with ARC-specific
      8 ; alias analysis.
      9 
     10 ; CHECK: @foo
     11 ; CHECK-NEXT: entry:
     12 ; CHECK-NEXT: %s = load i8** @x
     13 ; CHECK-NOT: load
     14 ; CHECK: ret i8* %s
     15 define i8* @foo(i32 %n) nounwind {
     16 entry:
     17   %s = load i8** @x
     18   %0 = tail call i8* @objc_retain(i8* %s) nounwind
     19   %t = load i8** @x
     20   ret i8* %s
     21 }
     22