This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/42641] New: Random code-generation differences with GRAPHITE


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


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