On 11/19/18 11:38 AM, Lokesh Janghel wrote:
Thank you Jakub, I update the patch with your comments and tested it.
Please let me know your thoughts/suggestions.

On Mon, Nov 19, 2018 at 4:00 PM Lokesh Janghel
<lokeshjanghe...@gmail.com> wrote:

Thank you Jakub, I update the patch with your comments and tested it.
Please let me know your thoughts/suggestions.


Thanks
Lokesh

On Fri, Nov 16, 2018 at 4:57 PM Jakub Jelinek <ja...@redhat.com> wrote:

On Fri, Nov 16, 2018 at 04:21:25PM +0530, Umesh Kalappa wrote:
My bad ,
attached the same now .

+2018-11-15  Lokesh Janghel <lokeshjanghe...@gmail.com>

Two spaces before < instead of just one.
+
+       PR  target/85667

Only a single space between PR and target.

+       * i386.c (function_value_ms_64): ms_abi insist to use the eax

The filename is relative to the directory with ChangeLog file, so
         * config/i386/i386.c
in this case.  The description should say what you've changed, so
something like:
         * config/i386/i386.c (function_value_ms_64): Return AX_REG instead
         of FIRST_SSE_REG for 4 or 8 byte modes.

--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -9008,7 +9008,7 @@ function_value_ms_64 (machine_mode orig_mode, 
machine_mode mode,
         case 8:
         case 4:
           if (mode == SFmode || mode == DFmode)
-           regno = FIRST_SSE_REG;
+           regno = AX_REG;
           break;

Is there something to back that up, say godbolt.org link with some testcases
showing how does MSVC, clang etc. handle those?
And, because the function starts with:
   unsigned int regno = AX_REG;
the change isn't right, you should remove all of:
         case 8:
         case 4:
           if (mode == SFmode || mode == DFmode)
             regno = FIRST_SSE_REG;
           break;
because the default will do what you want.

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 50e53f0..ec54330 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-15 Lokesh Janghel  <lokeshjanghe...@gmail.com>

Two spaces between date and name.

--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr85667.c
@@ -0,0 +1,29 @@
+/* { dg-options "-O2 " } */
+/* { dg-final { scan-assembler-times "movl\[\t 
\]\.\[a-zA-Z\]\[a-zA-Z\]\[0-9\]\\(%rip\\), %eax" 1} } */

First of all, the test is misplaced, it is clearly x86_64 specific
and probably lp64 only, so it shouldn't be in gcc.dg/ where it will
be run on all targets, but in gcc.target/i386/ and be guarded with
{ target lp64 }.

Second, seems like you'd like to run the testcase, so you'd better have it
/* { dg-do run { target lp64 } } */

The assembler scanning will work only with -masm=att, not -masm=intel
and seems to be very fragile, so I'd suggest have one runtime test and one
compile time test in which you put just the fn1 function.  Why two arbitrary
letters after dot?  That makes on sense.  Either you are looking for .LC\[0-9]*
specifically, or for arbitrary symbol, then use something like
"movl\[^\n\r]*, %eax"
or so (and make sure to use -masm=intel).

More interesting would be
make check ALT_CC_UNDER_TEST=msvc ALT_CXX_UNDER_TEST=msvc++ 
RUNTESTFLAGS='compat.exp struct-layout-1.exp'
(or whatever MSVC driver names are), i.e. try to run the compat testsuites
between MSVC and newly built gcc.

         Jakub



--
Thanks & Regards
Lokesh Janghel
+91-9752984749




Hi.

The patch causes failures in libffi:
https://github.com/libffi/libffi/issues/463

Can you please take a look?
Martin

Reply via email to