[Pixman] clang 3.0: Unsupported asm: input constraint with a matching output constraint of incompatible type!

Siarhei Siamashka siarhei.siamashka at gmail.com
Thu May 31 07:50:55 PDT 2012


On Thu, May 31, 2012 at 12:10 AM, Jeremy Huddleston
<jeremyhu at freedesktop.org> wrote:
>
> On May 30, 2012, at 10:03 AM, Siarhei Siamashka <siarhei.siamashka at gmail.com> wrote:
>
>> On Wed, May 30, 2012 at 7:15 PM, Jeremy Huddleston
>> <jeremyhu at freedesktop.org> wrote:
>>> My tinderbox (yuffie) is building pixman master using clang-3.0 (from MacPorts) for x86_64:
>>>
>>> http://tinderbox.x.org/builds/2012-05-30-0005/logs/pixman/#build
>>>
>>> I don't believe the changes were ever reverted.  Perhaps there is an additional issue that I'm not seeing.  Are you seeing this if you use configure.compiler=macports-clang-3.0? -2.9?
>>
>> That's interesting, your clang-3.0 is probably heavily patched.
>
> No, it's not.  The only patches are a couple build fixes for Tiger and a build fix cherry picked from 3.1.
>
>> For
>> example, real clang-3.0 should still have the following bug in it:
>>    http://llvm.org/bugs/show_bug.cgi?id=11438
>
> Yes, clang-3.0 has the bug, and pixman's configure script should be detecting that and disabling the code path that tickles the bug.  In my case, config.log shows that the check is behaving correctly:
>
> configure:12684: checking whether to use MMX intrinsics
> configure:12709: /opt/local/libexec/llvm-3.0/libexec/scan-build/ccc-analyzer -c -mmmx -Winline -O0 -g3 -pipe  -fdiagnostics-show-category=name -Wall -fno-strict-aliasing -fvisibility=hidden -I/Users/jeremy/src/freedesktop/jhbuild/build/include -I/Users/jeremy/src/freedesktop/jhbuild/external/build/include conftest.c >&5
> fatal error: error in backend: Invalid operand for inline asm constraint 'K'!
> configure:12709: $? = 1
> configure: failed program was:
>> configure:12735: result: no

Thanks, I see. But does it really make sense to do pixman build with
optimizations disabled in tinderbox? Any time savings on the
compilation stage (if that's the goal) are likely to be eclipsed by
the increase of the time required for running 'make check'. A test
build on my system shows the following:

$ export CC=clang
$ clang -v
clang version 3.0 (tags/RELEASE_30/final)
Target: x86_64-pc-linux-gnu
Thread model: posix

-------------------------------------------------

$ tar -xzf pixman-0.26.0.tar.gz
$ cd pixman-0.26.0
$ export CFLAGS="-O0 -g3"
$ ./configure --disable-mmx && time make check

[snip]

PASS: a1-trap-test
PASS: pdf-op-test
PASS: region-test
PASS: region-translate-test
PASS: fetch-test
PASS: oob-test
PASS: trap-crasher
PASS: alpha-loop
PASS: scaling-crash-test
PASS: scaling-helpers-test
PASS: gradient-crash-test
region_contains test passed (checksum=D2BF8C73)
PASS: region-contains-test
PASS: alphamap
PASS: stress-test
composite traps test passed (checksum=E3112106)
PASS: composite-traps-test
blitters test passed (checksum=A364B5BF)
PASS: blitters-test
scaling test passed (checksum=80DF1CB2)
PASS: scaling-test
affine test passed (checksum=1EF2175A)
PASS: affine-test
PASS: composite
===================
All 19 tests passed
===================
make[2]: Leaving directory `/tmp/pixman-clang/pixman-0.26.0/test'
make[1]: Leaving directory `/tmp/pixman-clang/pixman-0.26.0/test'
make[1]: Entering directory `/tmp/pixman-clang/pixman-0.26.0'
make[1]: Nothing to be done for `check-am'.
make[1]: Leaving directory `/tmp/pixman-clang/pixman-0.26.0'

real	8m58.844s
user	8m48.680s
sys	0m3.600s

-------------------------------------------------

$ tar -xzf pixman-0.26.0.tar.gz
$ cd pixman-0.26.0
$ export CFLAGS="-O2 -g3"
$ ./configure --disable-mmx && time make check

[snip]

PASS: a1-trap-test
PASS: pdf-op-test
PASS: region-test
PASS: region-translate-test
PASS: fetch-test
PASS: oob-test
PASS: trap-crasher
PASS: alpha-loop
PASS: scaling-crash-test
PASS: scaling-helpers-test
PASS: gradient-crash-test
region_contains test passed (checksum=D2BF8C73)
PASS: region-contains-test
PASS: alphamap
PASS: stress-test
composite traps test passed (checksum=E3112106)
PASS: composite-traps-test
blitters test passed (checksum=A364B5BF)
PASS: blitters-test
scaling test passed (checksum=80DF1CB2)
PASS: scaling-test
affine test failed! (checksum=8B5C5DC1, expected 1EF2175A)
FAIL: affine-test
PASS: composite
=============================================
1 of 19 tests failed
Please report to pixman at lists.freedesktop.org
=============================================
make[2]: *** [check-TESTS] Error 1
make[2]: Leaving directory `/tmp/pixman-clang/pixman-0.26.0/test'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/tmp/pixman-clang/pixman-0.26.0/test'
make: *** [check-recursive] Error 1

real	3m36.488s
user	3m28.380s
sys	0m4.420s


Also enabling optimizations allows to catch clang optimizer bugs,
while using -O0 hides them.

-- 
Best regards,
Siarhei Siamashka


More information about the Pixman mailing list