Fix test-suite fallout of default -Wreturn-type.
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / devirt-21.C
blobaa0488df92d7a920ef8f80aaa11b629511d7633f
1 /* { dg-do run } */
2 /* { dg-options "-O3 -fno-early-inlining -fno-ipa-sra -fdump-ipa-cp"  } */
3 /* Main purpose is to verify that we do not produce wrong devirtualization to
4    C::m_fn1.  We currently devirtualize to B::m_fn1, so check that. */
5 #include <stdlib.h>
6 class A {
7 public:
8   unsigned length;
9 };
10 class B {};
11 class MultiTermDocs : public virtual B {
12 protected:
13   A readerTermDocs;
14   A subReaders;
15   virtual B *m_fn1(int *) { return NULL; }
16   virtual inline  ~MultiTermDocs();
17   void wrap(void)
18   {
19   m_fn1(NULL);
20   }
22 class C : MultiTermDocs {
23   B *m_fn1(int *);
25 MultiTermDocs::~MultiTermDocs() {
26   wrap ();
27   if (&readerTermDocs) {
28     B *a;
29     for (unsigned i = 0; i < subReaders.length; i++)
30       (a != 0);
31   }
34 B *C::m_fn1(int *) { abort (); }
36 int main()
38   class C c;
40 /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */