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);
}
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 {
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);
}
}