This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/42641] New: Random code-generation differences with GRAPHITE
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Jan 2010 00:10:34 -0000
- Subject: [Bug tree-optimization/42641] New: Random code-generation differences with GRAPHITE
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Graphites code generation depends on virtual addresses because we traverse
hashtables (at least) when inserting guard phis from sese.c:insert_guard_phis
which elements are hashed by pointer, sese.c:rename_map_elt_info
A fix is to hash the SSA name instead:
Index: sese.c
===================================================================
--- sese.c (revision 155678)
+++ sese.c (working copy)
@@ -78,7 +78,7 @@ debug_rename_map (htab_t map)
hashval_t
rename_map_elt_info (const void *elt)
{
- return htab_hash_pointer (((const struct rename_map_elt_s *)
elt)->old_name);
+ return SSA_NAME_VERSION ((const struct rename_map_elt_s *) elt)->old_name;
}
/* Compares database elements E1 and E2. */
there is a lot more pointer-hashing done and a lot of hashtab traversals.
They all need to be audited.
--
Summary: Random code-generation differences with GRAPHITE
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: critical
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42641