Hello list,

Recently, Android team is working on integrating Linaro toolchain for
Android and NDK.  According to the initial benchmark results[1],
Linaro GCC is competitive comparing to Google toolchain.  In the
meanwhile, we are trying to enable gcc-4.5 specific features such as
Graphite and LTO (Link Time Optimization) in order to make the best
choice for Android build system and NDK usage.  However, I encountered
a problem about LTO and would like to ask help from toolchain WG.

Assuming Linaro Toolchain for Android is installed in directory
/tmp/android-toolchain-eabi, you can obtain Google's toolchain
benchmark suite by git:
  # git clone git://android.git.kernel.org/toolchain/benchmark.git

You have to apply the attached patch in order to make benchmark suite
work[2].  Then, change directory to skia:
  # cd benchmark/skia
And build skia bench with LTO enabled:
  # ../scripts/bench.py --action=build
--toolchain=/tmp/android-toolchain-eabi --add_cflags="-flto
-user-linker-plugin"

The build process would be interrupted by gcc:

make -j4 --warn-undefined-variables -f ../scripts/build/main.mk
TOOLCHAIN=/tmp/android-toolchain-eabi ADD_CFLAGS="-flto
-user-linker-plugin" build
CPP ARM obj/src/core/Sk64.o <= src/src/core/Sk64.cpp
CPP ARM obj/src/core/SkAlphaRuns.o <= src/src/core/SkAlphaRuns.cpp
CPP ARM obj/src/core/SkBitmap.o <= src/src/core/SkBitmap.cpp
CPP ARM obj/src/core/SkBitmapProcShader.o <= src/src/core/SkBitmapProcShader.cpp
CPP ARM obj/src/core/SkBitmapProcState.o <= src/src/core/SkBitmapProcState.cpp
CPP ARM obj/src/core/SkBitmapProcState_matrixProcs.o <=
src/src/core/SkBitmapProcState_matrixProcs.cpp
src/src/core/SkBitmapProcShader.cpp: In function
'SkShader::CreateBitmapShader(SkBitmap const&, SkShader::TileMode,
SkShader::TileMode, void*, unsigned int)':
src/src/core/SkBitmapProcShader.cpp:243:13: warning: 'color' may be
used uninitialized in this function
CPP ARM obj/src/core/SkBitmapSampler.o <= src/src/core/SkBitmapSampler.cpp
src/src/core/SkBitmapProcState_matrixProcs.cpp:530:1: sorry,
unimplemented: gimple bytecode streams do not support machine specific
builtin functions on this target
...

However, I can get other bench items passed such as cximage,  gcstone,
gnugo, mpeg4, webkit, and python.

Can anyone give me some hints to resolve LTO problem?  Thanks in advance.

Sincerely,
-jserv

[1] https://wiki.linaro.org/Platform/Android/Toolchain#Reference%20Benchmark
    We use the same toolchain benchmark suite as Google compiler team took.
[2] https://wiki.linaro.org/Platform/Android/UpstreamToolchain
diff --git a/scripts/bench.py b/scripts/bench.py
index 992fb63..0a9462a 100755
--- a/scripts/bench.py
+++ b/scripts/bench.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python2.4
+#!/usr/bin/python
 #
 # Copyright 2009 Google Inc. All Rights Reserved.
 
diff --git a/scripts/run_on_android.py b/scripts/run_on_android.py
index 07b7976..b55bca9 100755
--- a/scripts/run_on_android.py
+++ b/scripts/run_on_android.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python2.4
+#!/usr/bin/python
 #
 # Copyright 2009 Google Inc. All Rights Reserved.
 
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to