[kde-freebsd] Clang 3.2 causes a machine code error on qt4-webkit build

Schaich Alonso alonsoschaich at fastmail.fm
Mon Feb 18 08:14:29 UTC 2013


On Tue, 12 Feb 2013 16:36:48 +0900
RyōTa SimaMoto <liangtai.s4 at gmail.com> wrote:

> Clang 3.2 causes a machine code error on qt4-webkit build
> 
> Hi,
> Compilation a C++ file of www/qt4-webkit fails with an error of "Bad
> machine code".  This happens on the base llvm/clang (3.2 of 9-STABLE).
> I do not know whether it is an bug or not, and where it comes from.
> 
> Two months ago, qt4-webkit-4.8.4 can be built successfully by Clang 3.1.
> Now I tried it again with the upgraded version (3.2), it stops with a
> fatal error message as following (wrapped snippet) during creation of a
> object file from the source file
> src/3rdparty/webkit/Source/WebCore/html/parser/HTMLScriptRunner.cpp:
> 
>   # Machine code for function
> _ZN3WTF5DequeIN7WebCore13PendingScriptELj0EE14expand
>   CapacityEv: Post SSA
>   Frame Objects:
>     fi#-1: size=4, align=4, fixed, at location [SP+4]
> 
>   BB#0: derived from LLVM BB %entry
>           %vreg185<def> = MOVPC32r 0, %ESP<imp-use>; GR32:%vreg185
>           %vreg77<def> = COPY %vreg185<kill>; GR32_NOSP:%vreg77 GR32:%vreg185
> ....Snip a long sequence of machine codes.....
> ....Full log (784 lines) is in the attached archive file....
>   BB#61: derived from LLVM BB %unwind_resume
>       Predecessors according to CFG: BB#17 BB#32 BB#54
>           %vreg70<def> = COPY %vreg198<kill>; GR32:%vreg70,%vreg198
>           ADJCALLSTACKDOWN32 4, %ESP<imp-def>, %EFLAGS<imp-def,dead>,
> %ESP<imp-use>
>           %vreg178<def> = COPY %ESP; GR32:%vreg178
>           MOV32mr %vreg178<kill>, 1, %noreg, 0, %noreg, %vreg70<kill>; \
>           mem:ST4[Stack] GR32:%vreg178,%vreg70
>           %EBX<def> = COPY %vreg77<kill>; GR32_NOSP:%vreg77
>           CALLpcrel32 <ga:@_Unwind_Resume>[TF=6], <regmask>, %ESP<imp-use>, \
>           %EBX<imp-use,kill>, %ESP<imp-def>
>           ADJCALLSTACKUP32 4, 0, %ESP<imp-def>, %EFLAGS<imp-def,dead>,
> %ESP<imp-use>
> 
>   *** Bad machine code: Using an undefined physical register ***
>   - function:    _ZN3WTF5DequeIN7WebCore13PendingScriptELj0EE14expandCapacityEv
>   - basic block: BB#46 lpad7.i.i (0x2bc8a320)
>   - instruction: %vreg157<def> = COPY %EAX; GR32:%vreg157
>   - operand 1:   %EAX
>   fatal error: error in backend: Found 1 machine code errors.
> 
> This can be reporduced in four steps:
>   $ cd  /usr/ports/www/qt4-webkit
>   $ make  configure
>   $ cd  work/qt-everywhere-opensource-src-4.8.4/src/3rdparty/webkit/Source
>   $ gmake  .obj/release-static/HTMLScriptRunner.o
> 
> // I did a workaround as borrowing the same object file from another build tree
> // that was configured with qt4/mkspecs/freebsd-g++.

src/3rdparty/webkit/Source/.obj/release-static/HTMLScriptRunner.o
is not a make target (on the config created by ports).

The error you are getting is likely a bug in clang, compiler-rt, or somewhere
else in the clang world. Please file a bug report on this.

Alonso


More information about the kde-freebsd mailing list