Skip to content

ICE on powerpc64le-unknown-freebsd-gcc version 17.0.0 #4801

Open

Description

@xinitrcn1

Describe the bug
Whilst compiling zstd I hit an ICE on gcc. This doesn't happen with other programs like ffmpeg, X11 or OpenSSL.

Ran on host: FreeBSD xerix 15.0-RELEASE FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC amd64 whilst cross compiling

during GIMPLE pass: vect
/archive/menix/src/eden-ppc/.cache/cpm/zstd/b8d6101fba/lib/dictBuilder/zdict.c: In function 'ZDICT_trainFromBuffer_legacy':
/archive/menix/src/eden-ppc/.cache/cpm/zstd/b8d6101fba/lib/dictBuilder/zdict.c:1088:8: internal compiler error: Bus error
 1088 | size_t ZDICT_trainFromBuffer_legacy(void* dictBuffer, size_t dictBufferCapacity,
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x234cb04 internal_error(char const*, ...)
	/archive/menix/src/cross-tool/gcc/gcc/diagnostic-global-context.cc:787
0x1e277fe crash_signal(int)
	/archive/menix/src/cross-tool/gcc/gcc/toplev.cc:325
0x121f924 location_wrapper_p(tree_node const*)
	/archive/menix/src/cross-tool/gcc/gcc/tree.h:4598
0x121f924 tree_strip_any_location_wrapper(tree_node*)
	/archive/menix/src/cross-tool/gcc/gcc/tree.h:4610
0x121f924 operand_compare::hash_operand(tree_node const*, inchash::hash&, unsigned int)
	/archive/menix/src/cross-tool/gcc/gcc/fold-const.cc:4023
0x121fe34 operand_compare::hash_operand(tree_node const*, inchash::hash&, unsigned int)
	/archive/menix/src/cross-tool/gcc/gcc/fold-const.cc:4076
0x201aa1e vn_nary_op_compute_hash(vn_nary_op_s*)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:4539
0x201ae28 vn_nary_op_lookup_1(vn_nary_op_s*, vn_nary_op_s**)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:4669
0x20231b8 vn_nary_op_lookup_pieces(unsigned int, tree_code, tree_node*, tree_node**, vn_nary_op_s**)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:4691
0x20231b8 visit_phi(gimple*, bool*, bool)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:6535
0x2021a0f process_bb(rpo_elim&, basic_block_def*, bool, bool, bool, bool, bool, bitmap_head*, bool)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:8526
0x201fbbd do_rpo_vn_1(function*, edge_def*, bitmap_head*, bool, bool, bool, vn_lookup_kind)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:9210
0x2021422 do_rpo_vn(function*, edge_def*, bitmap_head*, bool, bool, bool, vn_lookup_kind)
	/archive/menix/src/cross-tool/gcc/gcc/tree-ssa-sccvn.cc:9315
0x214d75d (anonymous namespace)::pass_vectorize::execute(function*)
	/archive/menix/src/cross-tool/gcc/gcc/tree-vectorizer.cc:1429

To Reproduce
Made a script to repro:

#!/usr/local/bin/bash -ex
export PATH="$PWD/prefix/bin:$PATH"
NPROC=$(nproc || echo 6)
ROOTDIR="$PWD"
TARGET="powerpc64le-unknown-freebsd15.0"
PREFIX="$ROOTDIR/prefix"
SYSROOT="$ROOTDIR/sysroot/$TARGET"
FREEBSD_ARCH=powerpc/powerpc64le
CMAKE_ARCH=ppc64le
mkdir -p "$PREFIX"
install_freebsd_sysroot() {
    VERSION="15.1-RELEASE"
    FTPSITE="https://download.freebsd.org/ftp"
    mkdir -p "$SYSROOT"
    [ -f "$SYSROOT/base.txz" ] || wget -O "$SYSROOT/base.txz" "$FTPSITE/releases/$FREEBSD_ARCH/$VERSION/base.txz"
    [ -d "$SYSROOT/usr" ] || tar -C "$SYSROOT" -xvzf "$SYSROOT/base.txz"
}
build_hosted_binutils_gdb() {
    BUILDDIR="$ROOTDIR/build/$TARGET-binutils-gdb"
    SRCDIR="$ROOTDIR/binutils-gdb"
    CONFIGURE_FLAGS=(
        --prefix="$PREFIX"
        --target="$TARGET"
        --without-libiconv-prefix
        --with-sysroot="$SYSROOT"
        --enable-threads=posix
        --disable-werror
        --disable-intl
        --disable-nls
    )
    [ -d "$SRCDIR" ] || git clone --depth=1 https://github.com/gnutools/binutils-gdb.git "$SRCDIR"
    mkdir -p "$BUILDDIR"
    cd "$BUILDDIR"
    [ -f "$BUILDDIR/Makefile" ] || "$SRCDIR/configure" "${CONFIGURE_FLAGS[@]}"
    gmake -j $NPROC
    which -- "${TARGET}-as" || {
        gmake install
    }
    cd ..
}
build_hosted_gcc() {
    BUILDDIR="$ROOTDIR/build/$TARGET-gcc"
    SRCDIR="$ROOTDIR/gcc"
    CONFIGURE_FLAGS=(
        --prefix="$PREFIX"
        --target="$TARGET"
        --with-sysroot="$SYSROOT"
        --with-abi=elfv2
        --enable-gnu-indirect-function
        --enable-initfini-array
        --with-system-zlib
        --without-zstd
        --enable-libstdcxx-threads=yes
        --enable-languages=c,c++
        --enable-threads=posix
        --disable-multilib
        --disable-gnu-unique-object
        --disable-libsanitizer
        --disable-libquadmath
        --disable-bootstrap
        --disable-checking
        --disable-libgomp
        --disable-libssp
        --disable-libvtv
        --disable-shared
        --disable-gcov
        --disable-lto
        --disable-cet
        --disable-nls
    )
    which -- "${TARGET}-as"
    [ -d "$SRCDIR" ] || git clone --depth=1 https://github.com/gcc-mirror/gcc "$SRCDIR"
    mkdir -p "$BUILDDIR"
    cd "$BUILDDIR"
    [ -f "$BUILDDIR/Makefile" ] || "$SRCDIR/configure" "${CONFIGURE_FLAGS[@]}"
    gmake all-gcc -j $NPROC
    gmake all-target-libgcc -j $NPROC
    gmake all-target-libstdc++-v3 -j $NPROC
    which -- "${TARGET}-gcc" || {
        gmake install-gcc -j $NPROC
        gmake install-target-libgcc -j $NPROC
        gmake install-target-libstdc++-v3 -j $NPROC
    }
    cd ..
}

generate_cmake_toolchain_file() {
    FILE="$ROOTDIR/$TARGET-toolchain.cmake"
    [ -f "$FILE" ] || cat << EOF >"$FILE"
set(CMAKE_SYSROOT "$SYSROOT")
set(CMAKE_PREFIX_PATH "$SYSROOT")
set(CMAKE_STAGING_PREFIX "$PREFIX")
set(PKG_CONFIG_EXECUTABLE "$ROOTDIR/pkg-config")
set(CMAKE_SYSTEM_NAME "FreeBSD")
set(CMAKE_SYSTEM_PROCESSOR "$CMAKE_ARCH")
set(CMAKE_C_COMPILER $PREFIX/bin/$TARGET-gcc)
set(CMAKE_CXX_COMPILER $PREFIX/bin/$TARGET-g++)
set(CMAKE_ASM_COMPILER $PREFIX/bin/$TARGET-gcc)
set(CMAKE_LINKER $PREFIX/bin/$TARGET-g++)
set(CMAKE_C_FLAGS "")
set(CMAKE_CXX_FLAGS "")
set(CMAKE_C_HOST_COMPILER clang)
set(CMAKE_CXX_HOST_COMPILER clang++)
set(CMAKE_ASM_HOST_COMPILER clang)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
EOF
}
install_freebsd_sysroot
mkdir -p "$ROOTDIR/build"
build_hosted_binutils_gdb
build_hosted_gcc
generate_cmake_toolchain_file
cd "$ROOTDIR"
[ -d zstd ] || git clone --depth=1 https://github.com/facebook/zstd
cd zstd/build/cmake
cmake -S . -B build-cmake \
    -DCMAKE_TOOLCHAIN_FILE="$ROOTDIR/$TARGET-toolchain.cmake" \
    -DCMAKE_BUILD_TYPE=Release \
    -DZSTD_BUILD_SHARED=OFF
cmake --build build-cmake -- -j$NPROC

Expected behavior
No internal compiler error.

Screenshots and charts
N/A

Desktop (please complete the following information):

  • OS: FreeBSD
  • Version 15
  • Compiler clang (host)
  • Flags N/A
  • Other relevant hardware specs N/A
  • Build system CMake

Additional context
gcc commit: 6e71afffd4c0a9a872790826920548edc3360173
binutils-gdb commit: 421bec796fa3a06179856da870a13cf71ddf5df2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions