[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

gcc 3.4 and 4.0 -- setjmp forbids inlining



        Hi,

 I'm investigating on mpeg2dec build failures[1], and it seems the
 source can only be built perfectly with gcc-3.3.  gcc-3.4 and gcc-4.0
 cause FTBFS.
   The package was only ever built with 3.3.4 in Debian, but upstream
 has used gcc 3.X until 3.4 inclusive to develop libmpeg2.
   The package used to FTBFS under gcc-4.0/m68k[2] because of the usage
 of -O3, but the FTBFS on sparc with gcc 3.4 or 4.0 do not seem to be
 related to -O3.

 While searching for GCC changes relative to the optimization of
 inlining (or lack thereof), it seems the code checking for setjmp() in
 code desiring inlining was already in gcc 3.3[3].  However, the -Winline
 was sometimes broken in 3.x.

 I think setjmp() never have been inlined in mpeg2dec/sparc, but this
 was only seen starting at gcc 3.4, where -Winline was fixed.  Since
 mpeg2dec uses -Wall and -Werror, this caused FTBFS.

 Now, I'd like to hear what people in debian-sparc think of the issue,
 and the best way to resolve it, my goal being to build mpeg2dec with
 gcc 3.4 with the least modification as possible.

 Why does setjmp() forbid inlinging under sparc only?  Should I use gcc
 3.3 under sparc?  Or should I remove -Werror?  Is there a way to use
 -Wall except -Winline?

   Thanks,

[1] gcc 3.4:
http://buildd.debian.org/fetch.php?&pkg=mpeg2dec&ver=0.4.0b-2.2&arch=sparc&stamp=1126954388&file=log&as=raw
gcc 4.0:
http://buildd.debian.org/fetch.php?&pkg=mpeg2dec&ver=0.4.0b-2.1&arch=sparc&stamp=1123681962&file=log&as=raw
[2] gcc 3.4/m68k:
http://buildd.debian.org/fetch.php?&pkg=mpeg2dec&ver=0.4.0b-2.1&arch=m68k&stamp=1123680503&file=log&as=raw
[3]http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/gcc/gcc/gcc/tree-inline.c?rev=1.34.2.20&content-type=text/plain
-- 
Loïc Minier <lool@dooz.org>



Reply to: