mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:30:59 +08:00
re PR c++/13387 (assignment to base class corrupts subclass)
PR c++/13387 * cp-lang.c (cxx_get_alias_set): Correct logic for a base type. From-SVN: r74968
This commit is contained in:
parent
4b8a63d6c2
commit
5d027e7b03
@ -1,3 +1,8 @@
|
||||
2003-12-23 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
PR c++/13387
|
||||
* cp-lang.c (cxx_get_alias_set): Correct logic for a base type.
|
||||
|
||||
2003-12-22 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* decl.c (start_function): Do not check
|
||||
|
@ -292,11 +292,12 @@ ok_to_generate_alias_set_for_type (tree t)
|
||||
static HOST_WIDE_INT
|
||||
cxx_get_alias_set (tree t)
|
||||
{
|
||||
if (CLASS_TYPE_P (t) && TYPE_CONTEXT (t) && CLASS_TYPE_P (TYPE_CONTEXT (t))
|
||||
if (TREE_CODE (t) == RECORD_TYPE
|
||||
&& TYPE_CONTEXT (t) && CLASS_TYPE_P (TYPE_CONTEXT (t))
|
||||
&& CLASSTYPE_AS_BASE (TYPE_CONTEXT (t)) == t)
|
||||
/* The base variant of a type must be in the same alias set as the
|
||||
complete type. */
|
||||
t = TYPE_CONTEXT (t);
|
||||
return get_alias_set (TYPE_CONTEXT (t));
|
||||
|
||||
if (/* It's not yet safe to use alias sets for some classes in C++. */
|
||||
!ok_to_generate_alias_set_for_type (t)
|
||||
|
Loading…
x
Reference in New Issue
Block a user