Re: [gofrontend-dev] Re: libgo patch committed: Add precise stack scan support

2018-12-26 Thread Ian Lance Taylor
On Wed, Dec 26, 2018 at 7:39 AM Cherry Zhang  wrote:
>
> Finally I found an ARM machine and was able to build ARM32 gcc on it, and 
> reproduced the failures. The Go programs aborted, in parse_lsda_header, 
> called from probestackmaps in the runtime startup. It seems that 
> _Unwind_GetLanguageSpecificData doesn't return a valid LSDA when called from 
> a callback from _Unwind_Backtrace.
>
> Reading the unwinder's source code in libgcc, it seems that a function may 
> have a "predefined" personality function, and in this case an ARM-specific 
> "compact" model is used, which doesn't use the standard LSDA. 
> _Unwind_GetLanguageSpecificData doesn't distinguish this and simply assumes 
> the "generic" model is used, i.e. not used with a "predefined" personality 
> function. This works fine if _Unwind_GetLanguageSpecificData is called from a 
> non-predefined personality function, but it doesn't work if it is called 
> during _Unwind_Backtrace.
>
> The patch below (also CL 
> https://go-review.googlesource.com/c/gofrontend/+/155758) will fix the 
> problem, by checking which model is used before calling 
> _Unwind_GetLanguageSpecificData.
>
> Alternatively, we could change _Unwind_GetLanguageSpecificData in libgcc to 
> returning NULL when a predefined personality function is used.
>
> Let me know what you think.
>
> Thanks,
> Cherry
>
> diff --git a/libgo/runtime/go-unwind.c b/libgo/runtime/go-unwind.c
> index f4bbfb60..388d7c70 100644
> --- a/libgo/runtime/go-unwind.c
> +++ b/libgo/runtime/go-unwind.c
> @@ -646,6 +646,17 @@ findstackmaps (struct _Unwind_Context *context, 
> _Unwind_Ptr *ip, _Unwind_Ptr *sp
>_sleb128_t index;
>int size;
>
> +#ifdef __ARM_EABI_UNWINDER__
> +  {
> +_Unwind_Control_Block *ucbp;
> +ucbp = (_Unwind_Control_Block *) _Unwind_GetGR (context, 12);
> +if (*ucbp->pr_cache.ehtp & (1u << 31))
> +  // The "compact" model is used, with one of the predefined
> +  // personality functions. It doesn't have standard LSDA.
> +  return NOTFOUND_OK;
> +  }
> +#endif
> +
>language_specific_data = (const unsigned char *)
>  _Unwind_GetLanguageSpecificData (context);
>

Thanks.

Committed to mainline.

Ian


Re: [PATCH/AARCH64] Add OcteonTX for -mcpu=

2018-12-26 Thread Andrew Pinski
On Fri, Nov 2, 2018 at 4:06 AM Richard Earnshaw (lists)
 wrote:
>
> On 01/11/2018 01:52, Andrew Pinski wrote:
> > On Tue, Oct 30, 2018 at 10:21 AM Richard Earnshaw (lists)
> >  wrote:
> >>
> >> On 30/10/2018 17:06, Andrew Pinski wrote:
> >>> Hi all,
> >>>   There was a name change of the Products, ThunderX T81 and ThunderX
> >>> T83 to OcteonTX family name.  This change was done a few years ago but
> >>> I had not submmitted the change at that time.  This is also the first
> >>> patch in a series to add OcteonTX 2 support to GCC.
> >>>
> >>> OK?  Bootstrapped and tested on aarch64-linux-gnu with no regression.
> >>>
> >>
> >> You're missing a documentation update.
> >
> > Oops.  I knew I missed that too.
> > Here is the updated patch with the doc update included.
> >
> > Thanks,
> > Andrew Pinski
> >
> > gcc/ChangeLog:
> > * config/aarch64/aarch64-cores.def (octeontx): New.
> > (octeontx81): Likewise.
> > (octeontx83): Likewise.
> > * config/aarch64/aarch64-tune.md: Regenerate.
> > * doc/invoke.texi (AArch64 Options) [mtune]: Add octeontx, octeontx81
> > and octeontx83.
> >
>
> OK.

This was what I committed finally.  Update for the new cores that was
added after my previous patch.

Thanks,
Andrew Pinski
Index: gcc/ChangeLog
===
--- gcc/ChangeLog   (revision 267426)
+++ gcc/ChangeLog   (working copy)
@@ -1,3 +1,12 @@
+2018-12-26  Andrew Pinski  
+
+   * config/aarch64/aarch64-cores.def (octeontx): New.
+   (octeontx81): Likewise.
+   (octeontx83): Likewise.
+   * config/aarch64/aarch64-tune.md: Regenerate.
+   * doc/invoke.texi (AArch64 Options) [mtune]: Add octeontx, octeontx81
+   and octeontx83.
+
 2018-12-24  Martin Sebor  
 
* gimple-fold.c (get_range_strlen_tree): Factored out of
Index: gcc/config/aarch64/aarch64-cores.def
===
--- gcc/config/aarch64/aarch64-cores.def(revision 267426)
+++ gcc/config/aarch64/aarch64-cores.def(working copy)
@@ -58,6 +58,12 @@
this order is required to handle variant correctly. */
 AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO,thunderxt88,  
0x43, 0x0a1, 0)
 AARCH64_CORE("thunderxt88",   thunderxt88,   thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderxt88,  0x43, 
0x0a1, -1)
+
+/* OcteonTX is the official name for T81/T83. */
+AARCH64_CORE("octeontx",  octeontx,  thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 
0x0a0, -1)
+AARCH64_CORE("octeontx81",octeontxt81,   thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 
0x0a2, -1)
+AARCH64_CORE("octeontx83",octeontxt83,   thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 
0x0a3, -1)
+
 AARCH64_CORE("thunderxt81",   thunderxt81,   thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 
0x0a2, -1)
 AARCH64_CORE("thunderxt83",   thunderxt83,   thunderx,  8A,  
AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 
0x0a3, -1)
 
Index: gcc/config/aarch64/aarch64-tune.md
===
--- gcc/config/aarch64/aarch64-tune.md  (revision 267426)
+++ gcc/config/aarch64/aarch64-tune.md  (working copy)
@@ -1,5 +1,5 @@
 ;; -*- buffer-read-only: t -*-
 ;; Generated automatically by gentune.sh from aarch64-cores.def
 (define_attr "tune"
-   
"cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,ares,tsv110,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55"
+   
"cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,ares,tsv110,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55"
(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
Index: gcc/doc/invoke.texi
===
--- gcc/doc/invoke.texi (revision 267426)
+++ gcc/doc/invoke.texi (working copy)
@@ -15638,6 +15638,7 @@
 @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
 @samp{cortex-a76}, @samp{ares}, @samp{exynos-m1}, @samp{emag}, @samp{falkor},
 @samp{qdf24xx}, @samp{saphira}, @samp{phecda}, @samp{xgene1}, @samp{vulcan},
+@samp{octeontx}, @samp{octeontx81},  @samp{octeontx83},
 @samp{thunderx}, @samp{thunderxt88}, @samp{thunderxt88p1}, 

Re: [PATCH][Arm] Fix FPU configurations for Cortex-R7 and Cortex-R8

2018-12-26 Thread Gerald Pfeifer
On Wed, 28 Nov 2018, Andre Vieira (lists) wrote:
> Here are the documentation bits I forgot, I've also opened  PR 88224 in
> bugzilla for this issue.
> 
> Is this OK for trunk and gcc-8 backport?
> 
> gcc/ChangeLog:
> 2018-11-28  Andre Vieira  
> 
> PR target/88224
> * config/arm/arm-cpus.in (armv7-r): Add FP16conv configurations.
> (cortex-r7, cortex-r8): Update default and add new configuration.
> * doc/invoke.texi (armv7-r): Add two new vfp options.
> (nofp.dp): Add cortex-r7 and cortex-r8 to the list of targets that
> support this option.

Should this be covered in the GCC 9 release notes at 
https://gcc.gnu.org/gcc-9/changes.html ?

(See https://gcc.gnu.org/about.html for how to go about web changes.)

Gerald


Re: [PATCH][GCC][DOC] Remove obsolete arm and aarch64 CPU names from invoke.texi

2018-12-26 Thread Gerald Pfeifer
On Fri, 23 Nov 2018, Sam Tebbs wrote:
> The mtune= documentation in doc/invoke.texi contains some obsolete CPU names
> that have been removed from the Arm and AArch64 backends. This patch removes
> them.

I believe this should also be covered in the GCC 9 release notes
at https://gcc.gnu.org/gcc-9/changes.html ?

(See https://gcc.gnu.org/about.html for how to go about web changes.)

Gerald


[Committed] PR fortran/85357 -- add testcase

2018-12-26 Thread Steve Kargl
After reviewing the PR audit trail, I agree with Janus'
comments #4 and #6, and I have converted his code example
in comment #7 to the committed testcase.  The originally
reported ICE is gone on trunk, branch-7, and branch-8.
However, branch-7 and branch-8, the compilation terminates with 

(null):0: confused by earlier errors, bailing out

That (null) was the original source of the ICE, but the error
machinery now protects against NULL pointer references.

2018-12-26  Steven G. Kargl  

PR fortran/85357
* gfortran.df/pr85357.f90: New test.

 
-- 
Steve
Index: gcc/testsuite/gfortran.dg/pr85357.f90
===
--- gcc/testsuite/gfortran.dg/pr85357.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr85357.f90	(working copy)
@@ -0,0 +1,17 @@
+! { dg-do compile }
+module base
+   implicit none
+contains
+   subroutine summation(i)
+  integer, intent(in) :: i
+   end subroutine
+end module
+
+module extended
+   use base
+   implicit none
+contains
+   subroutine summation()  ! { dg-error "is already defined" }
+   end subroutine  ! { dg-error "Expecting END MODULE statement" }
+end module
+! { dg-prune-output "is already defined at" }


[Committed] PR fortran/85407 -- convert assert to fatal error

2018-12-26 Thread Steve Kargl
Back in April, I told Harald I would get around to committing
the attached patch.  Well, "around" has arrived.  The patch
has been tested on i586-*-freebsd and x86_64-*-freebsd.

The patch converts an assert into a gfc_fatal_error(), which
gives a user some information about the failure.  There is
no testcase as one need to go out of one's way to corrupt
the components in a derived typed in a *.mod file.

2018-12-26  Harald Anlauf  

PR fortran/85407
* module.c (read_module): Convert assert to fatal error to give 
user a sensible error message.

-- 
Steve
Index: gcc/fortran/module.c
===
--- gcc/fortran/module.c	(revision 267418)
+++ gcc/fortran/module.c	(working copy)
@@ -5180,7 +5180,13 @@ read_module (void)
 	  if (p->u.pointer == NULL)
 		associate_integer_pointer (p, c);
 	  mio_pool_string (_name);
-	  gcc_assert (comp_name == c->name);
+	  if (comp_name != c->name)
+		{
+		  gfc_fatal_error ("Mismatch in components of derived type "
+   "%qs from %qs at %C: expecting %qs, "
+   "but got %qs", sym->name, sym->module,
+   c->name, comp_name);
+		}
 	  skip_list (1); /* component end.  */
 	}
 	  mio_rparen (); /* component list closing.  */


Re: [PATCH] Don't run ident tests on powerpc-darwin

2018-12-26 Thread Iain Sandoe


> On 26 Dec 2018, at 16:07, David Edelsohn  wrote:
> 
> On Sun, Dec 23, 2018 at 6:16 AM Iain Sandoe  wrote:
>> 
>> Hi
>> 
>> The c-c++-common tests fail (or XPASS depending on which) on Darwin
>> because it doesn't currently emit .ident marker.
>> 
>> For powerpc darwin (and, I think, AIX - hence copying David), there’s no
>> .ident support in the assembler, and we need to skip the tests.
>> 
>> In this case, I suggest that it’s not worth having a target-supports entry.
>> This is because what a target chooses to emit for -fident is controlled by
>> a target hook and therefore there’s no guarantee that a target-supports
>> that triggers off “ .ident” in the asm would be generically useful.
>> 
>> OTOH, if the testsuite maintainers prefer a support .. it can be done ;-)
>> 
>> OK for trunk?
>> Iain
>> 
>> gcc/testsuite/
>> 
>>* c-c++-common/ident-0a.c: Skip for powerpc-darwin.
>>* c-c++-common/ident-0b.c: Likewise.
>>* c-c++-common/ident-1a.c: Likewise.
>>* c-c++-common/ident-1b.c: Likewise.
>>* c-c++-common/ident-2a.c: Likewise.
>>* c-c++-common/ident-2b.c: Likewise.
> 
> AIX Assembler doesn't support "ident", but GCC doesn't emit an "ident"
> string on AIX.  The failure on AIX is the assembler output doesn't
> match the expected result, but it doesn't fail to assemble due to an
> unrecognized pseudo-op.

Right that’s the cause of the XPASSes and FAILs  respectively.
> 
> Does GCC generate an ident pseudo-op on Darwin?  
> Maybe because of
> common code inherited by Darwin that defines TARGET_ASM_OUTPUT_IDENT.

no that is disabled there too.

Darwin was not trying to emit the .ident (TARGET_ASM_OUTPUT_IDENT was 
undefined).

That leads to the effect noted above.  Since the assembler doesn’t support 
.ident we can’t fix the tests by adding TARGET_ASM_OUTPUT_IDENT, so I’ve 
skipped them.  

If, one day, we fix the assembler to accept .ident (or use a more modern one 
that already does) then those skip lines can be removed.

> I had been testing an expected fail for those tests on AIX, e.g.,

Ah, that might be an alternate scheme, indeed.  However, for now (on Darwin) I 
just settled for the simple one.

Iain

> 
> Index: ident-2b.c
> ===
> --- ident-2b.c  (revision 267421)
> +++ ident-2b.c  (working copy)
> @@ -5,4 +5,4 @@
> /* { dg-skip-if "no assembler .ident support" { powerpc*-*-darwin* } } */
> int ident;
> 
> -/* { dg-final { scan-assembler-times "GCC: " 1 } } */
> +/* { dg-final { scan-assembler-times "GCC: " 1 { xfail
> powerpc-ibm-aix* } } } */
> 
> Thanks, David



Re: [PATCH] Don't run ident tests on powerpc-darwin

2018-12-26 Thread David Edelsohn
On Sun, Dec 23, 2018 at 6:16 AM Iain Sandoe  wrote:
>
> Hi
>
> The c-c++-common tests fail (or XPASS depending on which) on Darwin
> because it doesn't currently emit .ident marker.
>
> For powerpc darwin (and, I think, AIX - hence copying David), there’s no
> .ident support in the assembler, and we need to skip the tests.
>
> In this case, I suggest that it’s not worth having a target-supports entry.
> This is because what a target chooses to emit for -fident is controlled by
> a target hook and therefore there’s no guarantee that a target-supports
> that triggers off “ .ident” in the asm would be generically useful.
>
> OTOH, if the testsuite maintainers prefer a support .. it can be done ;-)
>
> OK for trunk?
> Iain
>
> gcc/testsuite/
>
> * c-c++-common/ident-0a.c: Skip for powerpc-darwin.
> * c-c++-common/ident-0b.c: Likewise.
> * c-c++-common/ident-1a.c: Likewise.
> * c-c++-common/ident-1b.c: Likewise.
> * c-c++-common/ident-2a.c: Likewise.
> * c-c++-common/ident-2b.c: Likewise.

AIX Assembler doesn't support "ident", but GCC doesn't emit an "ident"
string on AIX.  The failure on AIX is the assembler output doesn't
match the expected result, but it doesn't fail to assemble due to an
unrecognized pseudo-op.

Does GCC generate an ident pseudo-op on Darwin?  Maybe because of
common code inherited by Darwin that defines TARGET_ASM_OUTPUT_IDENT.

I had been testing an expected fail for those tests on AIX, e.g.,

Index: ident-2b.c
===
--- ident-2b.c  (revision 267421)
+++ ident-2b.c  (working copy)
@@ -5,4 +5,4 @@
 /* { dg-skip-if "no assembler .ident support" { powerpc*-*-darwin* } } */
 int ident;

-/* { dg-final { scan-assembler-times "GCC: " 1 } } */
+/* { dg-final { scan-assembler-times "GCC: " 1 { xfail
powerpc-ibm-aix* } } } */

Thanks, David


Re: [gofrontend-dev] Re: libgo patch committed: Add precise stack scan support

2018-12-26 Thread Cherry Zhang via gcc-patches
Finally I found an ARM machine and was able to build ARM32 gcc on it, and
reproduced the failures. The Go programs aborted, in parse_lsda_header,
called from probestackmaps in the runtime startup. It seems that
_Unwind_GetLanguageSpecificData doesn't return a valid LSDA when called
from a callback from _Unwind_Backtrace.

Reading the unwinder's source code in libgcc, it seems that a function may
have a "predefined" personality function, and in this case an ARM-specific
"compact" model is used, which doesn't use the standard LSDA.
_Unwind_GetLanguageSpecificData doesn't distinguish this and simply assumes
the "generic" model is used, i.e. not used with a "predefined" personality
function. This works fine if _Unwind_GetLanguageSpecificData is called from
a non-predefined personality function, but it doesn't work if it is called
during _Unwind_Backtrace.

The patch below (also CL
https://go-review.googlesource.com/c/gofrontend/+/155758) will fix the
problem, by checking which model is used before calling
_Unwind_GetLanguageSpecificData.

Alternatively, we could change _Unwind_GetLanguageSpecificData in libgcc to
returning NULL when a predefined personality function is used.

Let me know what you think.

Thanks,
Cherry

diff --git a/libgo/runtime/go-unwind.c b/libgo/runtime/go-unwind.c
index f4bbfb60..388d7c70 100644
--- a/libgo/runtime/go-unwind.c
+++ b/libgo/runtime/go-unwind.c
@@ -646,6 +646,17 @@ findstackmaps (struct _Unwind_Context *context,
_Unwind_Ptr *ip, _Unwind_Ptr *sp
   _sleb128_t index;
   int size;

+#ifdef __ARM_EABI_UNWINDER__
+  {
+_Unwind_Control_Block *ucbp;
+ucbp = (_Unwind_Control_Block *) _Unwind_GetGR (context, 12);
+if (*ucbp->pr_cache.ehtp & (1u << 31))
+  // The "compact" model is used, with one of the predefined
+  // personality functions. It doesn't have standard LSDA.
+  return NOTFOUND_OK;
+  }
+#endif
+
   language_specific_data = (const unsigned char *)
 _Unwind_GetLanguageSpecificData (context);



On Tue, Dec 18, 2018 at 10:24 PM Matthias Klose  wrote:

> Cherry, see
> https://gcc.gnu.org/ml/gcc-testresults/2018-12/msg02241.html
> https://gcc.gnu.org/ml/gcc-testresults/2018-12/msg02240.html
>
> still shows ~180 test failures on ARM32.  Sorry, no access to an ARM32 box
> until
> next year.
>
> Matthias
>
> On 13.12.18 00:27, Ian Lance Taylor wrote:
> > On Wed, Dec 12, 2018 at 8:10 AM Cherry Zhang 
> wrote:
> >>
> >> Thank you, Matthias!
> >>
> >> From the log, essentially all the tests aborted. The only place the new
> code can cause abort on all programs that I can think of is in the runtime
> startup code, probestackmaps, which calls value_size, which aborts due to
> an unhandled case. I haven't been able to try out on an ARM machine, but I
> managed to cross-compile a Go program and visually inspect the exception
> table. The type table's encoding is DW_EH_PE_absptr, which is indeed not
> handled, which will cause abort.
> >>
> >> I send https://go-review.googlesource.com/c/gofrontend/+/153857 (also
> as below). Hopefully this will fix the problem.
> >>
> >> Thanks,
> >> Cherry
> >>
> >> diff --git a/libgo/runtime/go-unwind.c b/libgo/runtime/go-unwind.c
> >> index c44755f9..f4bbfb60 100644
> >> --- a/libgo/runtime/go-unwind.c
> >> +++ b/libgo/runtime/go-unwind.c
> >> @@ -318,6 +318,8 @@ value_size (uint8_t encoding)
> >>case DW_EH_PE_sdata8:
> >>case DW_EH_PE_udata8:
> >>  return 8;
> >> +  case DW_EH_PE_absptr:
> >> +return sizeof(uintptr);
> >>default:
> >>  break;
> >>  }
> >
> >
> > Thanks.
> >
> > Committed to mainline.
> >
> > Ian
> >
> >
> >
> >> On Tue, Dec 11, 2018 at 7:03 PM Matthias Klose  wrote:
> >>>
> >>> On 11.12.18 22:01, Cherry Zhang wrote:
>  On Tue, Dec 11, 2018 at 3:51 PM Ian Lance Taylor 
> wrote:
> 
> > On Tue, Dec 11, 2018 at 6:52 AM Matthias Klose 
> wrote:
> >>
> >> On 10.12.18 16:54, Cherry Zhang wrote:
> >>> On Mon, Dec 10, 2018 at 1:41 AM Matthias Klose 
> > wrote:
> >>>
>  On 06.12.18 00:09, Ian Lance Taylor wrote:
> > This libgo patch by Cherry Zhang adds support for precise stack
> > scanning to the Go runtime.  This uses per-function stack maps
> stored
> > in the exception tables in the language-specific data area.  The
> > compiler needs to generate these stack maps; currently this is
> only
> > done by a version of LLVM, not by GCC.  Each safepoint in a
> function
> > is associated with a (real or dummy) landing pad, and its "type
> info"
> > in the exception table is a pointer to the stack map. When a
> stack is
> > scanned, the stack map is found by the stack unwinding code.
> >
> > For precise stack scan we need to unwind the stack. There are
> three
>  cases:
> >
> > - If a goroutine is scanning its own stack, it can unwind the
> stack
> > and scan the frames.
> >
> > - If a goroutine 

Re: [Patch] Bug 88521 - gcc 9.0 from r266355 miscompile x265 for mingw-w64 target

2018-12-26 Thread Lokesh Janghel
Hi,

Here is the patch for the issue.
Please let me know your thoughts.

On Fri, Dec 21, 2018 at 3:16 PM JonY <10wa...@gmail.com> wrote:
>
> On 12/21/18 9:08 AM, Uros Bizjak wrote:
> > On Thu, Dec 20, 2018 at 1:09 PM Jakub Jelinek  wrote:
> >>
> >> On Thu, Dec 20, 2018 at 01:42:15PM +0530, Lokesh Janghel wrote:
> >>> Hi Mateuszb,
> >>>
> >>> I tested with your proposition patch and it is working right.
> >>> I also added the patch with test case.
> >>> Please let me know your thoughts/suggestions.
> >>
> >> ChangeLog entry is missing, please write it (and mention there
> >> Mateusz's name/mail as he wrote the i386.c part).
> >>
>
> Patch looks good to me, but please add a ChangeLog.
>
>


-- 
Thanks & Regards
Lokesh Janghel
+91-9752984749


88521.patch
Description: Binary data