extern int mergeUsedFlag;

typedef struct {
  int n;
  int m;
} NameForLinkage;
extern NameForLinkage name_for_linkage;

struct HasVirtualFunctions {
  virtual void f();
};
struct OverridesVirtualFunctions : HasVirtualFunctions {
  void f();
};
extern OverridesVirtualFunctions overrides_virtual_functions;
extern "C" void ExternCFunction();

typedef struct {
  struct Inner {
    int n;
  };
} NameForLinkage2;
auto name_for_linkage2_inner_b = NameForLinkage2::Inner();
typedef decltype(name_for_linkage2_inner_b) NameForLinkage2Inner;

namespace Aliased { extern int b; }
namespace Alias = Aliased;
