From 6fd82c81483fd3916912336bbf543d287c69069a Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Wed, 3 Dec 2008 08:57:19 +0000 Subject: [PATCH] Before setting volatility, check that FIRM did not give us a Bad. [r24248] --- ast2firm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ast2firm.c b/ast2firm.c index 17859fb..4c013e7 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -1320,7 +1320,7 @@ static ir_node *deref_address(dbg_info *const dbgi, type_t *const type, ir_node *const load_mem = new_d_Proj(dbgi, load, mode_M, pn_Load_M); ir_node *const load_res = new_d_Proj(dbgi, load, mode, pn_Load_res); - if (type->base.qualifiers & TYPE_QUALIFIER_VOLATILE) { + if (type->base.qualifiers & TYPE_QUALIFIER_VOLATILE && !is_Bad(load)) { set_Load_volatility(load, volatility_is_volatile); } @@ -1751,7 +1751,7 @@ static void assign_value(dbg_info *dbgi, ir_node *addr, type_t *type, if (is_type_scalar(type)) { ir_node *store = new_d_Store(dbgi, memory, addr, value); ir_node *store_mem = new_d_Proj(dbgi, store, mode_M, pn_Store_M); - if (type->base.qualifiers & TYPE_QUALIFIER_VOLATILE) + if (type->base.qualifiers & TYPE_QUALIFIER_VOLATILE && !is_Bad(store)) set_Store_volatility(store, volatility_is_volatile); set_store(store_mem); } else { @@ -1822,8 +1822,10 @@ static void bitfield_store_to_firm(dbg_info *dbgi, set_store(store_mem); if (set_volatile) { - set_Load_volatility(load, volatility_is_volatile); - set_Store_volatility(store, volatility_is_volatile); + if (!is_Bad(load)) + set_Load_volatility(load, volatility_is_volatile); + if (!is_Bad(store)) + set_Store_volatility(store, volatility_is_volatile); } } -- 2.20.1