/* { dg-do compile } */ | |
/* { dg-options "-O3 -fdump-ipa-cp" } */ | |
/* { dg-add-options bind_pic_locally } */ | |
struct data { | |
data(int); | |
}; | |
struct top { | |
virtual int topf(); | |
}; | |
struct intermediate: top { | |
int topf() /* override */ { return 0; } | |
}; | |
struct child1: top { | |
void childf() | |
{ | |
data d(topf()); | |
} | |
}; | |
struct child2: intermediate {}; | |
void test(top& t) | |
{ | |
child1& c = static_cast<child1&>(t); | |
c.childf(); | |
child2 d; | |
test(d); | |
} | |
/* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } */ |