/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */

class a {
public:
  double b() const;
};
class c {
public:
  int m_fn2() const;
};
double a::b() const {
  return 0 == 0 ? reinterpret_cast<const c *>(this)->m_fn2() : 0;
}
bool d;
void e() {
  a f;
  double g = f.b();
  /* { dg-final { scan-tree-dump-not "unord" "optimized" } } */
  d = __builtin_isnan(g);
}