This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Go patch committed: Compare parse methods when exporting interface types


This patch by Than McIntosh fixes the Go frontend to compare parse
methods when indexing interface types for export.  This change fixes a
bug in which two interface types were being incorrectly commoned
(considered identical) in the initial stages of writing out types to
export data.  The indexer does a walk to collect candidates for
export, inserting types into a table to eliminate duplicates; as part
of this process a local interface type T1 was being commoned with a
different interface type T2.  This caused a cycle in the exported type
graph due to the way embedded interfaces are handled.

The fix was to add a new flag to the Type::is_identical utility
routine to request that interface type comparison be done by examining
the original parse methods, as opposed to the expanded method set,
then use the new flag when creating the hash map for the exporter.

The test case for this is https://golang.org/cl/166917.

This fixes https://golang.org/issue/30659.

Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]