diff options
Diffstat (limited to 'test/Modules/Inputs/codegen')
-rw-r--r-- | test/Modules/Inputs/codegen/foo.h | 32 | ||||
-rw-r--r-- | test/Modules/Inputs/codegen/foo.modulemap | 1 | ||||
-rw-r--r-- | test/Modules/Inputs/codegen/use.cpp | 8 |
3 files changed, 41 insertions, 0 deletions
diff --git a/test/Modules/Inputs/codegen/foo.h b/test/Modules/Inputs/codegen/foo.h new file mode 100644 index 0000000000000..bd3b6489e710f --- /dev/null +++ b/test/Modules/Inputs/codegen/foo.h @@ -0,0 +1,32 @@ +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"); diff --git a/test/Modules/Inputs/codegen/foo.modulemap b/test/Modules/Inputs/codegen/foo.modulemap new file mode 100644 index 0000000000000..2e095d2794c34 --- /dev/null +++ b/test/Modules/Inputs/codegen/foo.modulemap @@ -0,0 +1 @@ +module foo { header "foo.h" } diff --git a/test/Modules/Inputs/codegen/use.cpp b/test/Modules/Inputs/codegen/use.cpp new file mode 100644 index 0000000000000..cd1a4a642d09d --- /dev/null +++ b/test/Modules/Inputs/codegen/use.cpp @@ -0,0 +1,8 @@ +#include "foo.h" +void non_modular_use_of_implicit_dtor() { + implicit_dtor d1; + uninst_implicit_dtor d2; +} +void use_of_instantiated_declaration_without_definition() { + inst<int>(); +} |