Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Sep 2010 09:49:03 +0200
From:      Olivier Smedts <olivier@gid0.org>
To:        Dimitry Andric <dim@freebsd.org>
Cc:        Rene Ladan <rene@freebsd.org>, Roman Divacky <rdivacky@freebsd.org>, Bartosz Stec <admin@kkip.pl>, current@freebsd.org
Subject:   Re: Clang now builds world and kernel, on i386 and amd64
Message-ID:  <AANLkTinYU4GmtN-fRM7P_qfQ1N=9gZZk=RHvHcusnPPK@mail.gmail.com>
In-Reply-To: <AANLkTikefwBYHQUg%2BOKXuUp4KeR-Dh%2BMaPqF35Ejn7f=@mail.gmail.com>
References:  <4C99A53E.7060707@FreeBSD.org> <AANLkTi=_ZpYZ7XwHJOYuRMOFCGebRwD=YEYORKnMmC0s@mail.gmail.com> <4C9A32B8.60204@kkip.pl> <4C9A6A38.4080307@freebsd.org> <4C9A7203.8010701@kkip.pl> <20100923065134.GA31455@freebsd.org> <4C9B3207.2070302@kkip.pl> <AANLkTikD__CJy88CAtV2d7Tso20dG5OFtVLs845F%2Bx3X@mail.gmail.com> <4CA0743F.8050408@FreeBSD.org> <AANLkTinLBqqGXe%2Bg_hM8hucOvi1s8bqfaSXGzeuqYwAF@mail.gmail.com> <AANLkTikefwBYHQUg%2BOKXuUp4KeR-Dh%2BMaPqF35Ejn7f=@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
2010/9/27 Olivier Smedts <olivier@gid0.org>:
> 2010/9/27 Olivier Smedts <olivier@gid0.org>:
>> 2010/9/27 Dimitry Andric <dim@freebsd.org>:
>>> On 2010-09-27 09:32, Olivier Smedts wrote:
>>>>
>>>> 2010/9/23 Bartosz Stec<admin@kkip.pl>:
>>>
>>> ...
>>>>>
>>>>> Assertion failed: (false&& =A0"Ran out of registers during register
>>>>> allocation!"), function assignRegOrStackSlotAtInterval, file
>>>>>
>>>>> /usr/src/lib/clang/libllvmcodegen/../../../contrib/llvm/lib/CodeGen/R=
egAllocLinearScan.cpp,
>>>>> line 1196.
>>>
>>> ...
>>>>
>>>> Same error here with yesterday's -CURRENT, but not at the same time
>>>> (the running system was compiled using gcc) :
>>>
>>> As with Bartosz, could you please remove the CPU-specific flags from
>>> make.conf, and try again?
>>
>> Ok, I'll post the results later (it was the same with -DNDEBUG).
>
> Was not OK with :
> CPUTYPE=3Dathlon-xp
> CFLAGS=3D-O2 -pipe -march=3Dnative -fomit-frame-pointer
> NO_CPU_CFLAGS=3Dyes
> COPTFLAGS=3D-O2 -pipe -march=3Dnative -fomit-frame-pointer
> NO_CPU_COPTFLAGS=3Dyes
>
> Is OK with :
> CPUTYPE=3Dathlon-xp
> CFLAGS=3D-O2 -pipe -fomit-frame-pointer
> NO_CPU_CFLAGS=3Dyes
> COPTFLAGS=3D-O2 -pipe -fomit-frame-pointer
> NO_CPU_COPTFLAGS=3Dyes
>
> I'll try with other -march (i686 and athlon) and post results.

So, with "-march=3Dathlon", buildworld is ok.

With "-march=3Dathlon -msse" or "-march=3Dathlon-xp" or "-march=3Dnative",
buildworld fails here :
clang -c -O2 -pipe -march=3Dathlon -msse -fomit-frame-pointer -DIN_GCC
-DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -DHAVE_GTHR_DEFAULT
-I/usr/src/gnu/lib/libgcc/../../../contrib/gcclibs/include
-I/usr/src/gnu/lib/libgcc/../../../contrib/gcc/config
-I/usr/src/gnu/lib/libgcc/../../../contrib/gcc -I.
-I/usr/src/gnu/lib/libgcc/../../usr.bin/cc/cc_tools -std=3Dgnu99
-fvisibility=3Dhidden -DHIDE_EXPORTS -fPIC -fexceptions -D__GLIBC__=3D3
-DElfW=3D__ElfN -o unwind-dw2.o
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind-dw2.c
Assertion failed: (!spillIs.empty() && "No spill intervals?"),
function assignRegOrStackSlotAtInterval, file
/usr/src/lib/clang/libllvmcodegen/../../../contrib/llvm/lib/CodeGen/RegAllo=
cLinearScan.cpp,
line 1287.
Stack dump:
0.      Program arguments: /usr/obj/usr/src/tmp/usr/bin/clang -cc1
-triple i386-undermydesk-freebsd9.0 -S -disable-free -main-file-name
unwind-dw2.c -pic-level 2 -mconstructor-aliases -target-cpu athlon
-target-feature +sse -resource-dir
/usr/obj/usr/src/tmp/usr/lib/clang/2.8 -D IN_GCC -D IN_LIBGCC2 -D
__GCC_FLOAT_NOT_NEEDED -D HAVE_GTHR_DEFAULT -D HIDE_EXPORTS -D
__GLIBC__=3D3 -D ElfW=3D__ElfN -I
/usr/src/gnu/lib/libgcc/../../../contrib/gcclibs/include -I
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/config -I
/usr/src/gnu/lib/libgcc/../../../contrib/gcc -I . -I
/usr/src/gnu/lib/libgcc/../../usr.bin/cc/cc_tools -O2 -std=3Dgnu99
-ferror-limit 19 -fmessage-length 118 -fvisibility hidden -fexceptions
-fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o
/tmp/cc-CfyzYr.s -x c
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind-dw2.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Linear Scan Register Allocator' on function
'@_Unwind_GetGR'
clang: error: clang frontend command failed due to signal 6 (use -v to
see invocation)
*** Error code 250
Stop in /usr/src/gnu/lib/libgcc.

But if I
# cd /usr/src/gnu/lib/libgcc
# make
then unwind-dw2.c compiles fine.

So the problem seems to be with clang
(/usr/obj/usr/src/tmp/usr/bin/clang) when compiled with SSE on Athlon.
Can't try with AMD k8 or Intel CPUs, my core2 follows -STABLE.

>
>>> I guess there is something borked in LLVM's Athlon optimization, so it
>>> is probably better to not try to tickly those bugs for now.
>>>
>>>
>>>> # grep -vE '^#|^$' /etc/make.conf
>>>> KERNCONF=3DXPC
>>>> CPUTYPE=3Dathlon-xp
>>>> CFLAGS=3D-O2 -pipe -march=3Dnative -fomit-frame-pointer
>>>
>>> Using CPUTYPE=3D and -march=3D seems a bit redundant. :)
>>
>> Not with NO_CPU_CFLAGS=3Dyes and NO_CPU_COPTFLAGS=3Dyes (if you want to
>> use -march=3Dnative, that's the best thing to do).
>>
>>>
>>>> clang -c -O2 -pipe -march=3Dnative -fomit-frame-pointer -DIN_GCC
>>>> -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED =A0-DHAVE_GTHR_DEFAULT
>>>> -I/usr/src/gnu/lib/libgcc/../../../contrib/gcclibs/include
>>>> -I/usr/src/gnu/lib/libgcc/../../../contrib/gcc/config
>>>> -I/usr/src/gnu/lib/libgcc/../../../contrib/gcc -I.
>>>> -I/usr/src/gnu/lib/libgcc/../../usr.bin/cc/cc_tools -std=3Dgnu99
>>>> -fvisibility=3Dhidden -DHIDE_EXPORTS -fPIC -fexceptions -D__GLIBC__=3D=
3
>>>> -DElfW=3D__ElfN -o unwind-dw2.o
>>>> /usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind-dw2.c
>>>> Assertion failed: (!spillIs.empty()&& =A0"No spill intervals?"),
>>>> function assignRegOrStackSlotAtInterval, file
>>>>
>>>> /usr/src/lib/clang/libllvmcodegen/../../../contrib/llvm/lib/CodeGen/Re=
gAllocLinearScan.cpp,
>>>> line 1287.
>>>
>>> I haven't yet seen this one before. =A0If I can reproduce it, I will
>>> report it upstream, and see if they can come up with a fix.
>
> Anything I can provide to help with that ?
>
>>
>> Thanks !
>>
>> --
>> Olivier Smedts
>
> --
> Olivier Smedts

--=20
Olivier Smedts=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=A0 _
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 ASCII ribbon campaign ( )
e-mail: olivier@gid0.org=A0 =A0 =A0 =A0 - against HTML email & vCards=A0 X
www: http://www.gid0.org=A0 =A0 - against proprietary attachments / \

=A0 "Il y a seulement 10 sortes de gens dans le monde :
=A0 ceux qui comprennent le binaire,
=A0 et ceux qui ne le comprennent pas."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTinYU4GmtN-fRM7P_qfQ1N=9gZZk=RHvHcusnPPK>