// RUN: %clang_cc1 -no-opaque-pointers %s -triple x86_64-apple-darwin10 -emit-llvm -o - -std=c++11 |FileCheck %s

class x {
public: int operator=(int);
};
void a() {
  x a;
  a = 1u;
}

void f(int i, int j) {
  // CHECK: load i32
  // CHECK: load i32
  // CHECK: add nsw i32
  // CHECK: store i32
  // CHECK: store i32 17, i32
  // CHECK: ret
  (i += j) = 17;
}

// Taken from g++.old-deja/g++.jason/net.C
namespace test1 {
  template <class T> void fn (T t) { }
  template <class T> struct A {
    void (*p)(T);
    A() { p = fn; }
  };

  A<int> a;
}

// Ensure that we use memcpy when we would have selected a trivial assignment
// operator, even for a non-trivially-copyable type.
struct A {
  A &operator=(const A&);
};
struct B {
  B(const B&);
  B &operator=(const B&) = default;
  int n;
};
struct C {
  A a;
  B b[16];
};
void b(C &a, C &b) {
  // CHECK: define {{.*}} @_ZN1CaSERKS_(
  // CHECK: call {{.*}} @_ZN1AaSERKS_(
  // CHECK-NOT: call {{.*}} @_ZN1BaSERKS_(
  // CHECK: call {{.*}} @{{.*}}memcpy
  // CHECK-NOT: call {{.*}} @_ZN1BaSERKS_(
  // CHECK: }
  a = b;
}
