projects
/
cparser
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b5c3bca
)
Adjusted for latest firm
author
Moritz Kroll
<Moritz.Kroll@gmx.de>
Sun, 14 Dec 2008 10:54:37 +0000
(10:54 +0000)
committer
Moritz Kroll
<Moritz.Kroll@gmx.de>
Sun, 14 Dec 2008 10:54:37 +0000
(10:54 +0000)
[r24657]
ast2firm.c
patch
|
blob
|
history
diff --git
a/ast2firm.c
b/ast2firm.c
index
231b1c1
..
7e9d18c
100644
(file)
--- a/
ast2firm.c
+++ b/
ast2firm.c
@@
-1379,16
+1379,14
@@
static ir_node *deref_address(dbg_info *const dbgi, type_t *const type,
return addr;
}
return addr;
}
+ cons_flags flags = type->base.qualifiers & TYPE_QUALIFIER_VOLATILE
+ ? cons_volatile : 0;
ir_mode *const mode = get_type_mode(irtype);
ir_node *const memory = get_store();
ir_mode *const mode = get_type_mode(irtype);
ir_node *const memory = get_store();
- ir_node *const load = new_d_Load(dbgi, memory, addr, mode);
+ ir_node *const load = new_d_Load(dbgi, memory, addr, mode
, flags
);
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);
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 && !is_Bad(load)) {
- set_Load_volatility(load, volatility_is_volatile);
- }
-
set_store(load_mem);
ir_mode *const mode_arithmetic = get_ir_mode_arithmetic(type);
set_store(load_mem);
ir_mode *const mode_arithmetic = get_ir_mode_arithmetic(type);
@@
-1818,10
+1816,10
@@
static void assign_value(dbg_info *dbgi, ir_node *addr, type_t *type,
ir_node *memory = get_store();
if (is_type_scalar(type)) {
ir_node *memory = get_store();
if (is_type_scalar(type)) {
- ir_node *store = new_d_Store(dbgi, memory, addr, value);
+ cons_flags flags = type->base.qualifiers & TYPE_QUALIFIER_VOLATILE
+ ? cons_volatile : 0;
+ ir_node *store = new_d_Store(dbgi, memory, addr, value, flags);
ir_node *store_mem = new_d_Proj(dbgi, store, mode_M, pn_Store_M);
ir_node *store_mem = new_d_Proj(dbgi, store, mode_M, pn_Store_M);
- if (type->base.qualifiers & TYPE_QUALIFIER_VOLATILE && !is_Bad(store))
- set_Store_volatility(store, volatility_is_volatile);
set_store(store_mem);
} else {
ir_type *irtype = get_ir_type(type);
set_store(store_mem);
} else {
ir_type *irtype = get_ir_type(type);
@@
-1876,7
+1874,8
@@
static ir_node *bitfield_store_to_firm(dbg_info *dbgi,
/* load current value */
ir_node *mem = get_store();
/* load current value */
ir_node *mem = get_store();
- ir_node *load = new_d_Load(dbgi, mem, addr, mode);
+ ir_node *load = new_d_Load(dbgi, mem, addr, mode,
+ set_volatile ? cons_volatile : 0);
ir_node *load_mem = new_d_Proj(dbgi, load, mode_M, pn_Load_M);
ir_node *load_res = new_d_Proj(dbgi, load, mode, pn_Load_res);
tarval *shift_mask = create_bitfield_mask(mode, bitoffset, bitsize);
ir_node *load_mem = new_d_Proj(dbgi, load, mode_M, pn_Load_M);
ir_node *load_res = new_d_Proj(dbgi, load, mode, pn_Load_res);
tarval *shift_mask = create_bitfield_mask(mode, bitoffset, bitsize);
@@
-1886,17
+1885,11
@@
static ir_node *bitfield_store_to_firm(dbg_info *dbgi,
/* construct new value and store */
ir_node *new_val = new_d_Or(dbgi, load_res_masked, value_maskshift, mode);
/* construct new value and store */
ir_node *new_val = new_d_Or(dbgi, load_res_masked, value_maskshift, mode);
- ir_node *store = new_d_Store(dbgi, load_mem, addr, new_val);
+ ir_node *store = new_d_Store(dbgi, load_mem, addr, new_val,
+ set_volatile ? cons_volatile : 0);
ir_node *store_mem = new_d_Proj(dbgi, store, mode_M, pn_Store_M);
set_store(store_mem);
ir_node *store_mem = new_d_Proj(dbgi, store, mode_M, pn_Store_M);
set_store(store_mem);
- if (set_volatile) {
- if (!is_Bad(load))
- set_Load_volatility(load, volatility_is_volatile);
- if (!is_Bad(store))
- set_Store_volatility(store, volatility_is_volatile);
- }
-
return value_masked;
}
return value_masked;
}
@@
-1907,7
+1900,7
@@
static ir_node *bitfield_extract_to_firm(const select_expression_t *expression,
type_t *type = expression->base.type;
ir_mode *mode = get_ir_mode_storage(type);
ir_node *mem = get_store();
type_t *type = expression->base.type;
ir_mode *mode = get_ir_mode_storage(type);
ir_node *mem = get_store();
- ir_node *load = new_d_Load(dbgi, mem, addr, mode);
+ ir_node *load = new_d_Load(dbgi, mem, addr, mode
, 0
);
ir_node *load_mem = new_d_Proj(dbgi, load, mode_M, pn_Load_M);
ir_node *load_res = new_d_Proj(dbgi, load, mode, pn_Load_res);
ir_node *load_mem = new_d_Proj(dbgi, load, mode_M, pn_Load_M);
ir_node *load_res = new_d_Proj(dbgi, load, mode, pn_Load_res);
@@
-3875,7
+3868,7
@@
static void create_dynamic_null_initializer(ir_type *type, dbg_info *dbgi,
/* TODO: bitfields */
ir_node *mem = get_store();
/* TODO: bitfields */
ir_node *mem = get_store();
- ir_node *store = new_d_Store(dbgi, mem, base_addr, cnst);
+ ir_node *store = new_d_Store(dbgi, mem, base_addr, cnst
, 0
);
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
} else {
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
} else {
@@
-3933,7
+3926,7
@@
static void create_dynamic_initializer_sub(ir_initializer_t *initializer,
assert(get_type_mode(type) == mode);
ir_node *mem = get_store();
assert(get_type_mode(type) == mode);
ir_node *mem = get_store();
- ir_node *store = new_d_Store(dbgi, mem, base_addr, node);
+ ir_node *store = new_d_Store(dbgi, mem, base_addr, node
, 0
);
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
return;
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
return;
@@
-3953,7
+3946,7
@@
static void create_dynamic_initializer_sub(ir_initializer_t *initializer,
assert(get_type_mode(type) == mode);
ir_node *mem = get_store();
assert(get_type_mode(type) == mode);
ir_node *mem = get_store();
- ir_node *store = new_d_Store(dbgi, mem, base_addr, cnst);
+ ir_node *store = new_d_Store(dbgi, mem, base_addr, cnst
, 0
);
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
return;
ir_node *proj_m = new_Proj(store, mode_M, pn_Store_M);
set_store(proj_m);
return;