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