Commit 6246b553 authored by Christoph Mallon's avatar Christoph Mallon
Browse files

arm: Avoid redundant sign/zero extension right before a store.

parent 5265f892
......@@ -39,6 +39,7 @@ libFirm 1.22.1 (2016-01-07)
* opt: Simplify computed goto with known destination to unconditional branch
* opt: Handle constant folding for the builtins `clz`, `ctz`, `ffs`, `parity` and `popcount`
* arm: Avoid redundant sign/zero extension right after a load
* arm: Avoid redundant sign/zero extension right before a store
* Bugfixes
libFirm 1.22.0 (2015-12-31)
......
......@@ -1172,19 +1172,21 @@ static ir_node *gen_Store(ir_node *node)
arm_am_t am = transform_am(ptr, mode, true);
ir_node *mem = get_Store_mem(node);
ir_node *new_mem = be_transform_node(mem);
ir_node *new_val = be_transform_node(val);
dbg_info *dbgi = get_irn_dbg_info(node);
if (get_Store_unaligned(node) == align_non_aligned)
panic("unaligned Stores not supported yet");
ir_node *new_store;
if (mode_is_float(mode)) {
ir_node *const new_val = be_transform_node(val);
if (arm_cg_config.fpu == ARM_FPU_FPA) {
new_store = new_bd_arm_Stf(dbgi, block, am.base, new_val, new_mem, mode, am.entity, 0, am.offset, am.is_frame_entity);
} else {
panic("softfloat not lowered");
}
} else {
val = be_skip_downconv(val, false);
ir_node *const new_val = be_transform_node(val);
new_store = new_bd_arm_Str(dbgi, block, am.base, new_val, new_mem, mode, am.entity, 0, am.offset, am.is_frame_entity);
}
set_irn_pinned(new_store, get_irn_pinned(node));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment