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: