/* { dg-do compile } */ /* { dg-options "-O3" } */ class test { public: test (int val, int *p) { int_val = *p; bool_val = (val != int_val); } ~test () { if (!bool_val) return; } int get_int_val () const { return int_val; } private: bool bool_val; int int_val; }; static int __attribute__ ((noinline)) f1 (int i, int *p) { test obj (i, p); return obj.get_int_val (); } static int __attribute__ ((noinline)) f2 (int i, int *p) { test obj (i, p); return obj.get_int_val (); } int f (int i, int *p) { return f1 (i, p) + f2 (i, p); }