On Tue, Jan 16, 2018 at 11:48 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
> On Sun, Jan 14, 2018 at 5:43 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
>> On Sun, Jan 14, 2018 at 5:35 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>> On Sun, Jan 14, 2018 at 8:19 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>>> On Fri, Jan 12, 2018 at 9:01 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>>>> On Thu, Jan 11, 2018 at 2:28 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>>>
>>>>>> Hi Uros,
>>>>>>
>>>>>> Can you take a look at my x86 backend changes so that they are ready
>>>>>> to check in once we have consensus.
>>>>>
>>>>> Please finish the talks about the correct approach first. Once the
>>>>> consensus is reached, please post the final version of the patches for
>>>>> review.
>>>>>
>>>>> BTW: I have no detailed insight in these issues, so I'll look mostly
>>>>> at the implementation details, probably early next week.
>>>>
>>>> One general remark is on the usage of -1 as an invalid register
>>>
>>> This has been rewritten. The checked in patch no longer does that.
>>
>> I'm looking directly into current indirect_thunk_name,
>> output_indirect_thunk and output_indirect_thunk_function functions in
>> i386.c which have plenty of the mentioned checks.
>
> Improved with attached patch.
>
> 2018-01-16 Uros Bizjak <ubiz...@gmail.com>
>
> * config/i386/i386.c (indirect_thunk_name): Declare regno
> as unsigned int. Compare regno with INVALID_REGNUM.
> (output_indirect_thunk): Ditto.
> (output_indirect_thunk_function): Ditto.
> (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
> in the call to output_indirect_thunk_function.
>
> Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.
>
Here is a patch to do the same in ix86_output_function_return. OK
for trunk and GCC 7 branch?
Thanks.
--
H.J.
From c6ca8064f7322b34997ff9702a385aeed76ea35f Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.to...@gmail.com>
Date: Fri, 2 Feb 2018 08:31:40 -0800
Subject: [PATCH] i386: Pass INVALID_REGNUM as invalid register number
* config/i386/i386.c (ix86_output_function_return): Pass
INVALID_REGNUM, instead of -1, as invalid register number to
indirect_thunk_name and output_indirect_thunk.
---
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 5fa5d9eb171..b07f581cd65 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -28940,7 +28940,8 @@ ix86_output_function_return (bool long_p)
{
bool need_thunk = (cfun->machine->function_return_type
== indirect_branch_thunk);
- indirect_thunk_name (thunk_name, -1, need_bnd_p, true);
+ indirect_thunk_name (thunk_name, INVALID_REGNUM, need_bnd_p,
+ true);
if (need_bnd_p)
{
indirect_thunk_bnd_needed |= need_thunk;
@@ -28953,7 +28954,7 @@ ix86_output_function_return (bool long_p)
}
}
else
- output_indirect_thunk (need_bnd_p, -1);
+ output_indirect_thunk (need_bnd_p, INVALID_REGNUM);
return "";
}
--
2.14.3