blob: 9d3b408afbdd3aba6479aaf1cad158f93ddfe9fb [file] [log] [blame]
// { dg-do compile }
// { dg-options "-O -fdump-tree-fre1" }
class A {
virtual void f(){};
public:
int x;
A(int in): x(in) {};
};
class B: public A {
public:
int y;
B(int in):A(in-1), y(in) {};
};
void bar(void *);
void test()
{
B b(2);
A* bp = &b;
void* vp = dynamic_cast<void*>(bp);
bar (vp);
}
// We should be able to constant fold from the virtual table
// the offset added to bp for the dynamic cast and forward
// &b to the argument of bar
// { dg-final { scan-tree-dump "bar \\\(&b" "fre1" } }