// { dg-do run } // { dg-options "-O2 -fipa-pta" } extern "C" void abort (void); struct Y { ~Y(); int i; }; Y::~Y () {} static Y __attribute__((noinline)) foo () { Y res; res.i = 3; return res; } static Y __attribute__((noinline)) bar () { Y res; res.i = 42; return res; } static Y (*fn) (); int a; int main() { if (a) fn = foo; else fn = bar; Y res = fn (); if (res.i != 42) abort (); return 0; }