Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjCXX / pointer-to-objc-pointer-conv.mm
blob7ada2f4239a10781507100af7fee63bf8a867d1a
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // expected-no-diagnostics
4 // REQUIRES: LP64
6 @interface G
7 @end
9 @interface F
10 - (void)bar:(id *)objects;
11 - (void)foo:(G**)objects;
12 @end
15 void a() {
16         F *b;
17         G **keys;
18         [b bar:keys];
20         id *PID;
21         [b foo:PID];
26 // pr7936
27 @interface I1 @end
29 class Wrapper {
30 public:
31   operator id() const { return (id)_value; }
32   operator Class() const { return (Class)_value; }
33   operator I1*() const { return (I1*)_value; }
35   bool Compare(id obj) { return *this == obj; }
36   bool CompareClass(Class obj) { return *this == obj; }
37   bool CompareI1(I1* obj) { return *this == obj; }
39   Wrapper &operator*();
40   Wrapper &operator[](int);
41   Wrapper& operator->*(int);
43 private:
44   long _value;
47 void f() {
48   Wrapper w;
49   w[0];
50   *w;
51   w->*(0);