spyffe created this revision.
spyffe added a reviewer: a.sidorin.
spyffe added a subscriber: cfe-commits.
spyffe set the repository for this revision to rL LLVM.

As outlined in a previous RFC, the `test/ASTMerge/Inputs` folder is getting 
full and the tests are starting to become interdependent.  This is undesirable 
because

- it makes it harder to write new tests
- it makes it harder to figure out at a glance what old tests are doing, and
- it adds the risk of breaking one test while changing a different one, because 
of the interdependencies.

To fix this, according to the conversation in the RFC, I have changed the 
layout from

  a.c
  Inputs/a1.c
  Inputs/a2.c

to

  a/test.c
  a/a1.c
  a/a2.c

for all existing tests.  I have also eliminated interdependencies (by 
replicating the input files for each test that uses them) and made a little 
`lit.cfg` that makes sure that lit only processes 
`test.c`/`test.m`/`test.cpp`/`test.mm`.


Repository:
  rL LLVM

https://reviews.llvm.org/D26571

Files:
  test/ASTMerge/Inputs/anonymous-fields1.cpp
  test/ASTMerge/Inputs/anonymous-fields2.cpp
  test/ASTMerge/Inputs/asm-function.cpp
  test/ASTMerge/Inputs/body1.c
  test/ASTMerge/Inputs/body2.c
  test/ASTMerge/Inputs/category1.m
  test/ASTMerge/Inputs/category2.m
  test/ASTMerge/Inputs/class-template1.cpp
  test/ASTMerge/Inputs/class-template2.cpp
  test/ASTMerge/Inputs/class1.cpp
  test/ASTMerge/Inputs/class2.cpp
  test/ASTMerge/Inputs/class3.cpp
  test/ASTMerge/Inputs/enum1.c
  test/ASTMerge/Inputs/enum2.c
  test/ASTMerge/Inputs/exprs1.c
  test/ASTMerge/Inputs/exprs2.c
  test/ASTMerge/Inputs/exprs3.cpp
  test/ASTMerge/Inputs/function1.c
  test/ASTMerge/Inputs/function2.c
  test/ASTMerge/Inputs/inheritance-base.cpp
  test/ASTMerge/Inputs/init-ctors-classes.cpp
  test/ASTMerge/Inputs/interface1.m
  test/ASTMerge/Inputs/interface2.m
  test/ASTMerge/Inputs/macro.modulemap
  test/ASTMerge/Inputs/macro1.h
  test/ASTMerge/Inputs/macro1.m
  test/ASTMerge/Inputs/macro2.m
  test/ASTMerge/Inputs/namespace1.cpp
  test/ASTMerge/Inputs/namespace2.cpp
  test/ASTMerge/Inputs/property1.m
  test/ASTMerge/Inputs/property2.m
  test/ASTMerge/Inputs/struct1.c
  test/ASTMerge/Inputs/struct2.c
  test/ASTMerge/Inputs/typedef1.c
  test/ASTMerge/Inputs/typedef2.c
  test/ASTMerge/Inputs/var1.c
  test/ASTMerge/Inputs/var1.h
  test/ASTMerge/Inputs/var2.c
  test/ASTMerge/anonymous-fields.cpp
  test/ASTMerge/anonymous-fields/anonymous-fields1.cpp
  test/ASTMerge/anonymous-fields/anonymous-fields2.cpp
  test/ASTMerge/anonymous-fields/test.cpp
  test/ASTMerge/asm.cpp
  test/ASTMerge/asm/asm-function.cpp
  test/ASTMerge/asm/test.cpp
  test/ASTMerge/category.m
  test/ASTMerge/category/category1.m
  test/ASTMerge/category/category2.m
  test/ASTMerge/category/test.m
  test/ASTMerge/class-template.cpp
  test/ASTMerge/class-template/class-template1.cpp
  test/ASTMerge/class-template/class-template2.cpp
  test/ASTMerge/class-template/test.cpp
  test/ASTMerge/class.cpp
  test/ASTMerge/class/class1.cpp
  test/ASTMerge/class/class2.cpp
  test/ASTMerge/class/test.cpp
  test/ASTMerge/class2.cpp
  test/ASTMerge/class2/class3.cpp
  test/ASTMerge/class2/test.cpp
  test/ASTMerge/codegen-body.c
  test/ASTMerge/codegen-body/body1.c
  test/ASTMerge/codegen-body/body2.c
  test/ASTMerge/codegen-body/test.c
  test/ASTMerge/codegen-exprs.c
  test/ASTMerge/codegen-exprs/exprs1.c
  test/ASTMerge/codegen-exprs/exprs2.c
  test/ASTMerge/codegen-exprs/test.c
  test/ASTMerge/enum.c
  test/ASTMerge/enum/enum1.c
  test/ASTMerge/enum/enum2.c
  test/ASTMerge/enum/test.c
  test/ASTMerge/exprs-cpp/exprs3.cpp
  test/ASTMerge/exprs-cpp/test.cpp
  test/ASTMerge/exprs.c
  test/ASTMerge/exprs.cpp
  test/ASTMerge/exprs/exprs.c
  test/ASTMerge/exprs/exprs1.c
  test/ASTMerge/exprs/exprs2.c
  test/ASTMerge/function.c
  test/ASTMerge/function/function1.c
  test/ASTMerge/function/function2.c
  test/ASTMerge/function/test.c
  test/ASTMerge/inheritance.cpp
  test/ASTMerge/inheritance/inheritance-base.cpp
  test/ASTMerge/inheritance/test.cpp
  test/ASTMerge/init-ctors.cpp
  test/ASTMerge/init-ctors/init-ctors-classes.cpp
  test/ASTMerge/init-ctors/test.cpp
  test/ASTMerge/interface.m
  test/ASTMerge/interface/interface1.m
  test/ASTMerge/interface/interface2.m
  test/ASTMerge/interface/test.m
  test/ASTMerge/macro.m
  test/ASTMerge/macro/macro.modulemap
  test/ASTMerge/macro/macro1.h
  test/ASTMerge/macro/macro1.m
  test/ASTMerge/macro/macro2.m
  test/ASTMerge/macro/test.m
  test/ASTMerge/namespace.cpp
  test/ASTMerge/namespace/namespace1.cpp
  test/ASTMerge/namespace/namespace2.cpp
  test/ASTMerge/namespace/test.cpp
  test/ASTMerge/property.m
  test/ASTMerge/property/property1.m
  test/ASTMerge/property/property2.m
  test/ASTMerge/property/test.m
  test/ASTMerge/struct.c
  test/ASTMerge/struct/struct1.c
  test/ASTMerge/struct/struct2.c
  test/ASTMerge/struct/test.c
  test/ASTMerge/typedef.c
  test/ASTMerge/typedef/test.c
  test/ASTMerge/typedef/typedef1.c
  test/ASTMerge/typedef/typedef2.c
  test/ASTMerge/var.c
  test/ASTMerge/var/test.c
  test/ASTMerge/var/var1.c
  test/ASTMerge/var/var1.h
  test/ASTMerge/var/var2.c

Index: test/ASTMerge/var.c
===================================================================
--- test/ASTMerge/var.c
+++ test/ASTMerge/var.c
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/var1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/var2.c
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -fdiagnostics-show-note-include-stack %s 2>&1 | FileCheck %s
-
-// CHECK: var2.c:2:9: error: external variable 'x1' declared with incompatible types in different translation units ('double *' vs. 'float **')
-// CHECK: var1.c:2:9: note: declared here with type 'float **'
-// CHECK: var2.c:3:5: error: external variable 'x2' declared with incompatible types in different translation units ('int' vs. 'double')
-// CHECK: In file included from{{.*}}var1.c:3:
-// CHECK: var1.h:1:8: note: declared here with type 'double'
-// CHECK: error: external variable 'xarray3' declared with incompatible types in different translation units ('int [17]' vs. 'int [18]')
-// CHECK: var1.c:7:5: note: declared here with type 'int [18]'
-// CHECK: 3 errors
Index: test/ASTMerge/var/test.c
===================================================================
--- test/ASTMerge/var/test.c
+++ test/ASTMerge/var/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/var1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/var2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/var1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/var2.c
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -fdiagnostics-show-note-include-stack %s 2>&1 | FileCheck %s
 
 // CHECK: var2.c:2:9: error: external variable 'x1' declared with incompatible types in different translation units ('double *' vs. 'float **')
Index: test/ASTMerge/typedef.c
===================================================================
--- test/ASTMerge/typedef.c
+++ test/ASTMerge/typedef.c
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/typedef1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/typedef2.c
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: typedef2.c:4:10: error: external variable 'x2' declared with incompatible types in different translation units ('Typedef2' (aka 'double') vs. 'Typedef2' (aka 'int'))
-// CHECK: typedef1.c:4:10: note: declared here with type 'Typedef2' (aka 'int')
-// CHECK: 1 error
Index: test/ASTMerge/typedef/test.c
===================================================================
--- test/ASTMerge/typedef/test.c
+++ test/ASTMerge/typedef/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/typedef1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/typedef2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/typedef1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/typedef2.c
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: typedef2.c:4:10: error: external variable 'x2' declared with incompatible types in different translation units ('Typedef2' (aka 'double') vs. 'Typedef2' (aka 'int'))
Index: test/ASTMerge/struct.c
===================================================================
--- test/ASTMerge/struct.c
+++ test/ASTMerge/struct.c
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/struct1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/struct2.c
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: struct1.c:13:8: warning: type 'struct S1' has incompatible definitions in different translation units
-// CHECK: struct1.c:15:7: note: field 'field2' has type 'int' here
-// CHECK: struct2.c:12:9: note: field 'field2' has type 'float' here
-// CHECK: struct2.c:15:11: error: external variable 'x1' declared with incompatible types in different translation units ('struct S1' vs. 'struct S1')
-// CHECK: struct1.c:18:11: note: declared here with type 'struct S1'
-// CHECK: struct1.c:21:8: warning: type 'struct S2' has incompatible definitions in different translation units
-// CHECK: struct2.c:18:7: note: 'S2' is a union here
-// CHECK: struct2.c:18:30: error: external variable 'x2' declared with incompatible types in different translation units ('union S2' vs. 'struct S2')
-// CHECK: struct1.c:21:31: note: declared here with type 'struct S2'
-// CHECK: struct1.c:24:8: warning: type 'struct S3' has incompatible definitions in different translation units
-// CHECK: struct1.c:24:36: note: field 'd' has type 'double' here
-// CHECK: struct2.c:21:8: note: no corresponding field here
-// CHECK: struct2.c:21:31: error: external variable 'x3' declared with incompatible types in different translation units ('struct S3' vs. 'struct S3')
-// CHECK: struct1.c:24:41: note: declared here with type 'struct S3'
-// CHECK: struct1.c:27:8: warning: type 'struct S4' has incompatible definitions in different translation units
-// CHECK: struct2.c:24:26: note: field 'f' has type 'float' here
-// CHECK: struct1.c:27:8: note: no corresponding field here
-// CHECK: struct2.c:24:31: error: external variable 'x4' declared with incompatible types in different translation units ('struct S4' vs. 'struct S4')
-// CHECK: struct1.c:27:22: note: declared here with type 'struct S4'
-// CHECK: struct1.c:33:8: warning: type 'struct S6' has incompatible definitions in different translation units
-// CHECK: struct1.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
-// CHECK: struct2.c:30:33: note: field 'j' is not a bit-field
-// CHECK: struct2.c:30:38: error: external variable 'x6' declared with incompatible types in different translation units ('struct S6' vs. 'struct S6')
-// CHECK: struct1.c:33:42: note: declared here with type 'struct S6'
-// CHECK: struct1.c:36:8: warning: type 'struct S7' has incompatible definitions in different translation units
-// CHECK: struct1.c:36:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
-// CHECK: struct2.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 16 here
-// CHECK: struct2.c:33:43: error: external variable 'x7' declared with incompatible types in different translation units ('struct S7' vs. 'struct S7')
-// CHECK: struct1.c:36:42: note: declared here with type 'struct S7'
-// CHECK: struct1.c:56:10: warning: type 'struct DeeperError' has incompatible definitions in different translation units
-// CHECK: struct1.c:56:35: note: field 'f' has type 'int' here
-// CHECK: struct2.c:53:37: note: field 'f' has type 'float' here
-// CHECK: struct1.c:54:8: warning: type 'struct DeepError' has incompatible definitions in different translation units
-// CHECK: struct1.c:56:41: note: field 'Deeper' has type 'struct DeeperError *' here
-// CHECK: struct2.c:53:43: note: field 'Deeper' has type 'struct DeeperError *' here
-// CHECK: struct2.c:54:3: error: external variable 'xDeep' declared with incompatible types in different translation units ('struct DeepError' vs. 'struct DeepError')
-// CHECK: struct1.c:57:3: note: declared here with type 'struct DeepError'
-// CHECK: 8 warnings and 7 errors generated
Index: test/ASTMerge/struct/test.c
===================================================================
--- test/ASTMerge/struct/test.c
+++ test/ASTMerge/struct/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/struct1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/struct2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/struct1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/struct2.c
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: struct1.c:13:8: warning: type 'struct S1' has incompatible definitions in different translation units
Index: test/ASTMerge/property.m
===================================================================
--- test/ASTMerge/property.m
+++ test/ASTMerge/property.m
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/property1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/property2.m
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: property2.m:12:26: error: property 'Prop1' declared with incompatible types in different translation units ('int' vs. 'float')
-// CHECK: property1.m:10:28: note: declared here with type 'float'
-// CHECK: property2.m:12:26: error: instance method 'Prop1' has incompatible result types in different translation units ('int' vs. 'float')
-// CHECK: property1.m:10:28: note: instance method 'Prop1' also declared here
-// CHECK: property1.m:28:21: error: property 'Prop2' is synthesized to different ivars in different translation units ('ivar3' vs. 'ivar2')
-// CHECK: property2.m:29:21: note: property is synthesized to ivar 'ivar2' here
-// CHECK: property1.m:29:10: error: property 'Prop3' is implemented with @dynamic in one translation but @synthesize in another translation unit
-// CHECK: property2.m:31:13: note: property 'Prop3' is implemented with @synthesize here
-// CHECK: 4 errors generated.
Index: test/ASTMerge/property/test.m
===================================================================
--- test/ASTMerge/property/test.m
+++ test/ASTMerge/property/test.m
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/property1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/property2.m
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/property1.m
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/property2.m
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: property2.m:12:26: error: property 'Prop1' declared with incompatible types in different translation units ('int' vs. 'float')
Index: test/ASTMerge/namespace.cpp
===================================================================
--- test/ASTMerge/namespace.cpp
+++ test/ASTMerge/namespace.cpp
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/namespace1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/namespace2.cpp
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: namespace2.cpp:16:17: error: external variable 'z' declared with incompatible types in different translation units ('double' vs. 'float')
-// CHECK: namespace1.cpp:16:16: note: declared here with type 'float'
Index: test/ASTMerge/namespace/test.cpp
===================================================================
--- test/ASTMerge/namespace/test.cpp
+++ test/ASTMerge/namespace/test.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/namespace1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/namespace2.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/namespace1.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/namespace2.cpp
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: namespace2.cpp:16:17: error: external variable 'z' declared with incompatible types in different translation units ('double' vs. 'float')
Index: test/ASTMerge/macro.m
===================================================================
--- test/ASTMerge/macro.m
+++ test/ASTMerge/macro.m
@@ -1,6 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/cache
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.1.ast %S/Inputs/macro1.m
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.2.ast %S/Inputs/macro2.m
-// RUN: %clang_cc1 -fmodules -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
Index: test/ASTMerge/macro/test.m
===================================================================
--- test/ASTMerge/macro/test.m
+++ test/ASTMerge/macro/test.m
@@ -1,6 +1,6 @@
 // RUN: rm -rf %t
 // RUN: mkdir -p %t/cache
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.1.ast %S/Inputs/macro1.m
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/Inputs/macro.modulemap -I%S/Inputs -emit-pch -o %t.2.ast %S/Inputs/macro2.m
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/macro.modulemap -I%S/Inputs -emit-pch -o %t.1.ast %S/macro1.m
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache -fmodule-map-file=%S/macro.modulemap -I%S/Inputs -emit-pch -o %t.2.ast %S/macro2.m
 // RUN: %clang_cc1 -fmodules -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
