summaryrefslogtreecommitdiffstats
path: root/clang/test/ASTMerge/struct/Inputs/struct2.c
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-05-14 18:51:07 +0000
committerReid Kleckner <rnk@google.com>2019-05-14 18:51:07 +0000
commit0333dd95636da52229ca14b4e5525c1cd8ba62d2 (patch)
tree87ae14b4d0660169ac71541697a9b7338e105185 /clang/test/ASTMerge/struct/Inputs/struct2.c
parent094584cd522b119444a05019189f2065ad1d215c (diff)
downloadbcm5719-llvm-0333dd95636da52229ca14b4e5525c1cd8ba62d2.tar.gz
bcm5719-llvm-0333dd95636da52229ca14b4e5525c1cd8ba62d2.zip
Restore test files accidentally deleted in r354839
I think there must be a bug in git-llvm causing parent directories to be deleted when the diff deletes files in a subdirectory. Perhaps it is Windows-only. There has been a behavior change, so some of these tests now fail. I have marked them XFAIL and will fix them in a follow-up to separate the changes. llvm-svn: 360699
Diffstat (limited to 'clang/test/ASTMerge/struct/Inputs/struct2.c')
-rw-r--r--clang/test/ASTMerge/struct/Inputs/struct2.c138
1 files changed, 138 insertions, 0 deletions
diff --git a/clang/test/ASTMerge/struct/Inputs/struct2.c b/clang/test/ASTMerge/struct/Inputs/struct2.c
new file mode 100644
index 00000000000..49fe36d823d
--- /dev/null
+++ b/clang/test/ASTMerge/struct/Inputs/struct2.c
@@ -0,0 +1,138 @@
+// 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;
+
+// Matches
+typedef struct {
+ int i;
+ float f;
+} S12;
+
+S12 x12;
+
+// Mismatch
+typedef struct {
+ int i; // Mismatch here.
+ float f;
+} S13;
+
+S13 x13;
+
+// Matches
+struct Unnamed {
+ union {
+ struct {
+ int i;
+ } S;
+ struct {
+ float i;
+ } R;
+ } U;
+} x14;
+
+// Matches
+struct DeepUnnamed {
+ union {
+ union {
+ struct {
+ long i;
+ } S;
+ struct {
+ int i;
+ } R;
+ } U1;
+ union {
+ struct {
+ long i;
+ } S;
+ struct {
+ float i;
+ } T;
+ } U2;
+ } U;
+ struct {
+ long i;
+ } V;
+} x15;
+
+// Mismatch due to unnamed struct used internally
+struct DeepUnnamedError {
+ union {
+ union {
+ struct {
+ long i;
+ } S;
+ struct {
+ int i;
+ } R;
+ } U1;
+ union {
+ struct {
+ float i; // Mismatch here.
+ } S;
+ struct {
+ float i;
+ } T;
+ } U2;
+ } U;
+ struct {
+ long i;
+ } V;
+} x16;
OpenPOWER on IntegriCloud