case irms_character:
buffer = alloca(sc_get_buffer_length());
memcpy(buffer, src->value, sc_get_buffer_length());
- sign_extend(buffer, src->mode);
+ sign_extend(buffer, m);
return get_tarval_overflow(buffer, src->length, m);
case irms_internal_boolean:
break;
case irms_reference:
+ switch(get_mode_sort(m)) {
+ case irms_int_number:
+ buffer = alloca(sc_get_buffer_length());
+ memcpy(buffer, src->value, sc_get_buffer_length());
+ sign_extend(buffer, src->mode);
+ return get_tarval_overflow(buffer, src->length, m);
+ default:
+ break;
+ }
+
break;
}