Index: test/ASTMerge/interface.m
===================================================================
--- test/ASTMerge/interface.m
+++ test/ASTMerge/interface.m
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/interface1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/interface2.m
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: interface2.m:16:9: error: instance variable 'ivar2' declared with incompatible types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:16:7: note: declared here with type 'int'
-// CHECK: interface1.m:21:12: error: class 'I4' has incompatible superclasses
-// CHECK: interface1.m:21:17: note: inherits from superclass 'I2' here
-// CHECK: interface2.m:21:17: note: inherits from superclass 'I1' here
-// CHECK: interface2.m:33:1: error: class method 'foo' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:34:1: note: class method 'foo' also declared here
-// CHECK: interface2.m:39:19: error: class method 'bar:' has a parameter with a different types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:40:17: note: declared here with type 'int'
-// CHECK: interface2.m:45:1: error: class method 'bar:' is variadic in one translation unit and not variadic in another
-// CHECK: interface1.m:46:1: note: class method 'bar:' also declared here
-// CHECK: interface2.m:57:20: error: instance method 'bar:' has a parameter with a different types in different translation units ('double' vs. 'float')
-// CHECK: interface1.m:58:19: note: declared here with type 'float'
-// CHECK: interface1.m:100:17: error: class 'I15' has incompatible superclasses
-// CHECK: interface1.m:100:17: note: inherits from superclass 'I12' here
-// CHECK: interface2.m:99:17: note: inherits from superclass 'I11' here
-// CHECK: 8 errors generated
-
Index: test/ASTMerge/interface/test.m
===================================================================
--- test/ASTMerge/interface/test.m
+++ test/ASTMerge/interface/test.m
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/interface1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/interface2.m
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/interface1.m
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/interface2.m
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: interface2.m:16:9: error: instance variable 'ivar2' declared with incompatible types in different translation units ('float' vs. 'int')
Index: test/ASTMerge/init-ctors.cpp
===================================================================
--- test/ASTMerge/init-ctors.cpp
+++ test/ASTMerge/init-ctors.cpp
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/init-ctors-classes.cpp
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class B {
-  int method_1() {
-    A a(0);
-    return a.x;
-  }
-};
Index: test/ASTMerge/init-ctors/test.cpp
===================================================================
--- test/ASTMerge/init-ctors/test.cpp
+++ test/ASTMerge/init-ctors/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/init-ctors-classes.cpp
+// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/init-ctors-classes.cpp
 // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/inheritance.cpp
===================================================================
--- test/ASTMerge/inheritance.cpp
+++ test/ASTMerge/inheritance.cpp
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/inheritance-base.cpp
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class B : public A {
-  B(int _a) : A(_a) {
-  }
-};
Index: test/ASTMerge/inheritance/test.cpp
===================================================================
--- test/ASTMerge/inheritance/test.cpp
+++ test/ASTMerge/inheritance/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/inheritance-base.cpp
+// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/inheritance-base.cpp
 // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/function.c
===================================================================
--- test/ASTMerge/function.c
+++ test/ASTMerge/function.c
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/function1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/function2.c
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-
-// CHECK: function2.c:3:6: error: external function 'f1' declared with incompatible types in different translation units ('void (Int, double)' (aka 'void (int, double)') vs. 'void (int, float)')
-// CHECK: function1.c:2:6: note: declared here with type 'void (int, float)'
-// CHECK: function2.c:5:6: error: external function 'f3' declared with incompatible types in different translation units ('void (int)' vs. 'void (void)')
-// CHECK: function1.c:4:6: note: declared here with type 'void (void)'
-// CHECK: 2 errors generated
-
-// expected-error@Inputs/function2.c:3 {{external function 'f1' declared with incompatible types}}
-// expected-note@Inputs/function1.c:2 {{declared here}}
-// expected-error@Inputs/function2.c:5 {{external function 'f3' declared with incompatible types}}
-// expected-note@Inputs/function1.c:4 {{declared here}}
Index: test/ASTMerge/function/test.c
===================================================================
--- test/ASTMerge/function/test.c
+++ test/ASTMerge/function/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/function1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/function2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/function1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/function2.c
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 // RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
 
@@ -9,7 +9,7 @@
 // CHECK: function1.c:4:6: note: declared here with type 'void (void)'
 // CHECK: 2 errors generated
 
-// expected-error@Inputs/function2.c:3 {{external function 'f1' declared with incompatible types}}
-// expected-note@Inputs/function1.c:2 {{declared here}}
-// expected-error@Inputs/function2.c:5 {{external function 'f3' declared with incompatible types}}
-// expected-note@Inputs/function1.c:4 {{declared here}}
+// expected-error@function2.c:3 {{external function 'f1' declared with incompatible types}}
+// expected-note@function1.c:2 {{declared here}}
+// expected-error@function2.c:5 {{external function 'f3' declared with incompatible types}}
+// expected-note@function1.c:4 {{declared here}}
Index: test/ASTMerge/exprs.cpp
===================================================================
--- test/ASTMerge/exprs.cpp
+++ test/ASTMerge/exprs.cpp
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -emit-pch -o %t.1.ast %S/Inputs/exprs3.cpp
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -ast-merge %t.1.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-static_assert(Ch1 == 'a');
-static_assert(Ch2 == 'b');
-static_assert(Ch3 == 'c');
-
-static_assert(Ch4 == L'd');
-static_assert(Ch5 == L'e');
-static_assert(Ch6 == L'f');
-
-static_assert(C1 == 12);
-static_assert(C2 == 13);
-
-static_assert(C3 == 12);
-static_assert(C4 == 13);
-
-static_assert(C5 == 22L);
-static_assert(C6 == 23L);
-
-static_assert(C7 == 66LL);
-static_assert(C8 == 67ULL);
-
-static_assert(bval1 == true);
-static_assert(bval2 == false);
-
-static_assert(ExpressionTrait == false);
-
-static_assert(ArrayRank == 2);
-static_assert(ArrayExtent == 20);
-
-void testImport(int *x, const S1 &cs1, S1 &s1) {
-  testNewThrowDelete();
-  testArrayElement(nullptr, 12);
-  testTernaryOp(0, 1, 2);
-  testConstCast(cs1);
-  testStaticCast(s1);
-  testReinterpretCast(s1);
-  testDynamicCast(s1);
-  testScalarInit(42);
-  testOffsetOf();
-  testDefaultArg(12);
-  useTemplateType();
-}
Index: test/ASTMerge/exprs.c
===================================================================
--- test/ASTMerge/exprs.c
+++ test/ASTMerge/exprs.c
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/Inputs/exprs1.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/Inputs/exprs2.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
Index: test/ASTMerge/exprs-cpp/test.cpp
===================================================================
--- test/ASTMerge/exprs-cpp/test.cpp
+++ test/ASTMerge/exprs-cpp/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -emit-pch -o %t.1.ast %S/Inputs/exprs3.cpp
+// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -emit-pch -o %t.1.ast %S/exprs3.cpp
 // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -ast-merge %t.1.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/exprs/exprs.c
===================================================================
--- test/ASTMerge/exprs/exprs.c
+++ test/ASTMerge/exprs/exprs.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/Inputs/exprs1.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/Inputs/exprs2.c
+// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/exprs1.c
+// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/exprs2.c
 // RUN: %clang_cc1 -triple %itanium_abi_triple -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/enum.c
===================================================================
--- test/ASTMerge/enum.c
+++ test/ASTMerge/enum.c
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/enum1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/enum2.c
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: enum1.c:9:6: warning: type 'enum E2' has incompatible definitions in different translation units
-// CHECK: enum1.c:11:3: note: enumerator 'E2Enumerator2' with value 3 here
-// CHECK: enum2.c:11:3: note: enumerator 'E2Enumerator2' with value 4 here
-// CHECK: enum2.c:13:3: error: external variable 'x2' declared with incompatible types in different translation units ('enum E2' vs. 'enum E2')
-// CHECK: enum1.c:13:3: note: declared here with type 'enum E2'
-// CHECK: enum1.c:16:6: warning: type 'enum E3' has incompatible definitions in different translation units
-// CHECK: enum1.c:18:3: note: enumerator 'E3Enumerator2' with value 3 here
-// CHECK: enum2.c:18:3: note: enumerator 'E3Enumerator' with value 3 here
-// CHECK: enum2.c:20:3: error: external variable 'x3' declared with incompatible types in different translation units ('enum E3' vs. 'enum E3')
-// CHECK: enum1.c:20:3: note: declared here with type 'enum E3'
-// CHECK: enum1.c:23:6: warning: type 'enum E4' has incompatible definitions in different translation units
-// CHECK: enum1.c:26:3: note: enumerator 'E4Enumerator3' with value 2 here
-// CHECK: enum2.c:23:6: note: no corresponding enumerator here
-// CHECK: enum2.c:26:3: error: external variable 'x4' declared with incompatible types in different translation units ('enum E4' vs. 'enum E4')
-// CHECK: enum1.c:27:3: note: declared here with type 'enum E4'
-// CHECK: enum1.c:30:6: warning: type 'enum E5' has incompatible definitions in different translation units
-// CHECK: enum2.c:33:3: note: enumerator 'E5Enumerator4' with value 3 here
-// CHECK: enum1.c:30:6: note: no corresponding enumerator here
-// CHECK: enum2.c:34:3: error: external variable 'x5' declared with incompatible types in different translation units ('enum E5' vs. 'enum E5')
-// CHECK: enum1.c:34:3: note: declared here with type 'enum E5'
-// CHECK: 4 warnings and 4 errors generated
Index: test/ASTMerge/enum/test.c
===================================================================
--- test/ASTMerge/enum/test.c
+++ test/ASTMerge/enum/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/enum1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/enum2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/enum1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/enum2.c
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: enum1.c:9:6: warning: type 'enum E2' has incompatible definitions in different translation units
Index: test/ASTMerge/codegen-exprs.c
===================================================================
--- test/ASTMerge/codegen-exprs.c
+++ test/ASTMerge/codegen-exprs.c
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/Inputs/exprs1.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/Inputs/exprs2.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
Index: test/ASTMerge/codegen-exprs/test.c
===================================================================
--- test/ASTMerge/codegen-exprs/test.c
+++ test/ASTMerge/codegen-exprs/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/Inputs/exprs1.c
-// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/Inputs/exprs2.c
+// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.1.ast %S/exprs1.c
+// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-pch -o %t.2.ast %S/exprs2.c
 // RUN: %clang_cc1 -triple %itanium_abi_triple -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/codegen-body.c
===================================================================
--- test/ASTMerge/codegen-body.c
+++ test/ASTMerge/codegen-body.c
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/body1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/body2.c
-// RUN: %clang_cc1 -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast %s
-// expected-no-diagnostics
-
Index: test/ASTMerge/codegen-body/test.c
===================================================================
--- test/ASTMerge/codegen-body/test.c
+++ test/ASTMerge/codegen-body/test.c
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/body1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/body2.c
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/body1.c
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/body2.c
 // RUN: %clang_cc1 -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/class2.cpp
===================================================================
--- test/ASTMerge/class2.cpp
+++ test/ASTMerge/class2.cpp
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/class3.cpp
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class C3 {
-  int method_1(C2 *x) {
-    return x->x;
-  }
-};
Index: test/ASTMerge/class2/test.cpp
===================================================================
--- test/ASTMerge/class2/test.cpp
+++ test/ASTMerge/class2/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/Inputs/class3.cpp
+// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -emit-pch -o %t.1.ast %S/class3.cpp
 // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -ast-merge %t.1.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/class.cpp
===================================================================
--- test/ASTMerge/class.cpp
+++ test/ASTMerge/class.cpp
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class2.cpp
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 -Wno-odr -Werror
-
-// CHECK: class1.cpp:6:8: warning: type 'B' has incompatible definitions in different translation units
-// CHECK: class1.cpp:7:9: note: field 'y' has type 'float' here
-// CHECK: class2.cpp:7:7: note: field 'y' has type 'int' here
-
-// FIXME: we should also complain about mismatched types on the method
-
-// CHECK: class1.cpp:18:6: warning: type 'E' has incompatible definitions in different translation units
-// CHECK: class1.cpp:19:3: note: enumerator 'b' with value 1 here
-// CHECK: class2.cpp:12:3: note: enumerator 'a' with value 0 here
Index: test/ASTMerge/class-template.cpp
===================================================================
--- test/ASTMerge/class-template.cpp
+++ test/ASTMerge/class-template.cpp
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class-template1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class-template2.cpp
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: class-template1.cpp:7:14: error: non-type template parameter declared with incompatible types in different translation units ('int' vs. 'long')
-// CHECK: class-template2.cpp:7:15: note: declared here with type 'long'
-
-// CHECK: class-template1.cpp:10:14: error: template parameter has different kinds in different translation units
-// CHECK: class-template2.cpp:10:10: note: template parameter declared here
-
-// CHECK: class-template1.cpp:16:23: error: non-type template parameter declared with incompatible types in different translation units ('long' vs. 'int')
-// CHECK: class-template2.cpp:16:23: note: declared here with type 'int'
-
-// CHECK: class-template1.cpp:19:10: error: template parameter has different kinds in different translation units
-// CHECK: class-template2.cpp:19:10: note: template parameter declared here
-
-// CHECK: class-template2.cpp:25:20: error: external variable 'x0r' declared with incompatible types in different translation units ('X0<double> *' vs. 'X0<float> *')
-// CHECK: class-template1.cpp:24:19: note: declared here with type 'X0<float> *'
-
-// CHECK: class-template1.cpp:32:8: warning: type 'X0<wchar_t>' has incompatible definitions in different translation units
-// CHECK: class-template1.cpp:33:7: note: field 'member' has type 'int' here
-// CHECK: class-template2.cpp:34:9: note: field 'member' has type 'float' here
-
-// CHECK: 1 warning and 5 errors generated.
Index: test/ASTMerge/class-template/test.cpp
===================================================================
--- test/ASTMerge/class-template/test.cpp
+++ test/ASTMerge/class-template/test.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class-template1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class-template2.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/class-template1.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/class-template2.cpp
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: class-template1.cpp:7:14: error: non-type template parameter declared with incompatible types in different translation units ('int' vs. 'long')
Index: test/ASTMerge/class/test.cpp
===================================================================
--- test/ASTMerge/class/test.cpp
+++ test/ASTMerge/class/test.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class2.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/class1.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/class2.cpp
 // RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 // RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 -Wno-odr -Werror
 
Index: test/ASTMerge/category.m
===================================================================
--- test/ASTMerge/category.m
+++ test/ASTMerge/category.m
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/category1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/category2.m
-// RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: category2.m:18:1: error: instance method 'method2' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: category1.m:16:1: note: instance method 'method2' also declared here
-// CHECK: category2.m:26:1: error: instance method 'method3' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: category1.m:24:1: note: instance method 'method3' also declared here
-// CHECK: category2.m:48:1: error: instance method 'blah' has incompatible result types in different translation units ('int' vs. 'float')
-// CHECK: category1.m:46:1: note: instance method 'blah' also declared here
-// CHECK: 3 errors generated.
Index: test/ASTMerge/category/test.m
===================================================================
--- test/ASTMerge/category/test.m
+++ test/ASTMerge/category/test.m
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/category1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/category2.m
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/category1.m
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/category2.m
 // RUN: not %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
 
 // CHECK: category2.m:18:1: error: instance method 'method2' has incompatible result types in different translation units ('float' vs. 'int')
Index: test/ASTMerge/asm.cpp
===================================================================
--- test/ASTMerge/asm.cpp
+++ test/ASTMerge/asm.cpp
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fcxx-exceptions -emit-pch -o %t.1.ast %S/Inputs/asm-function.cpp
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fcxx-exceptions -ast-merge %t.1.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void testAsmImport() {
-  asmFunc(12, 42);
-}
Index: test/ASTMerge/asm/test.cpp
===================================================================
--- test/ASTMerge/asm/test.cpp
+++ test/ASTMerge/asm/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fcxx-exceptions -emit-pch -o %t.1.ast %S/Inputs/asm-function.cpp
+// RUN: %clang_cc1 -triple i386-unknown-unknown -fcxx-exceptions -emit-pch -o %t.1.ast %S/asm-function.cpp
 // RUN: %clang_cc1 -triple i386-unknown-unknown -fcxx-exceptions -ast-merge %t.1.ast -fsyntax-only -verify %s
 // expected-no-diagnostics
 
Index: test/ASTMerge/anonymous-fields.cpp
===================================================================
--- test/ASTMerge/anonymous-fields.cpp
+++ test/ASTMerge/anonymous-fields.cpp
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/anonymous-fields1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/anonymous-fields2.cpp
-// RUN: %clang_cc1 -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast %s
-// expected-no-diagnostics
Index: test/ASTMerge/anonymous-fields/test.cpp
===================================================================
--- test/ASTMerge/anonymous-fields/test.cpp
+++ test/ASTMerge/anonymous-fields/test.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/anonymous-fields1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/anonymous-fields2.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/anonymous-fields1.cpp
+// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/anonymous-fields2.cpp
 // RUN: %clang_cc1 -emit-obj -o /dev/null -ast-merge %t.1.ast -ast-merge %t.2.ast %s
 // expected-no-diagnostics
