From a616ff4a50751dd5bee0fd014a1c6c76c152a1f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Wed, 13 Aug 2003 07:43:13 +0000 Subject: [PATCH] string independent test. [r1658] --- ir/ir/irgraph.c | 12 +++++++++--- ir/ir/irgraph.h | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) 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); -- 2.20.1