Skip to content

ICE: assertion failed in ppc64 make_indirect #42757

Closed
@cuviper

Description

@cuviper

Using:

$ rustc +nightly -Vv
rustc 1.19.0-nightly (10d7cb44c 2017-06-18)
binary: rustc
commit-hash: 10d7cb44c98f25c04dcefb6b6555237de8b8bd7e
commit-date: 2017-06-18
host: powerpc64-unknown-linux-gnu
release: 1.19.0-nightly
LLVM version: 4.0

There's an assertion failed compiling run-make/extern-fn-struct-passing-abi:

$ RUST_BACKTRACE=1 rustc +nightly src/test/run-make/extern-fn-struct-passing-abi/test.rs
error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.19.0-nightly (10d7cb44c 2017-06-18) running on powerpc64-unknown-linux-gnu

note: run with `RUST_BACKTRACE=1` for a backtrace

thread 'rustc' panicked at 'assertion failed: `(left == right)` (left: `Indirect`, right: `Direct`)', /checkout/src/librustc_trans/abi.rs:444
stack backtrace:
   0: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/sys_common/backtrace.rs:71
   2: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/sys_common/backtrace.rs:60
             at /checkout/src/libstd/panicking.rs:355
   3: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/panicking.rs:365
   4: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/panicking.rs:549
   5: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/panicking.rs:511
   6: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libstd/panicking.rs:495
   7: rust_metadata_rustc_trans_688c63823f70e585d77215bf3397b7f5
   8: rust_metadata_rustc_trans_688c63823f70e585d77215bf3397b7f5
   9: <unknown>
  10: <unknown>
  11: <unknown>
  12: rust_metadata_rustc_trans_688c63823f70e585d77215bf3397b7f5
  13: <unknown>
  14: <unknown>
  15: <unknown>
  16: <unknown>
  17: <unknown>
  18: <unknown>
  19: <unknown>
  20: <unknown>
  21: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/libpanic_unwind/lib.rs:98
  22: <unknown>
  23: rust_metadata_std_370a936915a1568ed47373dc73e14e2d
             at /checkout/src/liballoc/boxed.rs:660
             at /checkout/src/libstd/sys_common/thread.rs:21
             at /checkout/src/libstd/sys/unix/thread.rs:84
  24: <unknown>
  25: <unknown>

(Apparently backtracing isn't so hot either...)

The failed assertion is here in librustc_trans/abi.rs, make_indirect().

I only have this problem on ppc64 (big-endian), not ppc64le, so I suspect it may be coming from librustc_trans/cabi_powerpc64.rs classify_ret_ty(). The first call to make_indirect() is only for big-endian, and then the second call seems like it will trigger the assertion for being called on something already indirect.

I can reproduce this with native ppc64 back to 1.14.0, which is the first ppc64 host rustc. I haven't tried cross-compiling to ppc64, but I suspect that will trigger the issue too.

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️O-PowerPCTarget: PowerPC processors

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions