[PATCH] D106994: [modules] Fix miscompilation when using two RecordDecl definitions with the same name.
Volodymyr Sapsai via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 3 15:28:27 PDT 2021
vsapsai updated this revision to Diff 363891.
vsapsai added a comment.
Handle nested anonymous structs and `IndirectFieldDecl`; more tests to cover unions and bitfields.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106994/new/
https://reviews.llvm.org/D106994
Files:
clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Headers/RecordDef.h
clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Headers/RecordDefCopy.h
clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Hidden.h
clang/test/Modules/merge-record-definition-nonmodular.m
clang/test/Modules/merge-record-definition-visibility.m
clang/test/Modules/merge-record-definition.m
Index: clang/test/Modules/merge-record-definition.m
===================================================================
--- clang/test/Modules/merge-record-definition.m
+++ clang/test/Modules/merge-record-definition.m
@@ -12,6 +12,8 @@
buf.b = 1;
AnonymousStruct strct;
strct.x = 1;
+ UnionRecord rec;
+ rec.u = 1;
}
#import <RecordDefCopy/RecordDefCopy.h>
@@ -21,4 +23,6 @@
buf.c = 2;
AnonymousStruct strct;
strct.y = 2;
+ UnionRecord rec;
+ rec.v = 2;
}
Index: clang/test/Modules/merge-record-definition-visibility.m
===================================================================
--- clang/test/Modules/merge-record-definition-visibility.m
+++ clang/test/Modules/merge-record-definition-visibility.m
@@ -13,4 +13,6 @@
buf.b = 1;
AnonymousStruct strct;
strct.y = 1;
+ UnionRecord rec;
+ rec.u = 1;
}
Index: clang/test/Modules/merge-record-definition-nonmodular.m
===================================================================
--- clang/test/Modules/merge-record-definition-nonmodular.m
+++ clang/test/Modules/merge-record-definition-nonmodular.m
@@ -18,6 +18,8 @@
buf.b = 1;
AnonymousStruct strct;
strct.x = 1;
+ UnionRecord rec;
+ rec.u = 1;
}
#ifdef MODULAR_BEFORE_TEXTUAL
@@ -31,4 +33,6 @@
buf.c = 2;
AnonymousStruct strct;
strct.y = 2;
+ UnionRecord rec;
+ rec.v = 2;
}
Index: clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Hidden.h
===================================================================
--- clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Hidden.h
+++ clang/test/Modules/Inputs/merge-record-definition/RecordDefHidden.framework/Headers/Hidden.h
@@ -13,3 +13,9 @@
int y;
};
};
+
+typedef union _UnionRecord UnionRecord;
+union _UnionRecord {
+ int u: 2;
+ int v: 4;
+};
Index: clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Headers/RecordDefCopy.h
===================================================================
--- clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Headers/RecordDefCopy.h
+++ clang/test/Modules/Inputs/merge-record-definition/RecordDefCopy.framework/Headers/RecordDefCopy.h
@@ -13,3 +13,9 @@
int y;
};
};
+
+typedef union _UnionRecord UnionRecord;
+union _UnionRecord {
+ int u: 2;
+ int v: 4;
+};
Index: clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Headers/RecordDef.h
===================================================================
--- clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Headers/RecordDef.h
+++ clang/test/Modules/Inputs/merge-record-definition/RecordDef.framework/Headers/RecordDef.h
@@ -13,3 +13,9 @@
int y;
};
};
+
+typedef union _UnionRecord UnionRecord;
+union _UnionRecord {
+ int u: 2;
+ int v: 4;
+};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106994.363891.patch
Type: text/x-patch
Size: 2848 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210803/e59293b4/attachment-0001.bin>
More information about the cfe-commits
mailing list