---
struct StructDeclaredUndeclared;
struct StructDeclaredDeclared;
struct StructDeclaredDefined;
struct StructDefinedUndeclared {};
struct StructDefinedDeclared {};
struct StructDefinedDefined {};

int use1StructDeclaredUndeclared(struct StructDeclaredUndeclared* declaredUndeclared) { return -3; }
int use1StructDeclaredDeclared(struct StructDeclaredDeclared* declaredDeclared) { return -4; }
int use1StructDeclaredDefined(struct StructDeclaredDefined* declaredDefined) { return -5; }
int use1StructDefinedUndeclared(struct StructDefinedUndeclared* definedUndeclared) { return -6; }
int use1StructDefinedDeclared(struct StructDefinedDeclared* definedDeclared) { return -7; }
int use1StructDefinedDefined(struct StructDefinedDefined* definedDefined) { return -8; }
