diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index b839e350cc..47f346fb9a 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -145,6 +145,12 @@ if $(HAIKU_GCC_VERSION[1]) >= 4 { HAIKU_GCC_BASE_FLAGS += -Wno-array-bounds ; } +# activating graphite optimizations +if $(HAIKU_USE_GCC_GRAPHITE) = 1 { + HAIKU_GCC_BASE_FLAGS += -floop-interchange -ftree-loop-distribution + -floop-strip-mine -floop-block ; +} + if $(HOST_GCC_VERSION[1]) >= 3 { HOST_GCC_BASE_FLAGS += -fno-strict-aliasing -fno-tree-vrp ; } diff --git a/configure b/configure index 1edc558802..8266dbdbe4 100755 --- a/configure +++ b/configure @@ -170,6 +170,13 @@ standard_gcc_settings() HAIKU_GCC_RAW_VERSION=`$HAIKU_CC -dumpversion` HAIKU_GCC_MACHINE=`$HAIKU_CC -dumpmachine` + if [ "$HAIKU_USE_GCC_GRAPHITE" != 0 ]; then + UNUSED=`echo "int main() {}" | $HAIKU_CC -xc -c -floop-block - 2>&1` + if [ $? != 0 ]; then + echo "GCC Graphite loop optimizations cannot be used" + HAIKU_USE_GCC_GRAPHITE=0 + fi + fi HAIKU_GCC_LIB_DIR=${gccdir} HAIKU_GCC_LIBGCC=${gccdir}/libgcc.a @@ -345,6 +352,7 @@ HAIKU_ENABLE_MULTIUSER=0 HAIKU_DISTRO_COMPATIBILITY=default TARGET_PLATFORM=haiku HAIKU_USE_GCC_PIPE=0 +HAIKU_USE_GCC_GRAPHITE=0 HAIKU_HOST_USE_32BIT=0 HAIKU_HOST_USE_XATTR=0 HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR= @@ -459,6 +467,7 @@ while [ $# -gt 0 ] ; do -j*) buildCrossToolsJobs="$1"; shift 1;; --target=*) TARGET_PLATFORM=`echo $1 | cut -d'=' -f2-`; shift 1;; --use-gcc-pipe) HAIKU_USE_GCC_PIPE=1; shift 1;; + --use-gcc-graphite) HAIKU_USE_GCC_GRAPHITE=1; shift 1;; --use-32bit) HAIKU_HOST_USE_32BIT=1; shift 1;; --use-xattr) HAIKU_HOST_USE_XATTR=1; shift 1;; *) echo Invalid argument: \`$1\'; exit 1;; @@ -574,6 +583,7 @@ HAIKU_INCLUDE_3RDPARTY ?= "${HAIKU_INCLUDE_3RDPARTY}" ; HAIKU_ENABLE_MULTIUSER ?= "${HAIKU_ENABLE_MULTIUSER}" ; HAIKU_DISTRO_COMPATIBILITY ?= "${HAIKU_DISTRO_COMPATIBILITY}" ; HAIKU_USE_GCC_PIPE ?= "${HAIKU_USE_GCC_PIPE}" ; +HAIKU_USE_GCC_GRAPHITE ?= "${HAIKU_USE_GCC_GRAPHITE}" ; HAIKU_HOST_USE_32BIT ?= "${HAIKU_HOST_USE_32BIT}" ; HAIKU_HOST_USE_XATTR ?= "${HAIKU_HOST_USE_XATTR}" ; HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR ?= ${HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR} ;