[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