mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
c++: Allow IS_FAKE_BASE_TYPE for union types [PR114954]
In some circumstances, unions can also have an __as_base type; we need to make sure that IS_FAKE_BASE_TYPE correctly recognises this. PR c++/114954 gcc/cp/ChangeLog: * cp-tree.h (IS_FAKE_BASE_TYPE): Also apply to unions. gcc/testsuite/ChangeLog: * g++.dg/modules/pr114954.C: New test. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com> Reviewed-by: Jason Merrill <jason@redhat.com>
This commit is contained in:
parent
ec2365e075
commit
0c43c673b0
@ -2616,7 +2616,7 @@ struct GTY(()) lang_type {
|
||||
|
||||
/* True iff NODE is the CLASSTYPE_AS_BASE version of some type. */
|
||||
#define IS_FAKE_BASE_TYPE(NODE) \
|
||||
(TREE_CODE (NODE) == RECORD_TYPE \
|
||||
(RECORD_OR_UNION_TYPE_P (NODE) \
|
||||
&& TYPE_CONTEXT (NODE) && CLASS_TYPE_P (TYPE_CONTEXT (NODE)) \
|
||||
&& CLASSTYPE_AS_BASE (TYPE_CONTEXT (NODE)) == (NODE))
|
||||
|
||||
|
14
gcc/testsuite/g++.dg/modules/pr114954.C
Normal file
14
gcc/testsuite/g++.dg/modules/pr114954.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR c++/114954
|
||||
// { dg-additional-options "-fmodules-ts" }
|
||||
// { dg-module-cmi main }
|
||||
|
||||
export module main;
|
||||
|
||||
template <int N>
|
||||
union U {
|
||||
private:
|
||||
char a[N + 1];
|
||||
int b;
|
||||
};
|
||||
|
||||
U<4> p;
|
Loading…
Reference in New Issue
Block a user