rust-lang / rust-lang/rustc_codegen_gcc

libgccjit ICE when compiling to arm-unknown-linux-gnueabi

Open
#557 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Rust
Stars
1.2k
Forks
105
Avg merge
8h 20m
Merged PRs (30d)
14

Description

Using an arm-unknown-linux-gnueabi toolchain built with the setup in cross-gcc / crosstool-ng, I get an ICE while building the sysroot:

± PATH=~/x-tools/arm-unknown-linux-gnueabi/usr/bin:$PATH ./y.sh build --sysroot --target-triple arm-unknown-linux-gnueabi
[BUILD] build system
    Finished `release` profile [optimized] target(s) in 0.31s
   Compiling libc v0.2.150
   Compiling linux-raw-sys v0.4.5
   Compiling bitflags v2.4.0
   Compiling memchr v2.5.0
   Compiling cfg-if v1.0.0
   Compiling rustix v0.38.8
   Compiling fastrand v2.0.0
   Compiling object v0.30.4
   Compiling gccjit_sys v0.2.0
   Compiling gccjit v2.1.0
   Compiling smallvec v1.10.0
   Compiling tempfile v3.7.1
   Compiling rustc_codegen_gcc v0.1.0 (/home/user/dev/rustc_codegen_gcc)
    Finished `dev` profile [optimized + debuginfo] target(s) in 39.42s
[BUILD] sysroot
warning: no edition set: defaulting to the 2015 edition while the latest is 2021
    Updating crates.io index
     Locking 5 packages to latest compatible versions
    Updating addr2line v0.21.0 -> v0.22.0 (latest: v0.24.1)
      Adding gimli v0.29.0 (latest: v0.31.0)
    Updating hermit-abi v0.3.9 -> v0.4.0
    Updating object v0.32.2 -> v0.36.3
    Updating rustc-demangle v0.1.23 -> v0.1.24
  Downloaded unicode-width v0.1.12
  Downloaded compiler_builtins v0.1.109
  Downloaded object v0.36.3
  Downloaded 3 crates (535.5 KB) in 1.12s
   Compiling compiler_builtins v0.1.109
   Compiling core v0.0.0 (/home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/core)
   Compiling libc v0.2.153
   Compiling std v0.0.0 (/home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/std)
   Compiling rustc-std-workspace-core v1.99.0 (/home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/rustc-std-workspace-core)
   Compiling alloc v0.0.0 (/home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/alloc)
