// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -o - %s | FileCheck %s

// A test to ensure that we generate fused calls at -O0.

@class Test0;
Test0 *test0(void) {
  extern Test0 *test0_helper;
  return test0_helper;

  // CHECK:      [[LD:%.*]] = load [[TEST0:%.*]]*, [[TEST0:%.*]]** @test0_helper
  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]* [[LD]] to i8*
  // CHECK-NEXT: [[T1:%.*]] = tail call i8* @llvm.objc.retainAutoreleaseReturnValue(i8* [[T0]])
  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST0]]*
  // CHECK-NEXT: ret [[TEST0]]* [[T2]]
}

id test1(void) {
  extern id test1_helper;
  return test1_helper;

  // CHECK:      [[LD:%.*]] = load i8*, i8** @test1_helper
  // CHECK-NEXT: [[T0:%.*]] = tail call i8* @llvm.objc.retainAutoreleaseReturnValue(i8* [[LD]])
  // CHECK-NEXT: ret i8* [[T0]]
}

void test2(void) {
  // CHECK:      [[X:%.*]] = alloca i8*
  // CHECK-NEXT: store i8* null, i8** [[X]]
  // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[X]])
  // CHECK-NEXT: ret void
  __weak id x;
}

id test3(void) {
  extern id test3_helper(void);
  // CHECK:      [[T0:%.*]] = call i8* @test3_helper()
  // CHECK-NEXT: ret i8* [[T0]]
  return test3_helper();
}

@interface Test4 { id x; } @end
@interface Test4_sub : Test4 { id y; } @end
Test4 *test4(void) {
  extern Test4_sub *test4_helper(void);
  // CHECK:      [[T0:%.*]] = call [[TEST4S:%.*]]* @test4_helper()
  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST4S]]* [[T0]] to [[TEST4:%.*]]*
  // CHECK-NEXT: ret [[TEST4]]* [[T1]]
  return test4_helper();
}

// rdar://problem/9418404
@class Test5;
void test5(void) {
  Test5 *x, *y;
  if ((x = y))
    y = 0;

// CHECK-LABEL:    define{{.*}} void @test5()
// CHECK:      [[X:%.*]] = alloca [[TEST5:%.*]]*,
// CHECK-NEXT: [[Y:%.*]] = alloca [[TEST5:%.*]]*,
// CHECK-NEXT: store [[TEST5]]* null, [[TEST5]]** [[X]],
// CHECK-NEXT: store [[TEST5]]* null, [[TEST5]]** [[Y]],
// CHECK-NEXT: [[T0:%.*]] = load [[TEST5]]*, [[TEST5]]** [[Y]],
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST5]]** [[X]] to i8**
// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST5]]* [[T0]] to i8*
// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T1]], i8* [[T2]])
// CHECK-NEXT: [[T3:%.*]] = icmp ne [[TEST5]]* [[T0]], null
// CHECK-NEXT: br i1 [[T3]],
}
