relaxed checking for compound graph paht: the path
authorGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Wed, 2 Feb 2005 14:21:29 +0000 (14:21 +0000)
committerGötz Lindenmaier <goetz@ipd.info.uni-karlsruhe.de>
Wed, 2 Feb 2005 14:21:29 +0000 (14:21 +0000)
can now also be built backwards.

[r5013]

ir/tr/entity.c
ir/tr/entity.h

index a46ac02..51fd0e6 100644 (file)
@@ -615,6 +615,9 @@ int is_proper_compound_graph_path(compound_graph_path *gr, int pos) {
   type *owner = gr->tp;
   for (i = 0; i <= pos; i++) {
     node = get_compound_graph_path_node(gr, i);
+    if (node == NULL)
+      /* Path not yet complete. */
+      return true;
     if (get_entity_owner(node) != owner) return false;
     owner = get_entity_type(node);
   }
index b6910ee..e078614 100644 (file)
@@ -376,6 +376,10 @@ void    set_compound_graph_path_node(compound_graph_path *gr, int pos, entity *n
 int     get_compound_graph_path_array_index(compound_graph_path *gr, int pos);
 void    set_compound_graph_path_array_index(compound_graph_path *gr, int pos, int index);
 
+/** Checks wether the path up to pos is correct. If the path contains a NULL,
+ *  assumes the path is not complete and returns 'true'. */
+int is_proper_compound_graph_path(compound_graph_path *gr, int pos);
+
 /* A value of a compound entity is a pair of a value and the description of the
    corresponding access path to the member of the compound.  */
 void     add_compound_ent_value_w_path(entity *ent, ir_node *val, compound_graph_path *path);