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