brintos

brintos / llvm-project-archived public Read only

0
0
Text · 862 B · 6c39282 Raw
52 lines · cpp
1// RUN: %clang_cc1 -emit-llvm-only %s2 3// Tests that Sema properly creates member-access expressions for4// these instead of bare FieldDecls.5 6struct Foo {7  int myvalue;8 9  // We have to override these to get something with an lvalue result.10  int &operator++(int);11  int &operator--(int);12};13 14struct Test0 {15  Foo memfoo;16  int memint;17  int memarr[10];18  Test0 *memptr;19  struct MemClass { int a; } memstruct;20  int &memfun();21  22  void test() {23    int *p;24    p = &Test0::memfoo++;25    p = &Test0::memfoo--;26    p = &Test0::memarr[1];27    p = &Test0::memptr->memint;28    p = &Test0::memstruct.a;29    p = &Test0::memfun();30  }31};32 33void test0() {34  Test0 mytest;35  mytest.test();36}37 38namespace rdar9065289 {39  typedef void (*FuncPtr)();40  struct X0 { };41 42  struct X143  {44    X0* x0;45    FuncPtr X0::*fptr;46  };47 48  void f(X1 p) {49    (p.x0->*(p.fptr))();50  }51}52