// { dg-do assemble }
// { dg-options "-O" }

// Posted by H. J. Lu <hjl@lucon.org>

template<class T>
class FixSeq
{
public:
    void append(const T&);
};
class foo
{
public:  
    void setupIR();
};
typedef FixSeq<foo *> bar;
extern void dummy (foo *);
void *
foobar (bar &x, foo *p)
{
    try
    {
        p -> setupIR();
    }
    catch(...)
    {
        dummy (p);
    }
    x.append(p);
    return p;
}
