From ac49539a0d2e60bc02bbd848247355cd782b2c83 Mon Sep 17 00:00:00 2001 From: Moritz Kroll Date: Wed, 18 Feb 2009 01:00:12 +0000 Subject: [PATCH] irio: Fixed importing entities with atomic values [r25522] --- include/libfirm/irnode.h | 2 ++ ir/ir/irnode.c | 6 ++++++ ir/ir/irnode_t.h | 7 +++++++ ir/tr/entity.c | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/libfirm/irnode.h b/include/libfirm/irnode.h index 44f437a40..8476eb743 100644 --- a/include/libfirm/irnode.h +++ b/include/libfirm/irnode.h @@ -1298,6 +1298,8 @@ int is_IJmp(const ir_node *node); int is_Raise(const ir_node *node); /** Returns true if a node is an ASM node. */ int is_ASM(const ir_node *node); +/** Returns true if a node is an Dummy node. */ +int is_Dummy(const ir_node *node); /** Returns true if node is a Proj node or a Filter node in INTRA-procedural view. */ int is_Proj(const ir_node *node); /** Returns true if node is a Filter node. */ diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index d44f835bb..02ec1d6b4 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -2955,6 +2955,12 @@ int return _is_ASM(node); } +/* returns true if a node is an Dummy node. */ +int +(is_Dummy)(const ir_node *node) { + return _is_Dummy(node); +} + int (is_Proj)(const ir_node *node) { return _is_Proj(node); diff --git a/ir/ir/irnode_t.h b/ir/ir/irnode_t.h index 9ee3fe72b..73f678861 100644 --- a/ir/ir/irnode_t.h +++ b/ir/ir/irnode_t.h @@ -753,6 +753,12 @@ _is_ASM(const ir_node *node) { return (_get_irn_op(node) == op_ASM); } +static inline int +_is_Dummy(const ir_node *node) { + assert(node); + return (_get_irn_op(node) == op_Dummy); +} + static inline int _is_Anchor(const ir_node *node) { return (_get_irn_op(node) == op_Anchor); @@ -1065,6 +1071,7 @@ _is_arg_Proj(const ir_node *node) { #define is_IJmp(node) _is_IJmp(node) #define is_Raise(node) _is_Raise(node) #define is_ASM(node) _is_ASM(node) +#define is_Dummy(node) _is_Dummy(node) #define is_Anchor(node) _is_Anchor(node) #define is_Bad(node) _is_Bad(node) #define is_NoMem(node) _is_NoMem(node) diff --git a/ir/tr/entity.c b/ir/tr/entity.c index 1cc8b6776..ea37d1314 100644 --- a/ir/tr/entity.c +++ b/ir/tr/entity.c @@ -597,7 +597,7 @@ set_atomic_ent_value(ir_entity *ent, ir_node *val) { assert(is_atomic_entity(ent) && (ent->variability != variability_uninitialized)); if (is_Method_type(ent->type) && (ent->peculiarity == peculiarity_existent)) return; - assert(get_irn_mode(val) == get_type_mode(ent->type)); + assert(is_Dummy(val) || get_irn_mode(val) == get_type_mode(ent->type)); ent->value = val; } /* set_atomic_ent_value */ -- 2.20.1