summaryrefslogtreecommitdiffhomepage
path: root/ir/be/mips
diff options
context:
space:
mode:
authorChristoph Mallon <christoph.mallon@gmx.de>2017-01-25 16:56:43 +0100
committerChristoph Mallon <christoph.mallon@gmx.de>2017-01-25 23:18:24 +0100
commit7d9251f49e661e0d452157d078600785a48d0c0b (patch)
tree90ee804f066299ed85581e9f2a9f1e920094a17b /ir/be/mips
parent7b4aaef44d80896639aa15fbe083fac9b0f92cd8 (diff)
mips: Handle Call arguments, which need to be sign/zero extended.
Diffstat (limited to 'ir/be/mips')
-rw-r--r--ir/be/mips/mips_transform.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/ir/be/mips/mips_transform.c b/ir/be/mips/mips_transform.c
index a990502..32abd92 100644
--- a/ir/be/mips/mips_transform.c
+++ b/ir/be/mips/mips_transform.c
@@ -456,15 +456,10 @@ static ir_node *gen_Call(ir_node *const node)
dbg_info *const dbgi = get_irn_dbg_info(node);
for (size_t i = 0; i != n_params; ++i) {
- mips_reg_or_slot_t const *const param = &cconv.parameters[i];
- ir_node *const arg = get_Call_param(node, i);
-
- ir_mode *const arg_mode = get_irn_mode(arg);
- unsigned const size = get_mode_size_bits(arg_mode);
- if (size != 32)
- panic("unsupported parameter size");
+ ir_node *const arg = get_Call_param(node, i);
+ ir_node *const val = extend_value(arg);
- ir_node *const val = be_transform_node(arg);
+ mips_reg_or_slot_t const *const param = &cconv.parameters[i];
if (param->reg) {
ins[p] = val;
reqs[p] = param->reg->single_req;