This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] x86 interrupt attribute


Fixed it. Thanks.

On Fri, Oct 2, 2015 at 6:45 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Fri, Oct 2, 2015 at 2:51 PM, Yulia Koval <vaalfreja@gmail.com> wrote:
>> Hi,
>> Here is a new patch. Added HJ's changes and review changes.
>>
>> Implement x86 interrupt attribute
>
> +      incoming_stack_boundary
> + = (crtl->parm_stack_boundary > ix86_incoming_stack_boundary
> +   ? crtl->parm_stack_boundary : ix86_incoming_stack_boundary);
>
> MAX (crtl->parm_stack_boundary, ix86_incoming_stack_boundary);
>
> +bool
> +ix86_epilogue_uses (int regno)
> +{
> +  /* If there are no caller-saved registers, we preserve all registers,
> +     except for MMX and x87 registers which aren't supported when saving
> +     and restoring registers.  Don't explicitly save SP register since
> +     it is always preserved.  */
> +  return (cfun->machine->no_caller_saved_registers
> +  && reg_names[regno][0]
> +  && !fixed_regs[regno]
> +  && !STACK_REGNO_P (regno)
> +  && !MMX_REGNO_P (regno));
>
> There is still a redundant check for reg_names with !fixed_regs. When
> member of fixed_regs is 0, we are sure that corresponding reg_names is
> non-null. As can be seen in ix86_conditional_register_usage, register
> names are squashed depending on target for non-existent registers in
> order to prevent their usage in "asm" statements.
>
> +      /* If there are no caller-saved registers, add all registers
> + that are clobbered by the call.  */
> +      for (int i = 0; i < FIRST_PSEUDO_REGISTER; i++)
> + if (reg_names[i][0]
> +    && !fixed_regs[i]
> +    && (ix86_call_used_regs[i] == 1
> + || (ix86_call_used_regs[i] & c_mask))
> +    && !STACK_REGNO_P (i)
> +    && !MMX_REGNO_P (i))
>
> And here.
>
> Uros.

Attachment: patch_fixed
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]