Can't use -flto with skia

Reported by Bernhard Rosenkraenzer on 2011-08-09
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Linaro GCC
Low
Ramana Radhakrishnan
4.6-2011.07-stable
Low
Unassigned
Linaro GCC Tracking
Undecided
Unassigned

Bug Description

Attempting to build skia (Android graphics library) with -march=armv7-a -mtune=cortex-a9 -mcpu=cortex-a9 -flto results in

external/skia/include/core/SkRefCnt.h:40:51: sorry, unimplemented: gimple bytecode streams do not support machine specific builtin functions on this target

[...]

Ramana Radhakrishnan (ramana) wrote :

Hmmm I have heard this one before. It's because we aren't streaming the neon builtins for LTO correctly. A patch needs to be backported from upstream.

Cheers
Ramana

Changed in gcc-linaro:
assignee: nobody → Ramana Radhakrishnan (ramana)
status: New → Confirmed
Michael Hope (michaelh1) wrote :

Thank you for the bug report. I've confirmed this with android-toolchain-eabi-linaro-4.6-2011.07-0-22-2011-08-09_19-15-34-linux-x86

michaelh@crucis:~/linaro/distros/android$ /home/michaelh/linaro/distros/android/android-toolchain-eabi/bin/arm-eabi-g++ -O2 -flto -mfpu=neon -march=armv7-a -mfloat-abi=softfp SkBitmapProcState_matrixProcs.ii
external/skia/src/core/SkBitmapProcState_matrixProcs.cpp:522:1: sorry, unimplemented: gimple bytecode streams do not support machine specific builtin functions on this target
external/skia/src/core/SkBitmapProcState_matrixProcs.cpp:522:1: sorry, unimplemented: gimple bytecode streams do not support machine specific builtin functions on this target
...

The fault is due the file using NEON intrinsics and GCC not knowing how to serialise these for the later link time optimisation. There is no work-around.

I've set it to low priority as the fault is LTO specific and it exists upstream.

Changed in gcc-linaro:
importance: Undecided → Low
status: Confirmed → Triaged
Changed in gcc-linaro:
status: Triaged → Fix Committed
milestone: none → 4.6-2011.09
Michael Hope (michaelh1) on 2011-09-16
Changed in gcc-linaro:
status: Fix Committed → Fix Released
Michael Hope (michaelh1) wrote :

Won't fix in the stable branch as the change:
 * is large
 * doesn't affect a -stable user
 * is a performance improvement

The patch was backported from upstream.

Related: lp:gcc-linaro/4.6,revno=106794
Related: lp:gcc-linaro/4.6,revno=106795

Changed in gcc-linaro-tracking:
milestone: none → 4.7.0
status: New → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers