blob: 08cd590b47169793e32c293f2022fcfb378bbe76 [file] [log] [blame]
// PR target/9786
// Origin: <nick@ilm.com>
// This used to fail on x86 because the reg-stack pass deleted
// an insn that could seemingly trap (but actually doesn't)
// without updating the CFG.
// { dg-do compile }
// { dg-options "-O2 -fnon-call-exceptions" }
struct D1 {
float l;
D1 GS() const {D1 d;float f=.299*l;d.l=f;return d;}
static D1 G() {return D1();}
};
struct D2 {
D1 g;
D2(const D1& gi) : g(gi) {}
D2 GS() const {return D2(g.GS());}
};
class A {
public:
virtual ~A() {}
};
class B : public A {
public:
B(const D2& mi);
D2 fm;
};
B::B(const D2 &mi) : fm(mi.GS()) {}