[PATCH, CHKP, i386] Fix retval generated for instrumented calls returning values on multiple registers
Uros Bizjak
ubizjak@gmail.com
Thu Apr 2 20:37:00 GMT 2015
On Thu, Apr 2, 2015 at 10:17 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> rtx b0 = gen_rtx_REG (BND64mode, FIRST_BND_REG);
>> rtx b1 = gen_rtx_REG (BND64mode, FIRST_BND_REG + 1);
>> - retval = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (3, retval, b0, b1));
>> - chkp_put_regs_to_expr_list (retval);
>> + if (GET_CODE (retval) == PARALLEL)
>> + {
>> + b0 = gen_rtx_EXPR_LIST (VOIDmode, b0, const0_rtx);
>> + b1 = gen_rtx_EXPR_LIST (VOIDmode, b1, const0_rtx);
>> + rtx par = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, b0, b1));
>> + retval = chkp_join_splitted_slot (retval, par);
>
> I do not understand this code. Isn't it just droping the original return value
> constructing prallelcontaining only the BND_REGs?
Please see chkp_join_splitted_slot that merges two parallels.
Uros.
More information about the Gcc-patches
mailing list