[PATCH][PR target/15184] Fix for direct byte access on x86

Uros Bizjak ubizjak@gmail.com
Fri Jan 30 11:02:00 GMT 2015


On Fri, Jan 30, 2015 at 7:12 AM, Jeff Law <law@redhat.com> wrote:

>> Hello!
>>
>>> So here's the updated patch which handles all 4 testcases from the PR as
>>> well as a couple of my own.
>>
>>
>> @@ -0,0 +1,33 @@
>> +/* PR 15184 first two tests, plus two addition ones.  */
>> +/* { dg-do compile } */
>> +/* { dg-options "-O2 -m32 -march=pentiumpro" } */
>>
>> No, we don't want -m32 in dg-options. Please write this part as:
>>
>> /* { dg-do compile { target ia32 } } */
>> /* { dg-options "-O2 -march=pentiumpro" } */
>
> Will update after sniff testing.  Sorry for the noise.

I'll commit the attached patch that fixes this and -fpic problem as
soon as regtest finishes.

2015-01-30  Uros Bizjak  <ubizjak@gmail.com>

    * gcc.target/i386/pr15184-1.c: Compile for ia32 target only.
    (dg-options): Remove -m32.
    (dg-final): Scan for "movb %al" only.
    * gcc.target/i386/pr15184-2.c: Ditto.

Uros.
-------------- next part --------------
Index: gcc.target/i386/pr15184-1.c
===================================================================
--- gcc.target/i386/pr15184-1.c	(revision 220273)
+++ gcc.target/i386/pr15184-1.c	(working copy)
@@ -1,11 +1,10 @@
 /* PR 15184 first two tests, plus two addition ones.  */
-/* { dg-do compile } */
-/* { dg-options "-O2 -m32 -march=pentiumpro" } */
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2 -march=pentiumpro" } */
 
-#define regparm __attribute__((__regparm__(3)))
+#define regparm __attribute__((__regparm__(1)))
 
 extern unsigned int x;
-extern unsigned short y;
 
 void regparm f0(unsigned char c)
 {
@@ -29,5 +28,5 @@
 
 /* Each function should compile down to a byte move from
    the input register into x, possibly at an offset within x.  */
-/* { dg-final { scan-assembler-times "\tmovb\t%al, x" 4 } } */
+/* { dg-final { scan-assembler-times "movb\[ \\t\]+%al" 4 } } */
 
Index: gcc.target/i386/pr15184-2.c
===================================================================
--- gcc.target/i386/pr15184-2.c	(revision 220273)
+++ gcc.target/i386/pr15184-2.c	(working copy)
@@ -1,10 +1,9 @@
 /* PR 15184 second two tests
-/* { dg-do compile } */
-/* { dg-options "-O2 -m32 -march=pentiumpro" } */
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2 -march=pentiumpro" } */
 
-#define regparm __attribute__((__regparm__(3)))
+#define regparm __attribute__((__regparm__(1)))
 
-extern unsigned int x;
 extern unsigned short y;
 
 void regparm g0(unsigned char c)
@@ -18,6 +17,6 @@
 }
 
 /* Each function should compile down to a byte move from
-   the input register into x, possibly at an offset within x.  */
-/* { dg-final { scan-assembler-times "\tmovb\t%al, y" 2 } } */
+   the input register into y, possibly at an offset within y.  */
+/* { dg-final { scan-assembler-times "movb\[ \\t\]+%al" 2 } } */
 


More information about the Gcc-patches mailing list