diff options
Diffstat (limited to 'clang/test/Modules/Inputs/merge-vtable-codegen')
4 files changed, 42 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/merge-vtable-codegen/a.h b/clang/test/Modules/Inputs/merge-vtable-codegen/a.h new file mode 100644 index 00000000000..c2885379aa4 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-vtable-codegen/a.h @@ -0,0 +1,8 @@ +#ifndef A_H +#define A_H + +struct A { + virtual void x(); +}; + +#endif diff --git a/clang/test/Modules/Inputs/merge-vtable-codegen/b.h b/clang/test/Modules/Inputs/merge-vtable-codegen/b.h new file mode 100644 index 00000000000..770e46077f9 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-vtable-codegen/b.h @@ -0,0 +1,17 @@ +#ifndef B_H +#define B_H + +#include "a.h" + +class B : virtual public A { + virtual void x() {} +}; + +void b(A* p) { + p->x(); + // Instantiating a class that virtually inherits 'A' + // triggers calculation of the vtable offsets in 'A'. + B b; +} + +#endif diff --git a/clang/test/Modules/Inputs/merge-vtable-codegen/c.h b/clang/test/Modules/Inputs/merge-vtable-codegen/c.h new file mode 100644 index 00000000000..40cbbb047cb --- /dev/null +++ b/clang/test/Modules/Inputs/merge-vtable-codegen/c.h @@ -0,0 +1,6 @@ +#ifndef C_H +#define C_H + +#include "a.h" + +#endif diff --git a/clang/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap b/clang/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap new file mode 100644 index 00000000000..1edaa07101f --- /dev/null +++ b/clang/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap @@ -0,0 +1,11 @@ +module "a" { + textual header "a.h" +} + +module "b" { + header "b.h" +} + +module "c" { + header "c.h" +} |