[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