From 6c5776676108e36e82b3c4a42156a3937f3dc7f7 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 14 Jan 2020 08:48:20 +0100 Subject: [PATCH] Optimize alias subset recording When an alias-set is an already existing subset there is no need to re-record its children as childs of the parent. 2020-01-15 Richard Biener * alias.c (record_alias_subset): Avoid redundant work when subset is already recorded. --- gcc/ChangeLog | 5 +++++ gcc/alias.c | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4da4d045ce8..8ef85773d7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-01-15 Richard Biener + + * alias.c (record_alias_subset): Avoid redundant work when + subset is already recorded. + 2020-01-14 David Malcolm * doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of diff --git a/gcc/alias.c b/gcc/alias.c index 9629b5a9f48..3794f9b6a9e 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -1164,10 +1164,16 @@ record_alias_subset (alias_set_type superset, alias_set_type subset) superset_entry->has_zero_child = 1; else { - subset_entry = get_alias_set_entry (subset); if (!superset_entry->children) superset_entry->children = hash_map::create_ggc (64); + + /* Enter the SUBSET itself as a child of the SUPERSET. If it was + already there we're done. */ + if (superset_entry->children->put (subset, 0)) + return; + + subset_entry = get_alias_set_entry (subset); /* If there is an entry for the subset, enter all of its children (if they are not already present) as children of the SUPERSET. */ if (subset_entry) @@ -1185,9 +1191,6 @@ record_alias_subset (alias_set_type superset, alias_set_type subset) superset_entry->children->put ((*iter).first, (*iter).second); } } - - /* Enter the SUBSET itself as a child of the SUPERSET. */ - superset_entry->children->put (subset, 0); } } -- 2.30.2