[modules] If we already have a fake definition for one declaration of a class,
don't think we're providing a new one in an update record adding a definition
to another declaration of the same class.
llvm-svn: 228104
diff --git a/clang/test/Modules/Inputs/merge-template-members/a.h b/clang/test/Modules/Inputs/merge-template-members/a1.h
similarity index 100%
rename from clang/test/Modules/Inputs/merge-template-members/a.h
rename to clang/test/Modules/Inputs/merge-template-members/a1.h
diff --git a/clang/test/Modules/Inputs/merge-template-members/a.h b/clang/test/Modules/Inputs/merge-template-members/a2.h
similarity index 100%
copy from clang/test/Modules/Inputs/merge-template-members/a.h
copy to clang/test/Modules/Inputs/merge-template-members/a2.h
diff --git a/clang/test/Modules/Inputs/merge-template-members/b.h b/clang/test/Modules/Inputs/merge-template-members/b.h
deleted file mode 100644
index df537b0..0000000
--- a/clang/test/Modules/Inputs/merge-template-members/b.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "a.h"
-
-// Add update record for definition of A<int> and constructors.
-// We need an eagerly-emitted function here to get the problematic
-// deserialization ordering.
-void foobar() { N::A<int> x; }
diff --git a/clang/test/Modules/Inputs/merge-template-members/b1.h b/clang/test/Modules/Inputs/merge-template-members/b1.h
new file mode 100644
index 0000000..3828e26
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-template-members/b1.h
@@ -0,0 +1,6 @@
+#include "a1.h"
+
+// Add update record for definition of A<int> and constructors.
+// We need an eagerly-emitted use here to get the problematic
+// deserialization ordering.
+N::A<int> b1;
diff --git a/clang/test/Modules/Inputs/merge-template-members/b2.h b/clang/test/Modules/Inputs/merge-template-members/b2.h
new file mode 100644
index 0000000..37357ac
--- /dev/null
+++ b/clang/test/Modules/Inputs/merge-template-members/b2.h
@@ -0,0 +1,6 @@
+#include "a2.h"
+
+// Add update record for definition of A<int> and constructors.
+// We need an eagerly-emitted use here to get the problematic
+// deserialization ordering.
+N::A<int> b2;
diff --git a/clang/test/Modules/Inputs/merge-template-members/c.h b/clang/test/Modules/Inputs/merge-template-members/c.h
index 54f3479..92f20a0 100644
--- a/clang/test/Modules/Inputs/merge-template-members/c.h
+++ b/clang/test/Modules/Inputs/merge-template-members/c.h
@@ -11,4 +11,4 @@
}
// Merge in another declaration and update records.
-#include "b.h"
+#include "b1.h"
diff --git a/clang/test/Modules/Inputs/merge-template-members/module.modulemap b/clang/test/Modules/Inputs/merge-template-members/module.modulemap
index 280667f..0d72e58 100644
--- a/clang/test/Modules/Inputs/merge-template-members/module.modulemap
+++ b/clang/test/Modules/Inputs/merge-template-members/module.modulemap
@@ -1,6 +1,9 @@
module def { header "def.h" export * }
module update { header "update.h" export * }
-module a { header "a.h" export * }
-module b { header "b.h" export * }
+module a1 { header "a1.h" export * }
+module a2 { header "a2.h" export * }
+module b1 { header "b1.h" export * }
+module b2 { header "b2.h" export * }
+module merge { header "merge.h" export * }
module c { header "c.h" export * }