during RTL pass: expand
during RTL pass: expand
libgccjit.so: /home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/core/src/num/f32.rs:524:6: internal compiler error: : in hash_rtx, at cse.cc:2546
libgccjit.so: sysroot_src/library/core/src/num/dec2flt/float.rs:125:6: internal compiler error: : in hash_rtx, at cse.cc:2546
during RTL pass: expand
libgccjit.so: /home/user/dev/rustc_codegen_gcc/build/build_sysroot/sysroot_src/library/core/src/num/uint_macros.rs:2727:21: internal compiler error: : in hash_rtx, at cse.cc:2546
0x7daee59dc603 hash_rtx(rtx_def const*, machine_mode, int*, int*, bool, bool (*)(rtx_def const*, machine_mode, rtx_def**, machine_mode*))
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cse.cc:2546
0x76565cbdc603 hash_rtx(rtx_def const*, machine_mode, int*, int*, bool, bool (*)(rtx_def const*, machine_mode, rtx_def**, machine_mode*))
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cse.cc:2546
0x7f412e9dc603 hash_rtx(rtx_def const*, machine_mode, int*, int*, bool, bool (*)(rtx_def const*, machine_mode, rtx_def**, machine_mode*))
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cse.cc:2546
0x7f412f48e840 libcall_hasher::hash(rtx_def const*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:5904
0x7f412f48e840 hash_table<libcall_hasher, false, xcallocator>::verify(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:1116
0x7f412f48a667 hash_table<libcall_hasher, false, xcallocator>::find_with_hash(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:994
0x7daee648e840 libcall_hasher::hash(rtx_def const*)
0x7f412f48a667 hash_table<libcall_hasher, false, xcallocator>::find(rtx_def const* const&)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:5904
0x7daee648e840 hash_table<libcall_hasher, false, xcallocator>::verify(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:1116
0x7daee648a667 hash_table<libcall_hasher, false, xcallocator>::find_with_hash(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:994
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:430
0x7daee648a667 hash_table<libcall_hasher, false, xcallocator>::find(rtx_def const* const&)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:430
0x7f412f48a667 arm_libcall_uses_aapcs_base
0x7daee648a667 arm_libcall_uses_aapcs_base
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:6006
0x76565d68e840 libcall_hasher::hash(rtx_def const*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:6006
0x7f412f48aaac arm_init_cumulative_args(CUMULATIVE_ARGS*, tree_node*, rtx_def*, tree_node*)
0x7daee648aaac arm_init_cumulative_args(CUMULATIVE_ARGS*, tree_node*, rtx_def*, tree_node*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:7134
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:7134
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:5904
0x76565d68e840 hash_table<libcall_hasher, false, xcallocator>::verify(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:1116
0x76565d68a667 hash_table<libcall_hasher, false, xcallocator>::find_with_hash(rtx_def const* const&, unsigned int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:994
0x76565d68a667 hash_table<libcall_hasher, false, xcallocator>::find(rtx_def const* const&)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/hash-table.h:430
0x76565d68a667 arm_libcall_uses_aapcs_base
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:6006
0x76565d68aaac arm_init_cumulative_args(CUMULATIVE_ARGS*, tree_node*, rtx_def*, tree_node*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/config/arm/arm.cc:7134
0x7daee5ae934a emit_library_call_value_1(int, rtx_def*, rtx_def*, libcall_type, machine_mode, int, std::pair<rtx_def*, machine_mode>*)
0x7f412eae934a emit_library_call_value_1(int, rtx_def*, rtx_def*, libcall_type, machine_mode, int, std::pair<rtx_def*, machine_mode>*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/calls.cc:4243
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/calls.cc:4243
0x76565cce934a emit_library_call_value_1(int, rtx_def*, rtx_def*, libcall_type, machine_mode, int, std::pair<rtx_def*, machine_mode>*)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/calls.cc:4243
0x7daee5f0d46f emit_library_call_value(rtx_def*, rtx_def*, libcall_type, machine_mode, rtx_def*, machine_mode, rtx_def*, machine_mode)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/rtl.h:4424
0x7daee5f0d46f expand_binop(machine_mode, optab_tag, rtx_def*, rtx_def*, rtx_def*, int, optab_methods)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:2220
0x7daee5f0f547 sign_expand_binop(machine_mode, optab_tag, optab_tag, rtx_def*, rtx_def*, rtx_def*, int, optab_methods)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:2352
0x7f412ef14f53 emit_library_call_value(rtx_def*, rtx_def*, libcall_type, machine_mode, rtx_def*, machine_mode)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/rtl.h:4411
0x7f412ef14f53 expand_float(rtx_def*, rtx_def*, int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:5735
0x76565d104508 emit_library_call_value(rtx_def*, rtx_def*, libcall_type, machine_mode, rtx_def*, machine_mode, rtx_def*, machine_mode)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/rtl.h:4424
0x76565d104508 prepare_float_lib_cmp
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:4996
0x76565d104508 prepare_cmp_insn
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:4629
0x76565d104c2f emit_cmp_and_jump_insns(rtx_def*, rtx_def*, rtx_code, rtx_def*, machine_mode, int, tree_node*, rtx_def*, profile_probability)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/optabs.cc:4853
0x76565cd7f250 do_compare_rtx_and_jump(rtx_def*, rtx_def*, rtx_code, int, tree_node*, machine_mode, rtx_def*, rtx_code_label*, rtx_code_label*, profile_probability)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/dojump.cc:1238
0x76565cd806c1 do_compare_rtx_and_jump(rtx_def*, rtx_def*, rtx_code, int, machine_mode, rtx_def*, rtx_code_label*, rtx_code_label*, profile_probability)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/dojump.cc:966
0x7daee5c24252 expand_divmod(int, tree_code, machine_mode, rtx_def*, rtx_def*, rtx_def*, int, optab_methods)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expmed.cc:5298
0x76565ce228fb emit_store_flag_force(rtx_def*, rtx_code, rtx_def*, rtx_def*, machine_mode, int, int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expmed.cc:6250
0x76565ce228fb emit_store_flag_force(rtx_def*, rtx_code, rtx_def*, rtx_def*, machine_mode, int, int)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expmed.cc:6175
0x7f412ec3418b expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:10337
0x7f412ec3b45e expand_expr_real_gassign(gassign*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:11096
0x7daee5c32c33 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:10296
0x7daee5c3b45e expand_expr_real_gassign(gassign*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:11096
0x76565ce31570 do_store_flag
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:13701
0x76565ce32ad3 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:10684
0x76565ce3b45e expand_expr_real_gassign(gassign*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/expr.cc:11096
0x7f412eb00267 expand_gimple_stmt_1
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:4010
0x7f412eb00267 expand_gimple_stmt
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:4071
0x7f412eb06bfb expand_gimple_basic_block
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:6127
0x7daee5b00267 expand_gimple_stmt_1
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:4010
0x7daee5b00267 expand_gimple_stmt
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:4071
0x7daee5b06bfb expand_gimple_basic_block
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:6127
0x76565cd00703 expand_gimple_stmt_1
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:4010
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
error: could not compile `compiler_builtins` (lib)
warning: build failed, waiting for other jobs to finish...
0x7daee5b088a6 execute
0x7f412eb088a6 execute
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:6866
        /home/user/dev/cross-gcc/arm-unknown-linux-gnueabi/.build/arm-unknown-linux-gnueabi/src/gcc/gcc/cfgexpand.cc:6866
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
error: could not compile `alloc` (lib)
error: could not compile `core` (lib)
Command `["cargo", "build", "--target", "arm-unknown-linux-gnueabi"]` failed
Command failed to run: Command `cargo build --target arm-unknown-linux-gnueabi` (running in folder `build/build_sysroot`) exited with status Some(101)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with ./y.sh build --sysroot --target-triple arm-unknown-linux-gnueabi using the reported toolchain. Start by tracing the ICE through GCC's cse.cc, config/arm/arm.cc, calls.cc, and optabs.cc entries, alongside the cited core source files. Done means the sysroot compiles without the libgccjit internal compiler error.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.