From: Götz Lindenmaier Date: Wed, 13 Aug 2003 07:43:13 +0000 (+0000) Subject: string independent test. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=a616ff4a50751dd5bee0fd014a1c6c76c152a1f9;p=libfirm string independent test. [r1658] --- diff --git a/ir/ir/irgraph.c b/ir/ir/irgraph.c index 8e9125a35..e39554b66 100644 --- a/ir/ir/irgraph.c +++ b/ir/ir/irgraph.c @@ -396,6 +396,7 @@ get_irg_frame_type (ir_graph *irg) void set_irg_frame_type (ir_graph *irg, type *ftp) { + assert(is_class_type(ftp)); irg->frame_type = ftp; } @@ -403,9 +404,14 @@ set_irg_frame_type (ir_graph *irg, type *ftp) /* To test for a frame type */ int is_frame_type(type *ftp) { - return ((is_class_type(ftp) || is_struct_type(ftp)) && - id_is_suffix(id_from_str(FRAME_TP_SUFFIX, strlen(FRAME_TP_SUFFIX)), - get_type_ident(ftp))); + int i; + if (is_class_type(ftp)) { + for (i = 0; i < get_irp_n_irgs(); i++) { + type *frame_tp = get_irg_frame_type(get_irp_irg(i)); + if (ftp == frame_tp) return true; + } + } + return false; } int diff --git a/ir/ir/irgraph.h b/ir/ir/irgraph.h index b61f09ade..1a21a6c5d 100644 --- a/ir/ir/irgraph.h +++ b/ir/ir/irgraph.h @@ -117,8 +117,8 @@ void set_irg_ent (ir_graph *irg, entity *ent); type *get_irg_frame_type (ir_graph *irg); void set_irg_frame_type (ir_graph *irg, type *ftp); -/* To test for a frame type */ -int is_frame_type(type *ftp); +/* To test for a frame type. O(#irgs) if ftp is class type. */ +int is_frame_type (type *ftp); ir_node *get_irg_start_block (ir_graph *irg); void set_irg_start_block (ir_graph *irg, ir_node *node);