Index: test/ASTMerge/Inputs/var2.c
===================================================================
--- test/ASTMerge/Inputs/var2.c
+++ test/ASTMerge/Inputs/var2.c
@@ -1,7 +0,0 @@
-int *x0;
-double *x1;
-int x2;
-int xarray0[17];
-int xarray1[17];
-int xarray2[];
-int xarray3[17];
Index: test/ASTMerge/Inputs/var1.h
===================================================================
--- test/ASTMerge/Inputs/var1.h
+++ test/ASTMerge/Inputs/var1.h
@@ -1 +0,0 @@
-double x2;
Index: test/ASTMerge/Inputs/var1.c
===================================================================
--- test/ASTMerge/Inputs/var1.c
+++ test/ASTMerge/Inputs/var1.c
@@ -1,7 +0,0 @@
-int *x0;
-float **x1;
-#include "var1.h"
-int xarray0[17];
-int xarray1[];
-int xarray2[18];
-int xarray3[18];
Index: test/ASTMerge/Inputs/typedef2.c
===================================================================
--- test/ASTMerge/Inputs/typedef2.c
+++ test/ASTMerge/Inputs/typedef2.c
@@ -1,4 +0,0 @@
-typedef int Typedef1;
-typedef double Typedef2;
-Typedef1 x1;
-Typedef2 x2;
Index: test/ASTMerge/Inputs/typedef1.c
===================================================================
--- test/ASTMerge/Inputs/typedef1.c
+++ test/ASTMerge/Inputs/typedef1.c
@@ -1,4 +0,0 @@
-typedef int Typedef1;
-typedef int Typedef2;
-Typedef1 x1;
-Typedef2 x2;
Index: test/ASTMerge/Inputs/struct2.c
===================================================================
--- test/ASTMerge/Inputs/struct2.c
+++ test/ASTMerge/Inputs/struct2.c
@@ -1,60 +0,0 @@
-// Matches
-struct S0 {
-  int field1;
-  float field2;
-};
-
-struct S0 x0;
-
-// Mismatch in field type
-struct S1 {
-  int field1;
-  float field2;
-};
-
-struct S1 x1;
-
-// Mismatch in tag kind.
-union S2 { int i; float f; } x2;
-
-// Missing fields
-struct S3 { int i; float f; } x3;
-
-// Extra fields
-struct S4 { int i; float f; } x4;
-
-// Bit-field matches
-struct S5 { int i : 8; unsigned j : 8; } x5;
-
-// Bit-field mismatch
-struct S6 { int i : 8; unsigned j; } x6;
-
-// Bit-field mismatch
-struct S7 { int i : 8; unsigned j : 16; } x7;
-
-// Incomplete type
-struct S8 { int i; float f; } *x8;
-
-// Incomplete type
-struct S9 *x9;
-
-// Incomplete type
-struct S10 *x10;
-
-// Matches
-struct ListNode {
-  int value;
-  struct ListNode *Next;
-} xList;
-
-// Mismatch due to struct used internally
-struct DeepError {
-  int value;
-  struct DeeperError { int i; float f; } *Deeper;
-} xDeep;
-
-// Matches
-struct {
-  int i;
-  float f;
-} x11;
Index: test/ASTMerge/Inputs/struct1.c
===================================================================
--- test/ASTMerge/Inputs/struct1.c
+++ test/ASTMerge/Inputs/struct1.c
@@ -1,63 +0,0 @@
-typedef int Int;
-typedef float Float;
-
-// Matches
-struct S0 {
-  Int field1;
-  Float field2;
-};
-
-struct S0 x0;
-
-// Mismatch in field type
-struct S1 {
-  Int field1;
-  int field2;
-};
-
-struct S1 x1;
-
-// Mismatch in tag kind.
-struct S2 { int i; float f; } x2;
-
-// Missing fields
-struct S3 { int i; float f; double d; } x3;
-
-// Extra fields
-struct S4 { int i; } x4;
-
-// Bit-field matches
-struct S5 { int i : 8; unsigned j : 8; } x5;
-
-// Bit-field mismatch
-struct S6 { int i : 8; unsigned j : 8; } x6;
-
-// Bit-field mismatch
-struct S7 { int i : 8; unsigned j : 8; } x7;
-
-// Incomplete type
-struct S8 *x8;
-
-// Incomplete type
-struct S9 { int i; float f; } *x9;
-
-// Incomplete type
-struct S10 *x10;
-
-// Matches
-struct ListNode {
-  int value;
-  struct ListNode *Next;
-} xList;
-
-// Mismatch due to struct used internally
-struct DeepError {
-  int value;
-  struct DeeperError { int i; int f; } *Deeper;
-} xDeep;
-
-// Matches
-struct {
-  Int i;
-  float f;
-} x11;
Index: test/ASTMerge/Inputs/property2.m
===================================================================
--- test/ASTMerge/Inputs/property2.m
+++ test/ASTMerge/Inputs/property2.m
@@ -1,33 +0,0 @@
-// Matching properties
-@interface I1 {
-}
-- (int)getProp2;
-- (void)setProp2:(int)value;
-@property (readonly) int Prop1;
-@property (getter = getProp2, setter = setProp2:) int Prop2;
-@end
-
-// Mismatched property
-@interface I2
-@property (readonly) int Prop1;
-@end
-
-// Properties with implementations
-@interface I3 {
-  int ivar1;
-  int ivar2;
-  int ivar3;
-  int Prop4;
-}
-@property int Prop1;
-@property int Prop2;
-@property int Prop3;
-@property int Prop4;
-@end
-
-@implementation I3
-@synthesize Prop2 = ivar2;
-@synthesize Prop1 = ivar1;
-@synthesize Prop3 = ivar3;
-@synthesize Prop4 = Prop4;
-@end
Index: test/ASTMerge/Inputs/property1.m
===================================================================
--- test/ASTMerge/Inputs/property1.m
+++ test/ASTMerge/Inputs/property1.m
@@ -1,31 +0,0 @@
-// Matching properties
-@interface I1 {
-}
-- (int)getProp2;
-- (void)setProp2:(int)value;
-@end
-
-// Mismatched property
-@interface I2
-@property (readonly) float Prop1;
-@end
-
-// Properties with implementations
-@interface I3 {
-  int ivar1;
-  int ivar2;
-  int ivar3;
-  int Prop4;
-}
-@property int Prop1;
-@property int Prop2;
-@property int Prop3;
-@property int Prop4;
-@end
-
-@implementation I3
-@synthesize Prop1 = ivar1;
-@synthesize Prop2 = ivar3;
-@dynamic Prop3;
-@synthesize Prop4;
-@end
Index: test/ASTMerge/Inputs/namespace2.cpp
===================================================================
--- test/ASTMerge/Inputs/namespace2.cpp
+++ test/ASTMerge/Inputs/namespace2.cpp
@@ -1,17 +0,0 @@
-// Merge success
-namespace N1 {
-  extern int x0;
-}
-
-// Merge multiple namespaces
-namespace N2 {
-  extern int x;
-}
-namespace N2 {
-  extern float y;
-}
-
-// Merge namespace with conflict
-namespace N3 {
-  extern double z;
-}
Index: test/ASTMerge/Inputs/namespace1.cpp
===================================================================
--- test/ASTMerge/Inputs/namespace1.cpp
+++ test/ASTMerge/Inputs/namespace1.cpp
@@ -1,17 +0,0 @@
-// Merge success
-namespace N1 {
-  int x;
-}
-
-// Merge multiple namespaces
-namespace N2 {
-  extern int x;
-}
-namespace N2 {
-  extern float y;
-}
-
-// Merge namespace with conflict
-namespace N3 {
-  extern float z;
-}
Index: test/ASTMerge/Inputs/macro2.m
===================================================================
--- test/ASTMerge/Inputs/macro2.m
+++ test/ASTMerge/Inputs/macro2.m
@@ -1,5 +0,0 @@
-void foo();
-
-void bar() {
-  foo();
-}
Index: test/ASTMerge/Inputs/macro1.m
===================================================================
--- test/ASTMerge/Inputs/macro1.m
+++ test/ASTMerge/Inputs/macro1.m
@@ -1,5 +0,0 @@
-@import macro1;
-
-void foo() {
-  maybeNull(0, 0);
-}
Index: test/ASTMerge/Inputs/macro1.h
===================================================================
--- test/ASTMerge/Inputs/macro1.h
+++ test/ASTMerge/Inputs/macro1.h
@@ -1,5 +0,0 @@
-typedef void *VoidRef;
-
-void maybeNull(
-  int i,
-  _Nullable VoidRef *_Nullable);
Index: test/ASTMerge/Inputs/macro.modulemap
===================================================================
--- test/ASTMerge/Inputs/macro.modulemap
+++ test/ASTMerge/Inputs/macro.modulemap
@@ -1,4 +0,0 @@
-module macro1 [extern_c] {
-  header "macro1.h"
-  export *
-}
Index: test/ASTMerge/Inputs/interface2.m
===================================================================
--- test/ASTMerge/Inputs/interface2.m
+++ test/ASTMerge/Inputs/interface2.m
@@ -1,100 +0,0 @@
-// Matches
-@interface I1 {
-  int ivar1;
-}
-@end
-
-// Matches
-@interface I2 : I1 {
-  float ivar2;
-}
-@end
-
-// Ivar mismatch
-@interface I3 {
-  int ivar1;
-  float ivar2;
-}
-@end
-
-// Superclass mismatch
-@interface I4 : I1 {
-}
-@end
-
-// Methods match
-@interface I5
-+ (float)bar;
-- (int)foo;
-@end
-
-// Method mismatch
-@interface I6
-+ (float)foo;
-@end
-
-// Method mismatch
-@interface I7
-- (int)foo;
-+ (int)bar:(float)x;
-@end
-
-// Method mismatch
-@interface I8
-- (int)foo;
-+ (int)bar:(float)x, ...;
-@end
-
-// Matching protocol
-@protocol P0
-+ (int)foo;
-- (int)bar:(float)x;
-@end
-
-// Protocol with mismatching method
-@protocol P1
-+ (int)foo;
-- (int)bar:(double)x;
-@end
-
-// Interface with protocol
-@interface I9 <P0>
-+ (int)foo;
-- (int)bar:(float)x;
-@end
-
-// Protocol with protocol
-@protocol P2 <P0>
-- (float)wibble:(int)a1 second:(int)a2;
-@end
-
-// Forward-declared interface
-@class I10; @interface I12 @end
-@interface I11
-@end
-
-// Forward-declared protocols
-@protocol P3, P4;
-@protocol P5
-- (double)honk:(int)a;
-@end
-
-// Interface with implementation
-@interface I13
-@end
-
-@implementation I13
-@end
-
-@interface I13b
-@end
-
-@implementation I13b
-@end
-
-// Implementation by itself
-@implementation I14 : I12
-@end
-
-@implementation I15 : I11
-@end
Index: test/ASTMerge/Inputs/interface1.m
===================================================================
--- test/ASTMerge/Inputs/interface1.m
+++ test/ASTMerge/Inputs/interface1.m
@@ -1,103 +0,0 @@
-// Matches
-@interface I1 {
-  int ivar1;
-}
-@end
-
-// Matches
-@interface I2 : I1 {
-  float ivar2;
-}
-@end
-
-// Ivar mismatch
-@interface I3 {
-  int ivar1;
-  int ivar2;
-}
-@end
-
-// Superclass mismatch
-@interface I4 : I2 {
-}
-@end
-
-// Methods match
-@interface I5
-- (int)foo;
-+ (float)bar;
-@end
-
-// Method mismatch
-@interface I6
-- (int)foo;
-+ (int)foo;
-@end
-
-// Method mismatch
-@interface I7
-- (int)foo;
-+ (int)bar:(int)x;
-@end
-
-// Method mismatch
-@interface I8
-- (int)foo;
-+ (int)bar:(float)x;
-@end
-
-// Matching protocol
-@protocol P0
-+ (int)foo;
-- (int)bar:(float)x;
-@end
-
-// Protocol with mismatching method
-@protocol P1
-+ (int)foo;
-- (int)bar:(float)x;
-@end
-
-// Interface with protocol
-@interface I9 <P0>
-+ (int)foo;
-- (int)bar:(float)x;
-@end
-
-// Protocol with protocol
-@protocol P2 <P0>
-- (float)wibble:(int)a1 second:(int)a2;
-@end
-
-// Forward-declared interfaces
-@class I10, I11;
-@interface I12
-@end
-
-// Forward-declared protocols
-@protocol P3, P5;
-@protocol P4
-- (double)honk:(int)a;
-@end
-
-// Interface with implementation
-@interface I13
-@end
-
-@implementation I13
-@end
-
-@interface I13a
-@end
-
-@implementation I13a
-@end
-
-// Implementation by itself
-@implementation I14 : I12
-@end
-
-@implementation I15 : I12
-@end
-
-
Index: test/ASTMerge/Inputs/init-ctors-classes.cpp
===================================================================
--- test/ASTMerge/Inputs/init-ctors-classes.cpp
+++ test/ASTMerge/Inputs/init-ctors-classes.cpp
@@ -1,19 +0,0 @@
-class A_base
-{
-public:
-  int x;
-  A_base() : x(0) {
-  }
-  A_base(int _x) : x(static_cast<int>(_x)) {
-  }
-};
-
-class A : public A_base
-{
-public:
-  int y;
-  struct { int z; };
-  int array[2];
-  A(int _x) : A_base(_x), y(0), z(1), array{{2},{3}} {
-  }
-};
Index: test/ASTMerge/Inputs/inheritance-base.cpp
===================================================================
--- test/ASTMerge/Inputs/inheritance-base.cpp
+++ test/ASTMerge/Inputs/inheritance-base.cpp
@@ -1,7 +0,0 @@
-class A
-{
-public:
-  int x;
-  A(int _x) : x(_x) {
-  }
-};
Index: test/ASTMerge/Inputs/function2.c
===================================================================
--- test/ASTMerge/Inputs/function2.c
+++ test/ASTMerge/Inputs/function2.c
@@ -1,7 +0,0 @@
-typedef int Int;
-void f0(Int);
-void f1(Int, double);
-void f2(int, int);
-void f3(int);
-static void f4(float, float);
-int f5(int) __attribute__((const));
Index: test/ASTMerge/Inputs/function1.c
===================================================================
--- test/ASTMerge/Inputs/function1.c
+++ test/ASTMerge/Inputs/function1.c
@@ -1,6 +0,0 @@
-void f0(int);
-void f1(int, float);
-void f2();
-void f3(void);
-void f4(int, int);
-int f5(int) __attribute__((const));
Index: test/ASTMerge/Inputs/exprs3.cpp
===================================================================
--- test/ASTMerge/Inputs/exprs3.cpp
+++ test/ASTMerge/Inputs/exprs3.cpp
@@ -1,120 +0,0 @@
-// Integer literals
-const char Ch1 = 'a';
-const signed char Ch2 = 'b';
-const unsigned char Ch3 = 'c';
-
-const wchar_t Ch4 = L'd';
-const signed wchar_t Ch5 = L'e';
-const unsigned wchar_t Ch6 = L'f';
-
-const short C1 = 12;
-const unsigned short C2 = 13;
-
-const int C3 = 12;
-const unsigned int C4 = 13;
-
-const long C5 = 22;
-const unsigned long C6 = 23;
-
-const long long C7 = 66;
-const unsigned long long C8 = 67;
-
-
-// String literals
-const char str1[] = "ABCD";
-const char str2[] = "ABCD" "0123";
-
-const wchar_t wstr1[] = L"DEF";
-const wchar_t wstr2[] = L"DEF" L"123";
-
-
-// Boolean literals
-const bool bval1 = true;
-const bool bval2 = false;
-
-// Floating Literals
-const float F1 = 12.2F;
-const double F2 = 1E4;
-const long double F3 = 1.2E-3L;
-
-
-// nullptr literal
-const void *vptr = nullptr;
-
-
-int glb_1[4] = { 10, 20, 30, 40 };
-
-struct S1 {
-  int a;
-  int b[3];
-};
-
-struct S2 {
-  int c;
-  S1 d;
-};
-
-S2 glb_2 = { 22, .d.a = 44, .d.b[0] = 55, .d.b[1] = 66 };
-
-void testNewThrowDelete() {
-  throw;
-  char *p = new char[10];
-  delete[] p;
-}
-
-int testArrayElement(int *x, int n) {
-  return x[n];
-}
-
-int testTernaryOp(int c, int x, int y) {
-  return c ? x : y;
-}
-
-S1 &testConstCast(const S1 &x) {
-  return const_cast<S1&>(x);
-}
-
-S1 &testStaticCast(S1 &x) {
-  return static_cast<S1&>(x);
-}
-
-S1 &testReinterpretCast(S1 &x) {
-  return reinterpret_cast<S1&>(x);
-}
-
-S1 &testDynamicCast(S1 &x) {
-  return dynamic_cast<S1&>(x);
-}
-
-int testScalarInit(int x) {
-  return int(x);
-}
-
-struct S {
-  float f;
-  double d;
-};
-struct T {
-  int i;
-  struct S s[10];
-};
-
-void testOffsetOf() {
-  __builtin_offsetof(struct T, s[2].d);
-}
-
-
-int testDefaultArg(int a = 2*2) {
-  return a;
-}
-
-template <typename T> // T has TemplateTypeParmType
-void testTemplateTypeParmType(int i);
-
-void useTemplateType() {
-  testTemplateTypeParmType<char>(4);
-}
-
-const bool ExpressionTrait = __is_lvalue_expr(1);
-const unsigned ArrayRank = __array_rank(int[10][20]);
-const unsigned ArrayExtent = __array_extent(int[10][20], 1);
Index: test/ASTMerge/Inputs/exprs2.c
===================================================================
--- test/ASTMerge/Inputs/exprs2.c
+++ test/ASTMerge/Inputs/exprs2.c
@@ -1,10 +0,0 @@
-// Matching
-enum E0 {
-  E0_Val0 = 'a',
-  E0_Val1 = (17),
-  E0_Val2 = (1 << 2),
-  E0_Val3 = E0_Val2,
-  E0_Val4 = sizeof(int*),
-  E0_Val5 = (unsigned int)-1
-};
-
Index: test/ASTMerge/Inputs/exprs1.c
===================================================================
--- test/ASTMerge/Inputs/exprs1.c
+++ test/ASTMerge/Inputs/exprs1.c
@@ -1,10 +0,0 @@
-// Matching
-enum E0 {
-  E0_Val0 = 'a',
-  E0_Val1 = (17),
-  E0_Val2 = (1 << 2),
-  E0_Val3 = E0_Val2,
-  E0_Val4 = sizeof(int*),
-  E0_Val5 = (unsigned int)-1
-};
-
Index: test/ASTMerge/Inputs/enum2.c
===================================================================
--- test/ASTMerge/Inputs/enum2.c
+++ test/ASTMerge/Inputs/enum2.c
@@ -1,42 +0,0 @@
-// Matching
-enum E1 {
-  E1Enumerator1,
-  E1Enumerator2 = 3,
-  E1Enumerator3
-} x1;
-
-// Value mismatch
-enum E2 {
-  E2Enumerator1,
-  E2Enumerator2 = 4,
-  E2Enumerator3
-} x2;
-
-// Name mismatch
-enum E3 {
-  E3Enumerator1,
-  E3Enumerator = 3,
-  E3Enumerator3
-} x3;
-
-// Missing enumerator
-enum E4 {
-  E4Enumerator1,
-  E4Enumerator2
-} x4;
-
-// Extra enumerator
-enum E5 {
-  E5Enumerator1,
-  E5Enumerator2,
-  E5Enumerator3,
-  E5Enumerator4
-} x5;
-
-// Matching, with typedef
-typedef enum {
-  E6Enumerator1,
-  E6Enumerator2
-} E6;
-
-E6 x6;
Index: test/ASTMerge/Inputs/enum1.c
===================================================================
--- test/ASTMerge/Inputs/enum1.c
+++ test/ASTMerge/Inputs/enum1.c
@@ -1,42 +0,0 @@
-// Matching
-enum E1 {
-  E1Enumerator1,
-  E1Enumerator2 = 3,
-  E1Enumerator3
-} x1;
-
-// Value mismatch
-enum E2 {
-  E2Enumerator1,
-  E2Enumerator2 = 3,
-  E2Enumerator3
-} x2;
-
-// Name mismatch
-enum E3 {
-  E3Enumerator1,
-  E3Enumerator2 = 3,
-  E3Enumerator3
-} x3;
-
-// Missing enumerator
-enum E4 {
-  E4Enumerator1,
-  E4Enumerator2,
-  E4Enumerator3
-} x4;
-
-// Extra enumerator
-enum E5 {
-  E5Enumerator1,
-  E5Enumerator2,
-  E5Enumerator3
-} x5;
-
-// Matching, with typedef
-typedef enum {
-  E6Enumerator1,
-  E6Enumerator2
-} E6;
-
-E6 x6;
Index: test/ASTMerge/Inputs/class3.cpp
===================================================================
--- test/ASTMerge/Inputs/class3.cpp
+++ test/ASTMerge/Inputs/class3.cpp
@@ -1,26 +0,0 @@
-class C1 {
-public:
-  C1();
-  ~C1();
-  C1 *method_1() {
-    return this;
-  }
-  C1 method_2() {
-    return C1();
-  }
-  void method_3() {
-    const C1 &ref = C1();
-  }
-};
-
-class C11 : public C1 {
-};
-
-class C2 {
-private:
-  int x;
-  friend class C3;
-public:
-  static_assert(sizeof(x) == sizeof(int), "Error");
-  typedef class C2::C2 InjType;
-};
Index: test/ASTMerge/Inputs/class2.cpp
===================================================================
--- test/ASTMerge/Inputs/class2.cpp
+++ test/ASTMerge/Inputs/class2.cpp
@@ -1,14 +0,0 @@
-struct A {
-  public:
-    int x;
-};
-
-struct B : A {
-  int y;
-  int foo();
-};
-
-enum E {
-  a = 0,
-  b = 1
-};
Index: test/ASTMerge/Inputs/class1.cpp
===================================================================
--- test/ASTMerge/Inputs/class1.cpp
+++ test/ASTMerge/Inputs/class1.cpp
@@ -1,20 +0,0 @@
-struct A {
-  public:
-    int x;
-};
-
-struct B : A {
-  float y;
-  float foo();
-};
-
-struct C {
-  C(int i = 10);
-  C(const C&);
-  C &operator=(C&);
-  ~C();
-};
-
-enum E {
-  b = 1
-};
Index: test/ASTMerge/Inputs/class-template2.cpp
===================================================================
--- test/ASTMerge/Inputs/class-template2.cpp
+++ test/ASTMerge/Inputs/class-template2.cpp
@@ -1,35 +0,0 @@
-template<class T>
-struct X0;
-
-template<int I>
-struct X1;
-
-template<long I>
-struct X2;
-
-template<typename>
-struct X3;
-
-template<template<int I> class>
-struct X4;
-
-template<template<int I> class>
-struct X5;
-
-template<template<int I> class>
-struct X6;
-
-typedef int Integer;
-extern X0<Integer> *x0i;
-extern X0<float> *x0f;
-extern X0<double> *x0r;
-
-template<>
-struct X0<char> {
-  int member;
-};
-
-template<>
-struct X0<wchar_t> {
-  float member;
-};
Index: test/ASTMerge/Inputs/class-template1.cpp
===================================================================
--- test/ASTMerge/Inputs/class-template1.cpp
+++ test/ASTMerge/Inputs/class-template1.cpp
@@ -1,34 +0,0 @@
-template<typename T>
-struct X0;
-
-template<int I>
-struct X1;
-
-template<int I>
-struct X2;
-
-template<int I>
-struct X3;
-
-template<template<int I> class>
-struct X4;
-
-template<template<long> class>
-struct X5;
-
-template<typename>
-struct X6;
-
-extern X0<int> *x0i;
-extern X0<long> *x0l;
-extern X0<float> *x0r;
-
-template<>
-struct X0<char> {
-  int member;
-};
-
-template<>
-struct X0<wchar_t> {
-  int member;
-};
Index: test/ASTMerge/Inputs/category2.m
===================================================================
--- test/ASTMerge/Inputs/category2.m
+++ test/ASTMerge/Inputs/category2.m
@@ -1,49 +0,0 @@
-typedef int Int;
-
-@interface I1 
-@end
-
-// Matching category
-@interface I1 (Cat1)
-- (Int)method0;
-@end
-
-// Matching class extension
-@interface I1 ()
-- (Int)method1;
-@end
-
-// Mismatched category
-@interface I1 (Cat2)
-- (float)method2;
-@end
-
-@interface I2
-@end
-
-// Mismatched class extension
-@interface I2 ()
-- (float)method3;
-@end
-
-// Category with implementation
-@interface I2 (Cat3)
-@end
-
-@implementation I2 (Cat3)
-@end
-
-// Category with implementation
-@interface I2 (Cat5)
-@end
-
-@implementation I2 (Cat5)
-@end
-
-// Category with mismatched implementation
-@interface I2 (Cat6)
-@end
-
-@implementation I2 (Cat6)
-- (int)blah { return 0; }
-@end
Index: test/ASTMerge/Inputs/category1.m
===================================================================
--- test/ASTMerge/Inputs/category1.m
+++ test/ASTMerge/Inputs/category1.m
@@ -1,48 +0,0 @@
-@interface I1 
-@end
-
-// Matching category
-@interface I1 (Cat1)
-- (int)method0;
-@end
-
-// Matching class extension
-@interface I1 ()
-- (int)method1;
-@end
-
-// Mismatched category
-@interface I1 (Cat2)
-- (int)method2;
-@end
-
-@interface I2
-@end
-
-// Mismatched class extension
-@interface I2 ()
-- (int)method3;
-@end
-
-// Category with implementation
-@interface I2 (Cat3)
-@end
-
-@implementation I2 (Cat3)
-@end
-
-// Category with implementation
-@interface I2 (Cat4)
-@end
-
-@implementation I2 (Cat4)
-@end
-
-// Category with mismatched implementation
-@interface I2 (Cat6)
-@end
-
-@implementation I2 (Cat6)
-- (float)blah { return 0; }
-@end
-
Index: test/ASTMerge/Inputs/body2.c
===================================================================
--- test/ASTMerge/Inputs/body2.c
+++ test/ASTMerge/Inputs/body2.c
@@ -1,4 +0,0 @@
-__inline__ __attribute__ ((always_inline)) int f()
-{
-  return 2;
-}
Index: test/ASTMerge/Inputs/body1.c
===================================================================
--- test/ASTMerge/Inputs/body1.c
+++ test/ASTMerge/Inputs/body1.c
@@ -1,6 +0,0 @@
-int f();
-
-int main()
-{
-  return f();
-}
Index: test/ASTMerge/Inputs/asm-function.cpp
===================================================================
--- test/ASTMerge/Inputs/asm-function.cpp
+++ test/ASTMerge/Inputs/asm-function.cpp
@@ -1,11 +0,0 @@
-
-unsigned char asmFunc(unsigned char a, unsigned char b) {
-  unsigned int la = a;
-  unsigned int lb = b;
-  unsigned int bigres;
-  unsigned char res;
-  __asm__ ("0:\n1:\n" : [bigres] "=la"(bigres) : [la] "0"(la), [lb] "c"(lb) :
-                        "edx", "cc");
-  res = bigres;
-  return res;
-}
Index: test/ASTMerge/Inputs/anonymous-fields2.cpp
===================================================================
--- test/ASTMerge/Inputs/anonymous-fields2.cpp
+++ test/ASTMerge/Inputs/anonymous-fields2.cpp
@@ -1,9 +0,0 @@
-class A {
-public:
-  struct { int foo; } f;
-  struct { int foo; } g;
-};
-
-inline int useA(A &a) {
-  return (a.f.foo + a.g.foo);
-}
Index: test/ASTMerge/Inputs/anonymous-fields1.cpp
===================================================================
--- test/ASTMerge/Inputs/anonymous-fields1.cpp
+++ test/ASTMerge/Inputs/anonymous-fields1.cpp
@@ -1,5 +0,0 @@
-class A {
-public:
-  struct { int foo; } f;
-  struct { int foo; } g;
-};
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to