summaryrefslogtreecommitdiff
path: root/test/Modules/Inputs/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'test/Modules/Inputs/codegen')
-rw-r--r--test/Modules/Inputs/codegen/foo.h32
-rw-r--r--test/Modules/Inputs/codegen/foo.modulemap1
-rw-r--r--test/Modules/Inputs/codegen/use.cpp8
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>();
+}