Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

ICE on powerpc64le-unknown-freebsd-gcc version 17.0.0

Đang mở
#4,801 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
32/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
c, cmake
Lĩnh vực
build-system, compilers

Hướng nghiên cứu

Start with lib/dictBuilder/zdict.c at ZDICT_trainFromBuffer_legacy and run the supplied cross-compilation script on FreeBSD. Inspect the GCC vectorization failure during the GIMPLE vect pass and use the reported GCC and binutils-gdb commits as reproduction context. Done means the zstd build completes without an internal compiler error.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
C
Star
28.1k
Fork
2.7k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của facebook/zstd

Tất cả issue của facebook/zstd

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.