// PR rtl-optimization/49912 | |
// { dg-do compile } | |
// { dg-require-effective-target freorder } | |
// { dg-options "-O -freorder-blocks-and-partition" } | |
int foo (int *); | |
struct S | |
{ | |
int *m1 (); | |
S (int); | |
~S () { foo (m1 ()); } | |
}; | |
template <int> | |
struct V | |
{ | |
S *v1; | |
void m2 (const S &); | |
S *base (); | |
}; | |
template <int N> | |
void V<N>::m2 (const S &x) | |
{ | |
S a = x; | |
S *l = base (); | |
while (l) | |
*v1 = *--l; | |
} | |
V<0> v; | |
void | |
foo () | |
{ | |
v.m2 (0); | |
} |