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] PR target/70439: Properly check conflict between DRAP register and __builtin_eh_return


On Wed, Mar 30, 2016 at 12:47 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Tue, Mar 29, 2016 at 8:56 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
>> Since %ecx can't be used for both DRAP register and __builtin_eh_return,
>> we need to check if crtl->drap_reg uses %ecx before using %ecx for
>> __builtin_eh_return.
>>
>> Testing on x86-64.  OK for trunk if there are no regressions?
>>
>>
>> H.J.
>> ---
>>         PR target/70439
>>         * config/i386/i386.c (ix86_expand_epilogue): Properly check
>>         conflict between DRAP register and __builtin_eh_return.
>> ---
>>  gcc/config/i386/i386.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
>> index 1639704..aafe171 100644
>> --- a/gcc/config/i386/i386.c
>> +++ b/gcc/config/i386/i386.c
>> @@ -13463,8 +13463,9 @@ ix86_expand_epilogue (int style)
>>           rtx sa = EH_RETURN_STACKADJ_RTX;
>>           rtx_insn *insn;
>>
>> -         /* Stack align doesn't work with eh_return.  */
>> -         gcc_assert (!stack_realign_drap);
>> +         /* %ecx can't be used for both DRAP register and eh_return.  */
>> +         gcc_assert (!crtl->drap_reg
>> +                     || REGNO (crtl->drap_reg) != CX_REG);
>
> How about:
>
>         if (crtl->drap_reg)
>           gcc_assert (REGNO (crtl->drap_reg) != CX_REG));
>
> ?
>
>>           /* Neither does regparm nested functions.  */
>>           gcc_assert (!ix86_static_chain_on_stack);
>
> This comment needs to be updated, too.
>
> Uros.

Like this?

-- 
H.J.

Attachment: 0001-Properly-check-conflict-between-DRAP-register-and-__.patch
Description: Binary data


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