Import Cobalt 19.master.0.203780

Includes the following patches:
  https://cobalt-review.googlesource.com/c/cobalt/+/5210
    by errong.leng@samsung.com
  https://cobalt-review.googlesource.com/c/cobalt/+/5270
    by linus.wang@samsung.com
diff --git a/src/third_party/llvm-project/clang/test/CodeGenCXX/member-expressions.cpp b/src/third_party/llvm-project/clang/test/CodeGenCXX/member-expressions.cpp
new file mode 100644
index 0000000..bbfa51f
--- /dev/null
+++ b/src/third_party/llvm-project/clang/test/CodeGenCXX/member-expressions.cpp
@@ -0,0 +1,86 @@
+// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s
+
+// PR5392
+namespace PR5392 {
+struct A
+{
+  static int a;
+};
+
+A a1;
+void f()
+{
+  // CHECK: store i32 10, i32* @_ZN6PR53921A1aE
+  a1.a = 10;
+  // CHECK: store i32 20, i32* @_ZN6PR53921A1aE
+  A().a = 20;
+}
+
+}
+
+struct A {
+  A();
+  ~A();
+  enum E { Foo };
+};
+
+A *g();
+
+void f(A *a) {
+  A::E e1 = a->Foo;
+  
+  // CHECK: call %struct.A* @_Z1gv()
+  A::E e2 = g()->Foo;
+  // CHECK: call void @_ZN1AC1Ev(
+  // CHECK: call void @_ZN1AD1Ev(
+  A::E e3 = A().Foo;
+}
+
+namespace test3 {
+struct A {
+  static int foo();
+};
+int f() {
+  return A().foo();
+}
+}
+
+namespace test4 {
+  struct A {
+    int x;
+  };
+  struct B {
+    int x;
+    void foo();
+  };
+  struct C : A, B {
+  };
+
+  extern C *c_ptr;
+
+  // CHECK-LABEL: define i32 @_ZN5test44testEv()
+  int test() {
+    // CHECK: load {{.*}} @_ZN5test45c_ptrE
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: getelementptr
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: call void @_ZN5test41B3fooEv
+    c_ptr->B::foo();
+
+    // CHECK: load {{.*}} @_ZN5test45c_ptrE
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: getelementptr
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: getelementptr
+    // CHECK-NEXT: store i32 5
+    c_ptr->B::x = 5;
+
+    // CHECK: load {{.*}} @_ZN5test45c_ptrE
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: getelementptr
+    // CHECK-NEXT: bitcast
+    // CHECK-NEXT: getelementptr
+    // CHECK-NEXT: load i32, i32*
+    return c_ptr->B::x;
+  }
+}