[PATCH] test/input: Replace negative architecture test by test for 64-bit

Geert Uytterhoeven geert at linux-m68k.org
Tue Feb 12 05:03:50 PST 2013


On Tue, Feb 12, 2013 at 1:40 PM, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>> From: Geert Uytterhoeven <geert at linux-m68k.org>
>> Date: Tue, 12 Feb 2013 11:17:22 +0100
>>
>> The test for double-aligned members in dix_valuator_alloc() currently
>> depends on "if !defined(__i386__) && !defined(__sh__)". This covers
>> m68k, where it fails.
>>
>> According to the comment, the test should be limited to 64-bit
>> platforms only. Hence check if sizeof(long) == 8 instead.
>
> Unfortunately the comment isn't accurate.  There are quite a few
> 32-bit architectures that demand 64-bit alignment of doubles.  At
> least arm, hppa, powerpc and sparc fall into that category.  Those
> that only required 32-bit alignment seemed to be a minority.  Even if
> you include m68k in that category, that's still the case.

Sure there are others.

But what is this test really trying to achieve?
Check if the compiler applied the correct alignment rules for the architecture
it compiled for? That should always be the case, besides compiler bugs.

> My advice would be to add __m68k__ to the list and adjust the comment
> to say something like: "Most architectures, even 32-bit ones, require
> 64-bit alignment".
>
>> Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
>> ---
>> Untested for now
>>
>>  test/input.c |   10 +++++-----
>>  1 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/test/input.c b/test/input.c
>> index be988a4..ed29bdc 100644
>> --- a/test/input.c
>> +++ b/test/input.c
>> @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void)
>>
>>          assert(v);
>>          assert(v->numAxes == num_axes);
>> -#if !defined(__i386__) && !defined(__sh__)
>> -        /* must be double-aligned on 64 bit */
>> -        assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0);
>> -        assert(((void *) v->axes - (void *) v) % sizeof(double) == 0);
>> -#endif
>> +        if (sizeof(long) == 8) {
>> +            /* must be double-aligned on 64 bit */
>> +            assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0);
>> +            assert(((void *) v->axes - (void *) v) % sizeof(double) == 0);
>> +        }
>>          num_axes++;
>>      }

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


More information about the xorg-devel mailing list