inline void f1(const char* fmt, ...) {
  __builtin_va_list args;
  __builtin_va_start(args, fmt);
}

struct non_trivial_dtor {
  ~non_trivial_dtor();
};

struct implicit_dtor {
  non_trivial_dtor d;
};

struct uninst_implicit_dtor {
  non_trivial_dtor d;
};

inline void use_implicit_dtor() {
  implicit_dtor d;
}

template <typename T>
void inst() {
}

inline void inst_decl() {
  // cause inst<int>'s declaration to be instantiated, without a definition.
  (void)sizeof(&inst<int>);
  inst<float>();
}

asm("narf");
