[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