2 changed files with 8 additions and 80 deletions
@ -1,72 +0,0 @@ |
|||
In the 2.3.2 release of gcc/g++, how the compiler handles resolving |
|||
multiple inheritance lattices was reworked to properly discover |
|||
ambiguities. We recently found an example which causes this new |
|||
algorithm to fail in a very subtle way. For the time being, this |
|||
patch will make the compiler use the old algorithm, which works for |
|||
the failing case we've found. Note it will revert the compiler's |
|||
ability to properly deduce MI ambiguities in many cases (to its state |
|||
in 2.2.2 and 2.3.1). This bug will be fixed in the next gcc/g++ |
|||
release. |
|||
|
|||
Brendan Kehoe (brendan@cygnus.com) |
|||
|
|||
*** cp-search.c.~1~ Thu Feb 18 18:03:24 1993 |
|||
--- cp-search.c Thu Feb 18 18:03:27 1993
|
|||
*************** |
|||
*** 2389,2392 **** |
|||
--- 2389,2393 ----
|
|||
if ((*qfn)(base_binfo)) |
|||
{ |
|||
+ #if 0
|
|||
if (fn == dfs_init_vbase_pointers) |
|||
{ |
|||
*************** |
|||
*** 2464,2467 **** |
|||
--- 2465,2469 ----
|
|||
saw_first_vbase = save_saw_first_vbase; |
|||
} else |
|||
+ #endif
|
|||
dfs_walk (base_binfo, fn, qfn); |
|||
} |
|||
*************** dfs_init_vbase_pointers (binfo) |
|||
*** 2658,2661 **** |
|||
--- 2660,2664 ----
|
|||
return; |
|||
|
|||
+ #if 0
|
|||
this_vbase_ptr = vbase_decl_ptr_intermediate; |
|||
|
|||
*************** dfs_init_vbase_pointers (binfo) |
|||
*** 2662,2668 **** |
|||
if (TYPE_POINTER_TO (type) != TREE_TYPE (this_vbase_ptr)) |
|||
my_friendly_abort (125); |
|||
|
|||
- #if 0
|
|||
distance = get_base_distance (type, TREE_TYPE (vbase_decl), 0, &path); |
|||
if (distance == -2) |
|||
{ |
|||
--- 2665,2672 ----
|
|||
if (TYPE_POINTER_TO (type) != TREE_TYPE (this_vbase_ptr)) |
|||
my_friendly_abort (125); |
|||
+ #endif
|
|||
|
|||
distance = get_base_distance (type, TREE_TYPE (vbase_decl), 0, &path); |
|||
+ #if 0
|
|||
if (distance == -2) |
|||
{ |
|||
*************** dfs_init_vbase_pointers (binfo) |
|||
*** 2669,2672 **** |
|||
--- 2673,2677 ----
|
|||
error ("inheritance lattice too complex below"); |
|||
} |
|||
+ #endif
|
|||
while (path) |
|||
{ |
|||
*************** dfs_init_vbase_pointers (binfo) |
|||
*** 2682,2685 **** |
|||
--- 2687,2691 ----
|
|||
this_vbase_ptr = convert_pointer_to (type, vbase_decl_ptr); |
|||
|
|||
+ #if 0
|
|||
/* This happens when it is ambiguous. */ |
|||
if (this_vbase_ptr == error_mark_node) |
|||
Loading…
Reference in new issue