Skip to content

riscv64gc-unknown-linux-gnu target fails some UI tests in CI #143319

Open
@SuperR99

Description

@SuperR99

Environment:
Version: 1.89 nightly
Running Rust CI locally via Docker:

DEPLOY=1 ./src/ci/docker/run.sh riscv64gc-gnu

With Dockerfile containing:

ENV RUST_CONFIGURE_ARGS \
    --qemu-riscv64-rootfs=/tmp/rootfs \
    --set target.riscv64gc-unknown-linux-gnu.linker=riscv64-linux-gnu-gcc

ENV SCRIPT python3 ../x.py --stage 2 test --host='' --target riscv64gc-unknown-linux-gnu

Failures

1. tests/ui/abi/rust-cold-works-with-rustic-args.rs

rustc-LLVM ERROR: Unsupported calling convention

Full command and output trace:

error: test compilation failed although it shouldn't!
command: rustc ... --target=riscv64gc-unknown-linux-gnu ...

2. tests/ui/abi/debug.rs

ABI mismatches such as:

- arg_ext: None,
+ arg_ext: Zext

And:

- arg_ext: None,
+ arg_ext: Sext

As well as:

error[E0277]: the size for values of type `str` cannot be known at compilation time

And:

error: ABIs are not compatible

3. tests/ui/array-slice-vec/nested-vec-1.rs

Fails during execution:

client.read_exact(&mut header) failed with Connection reset by peer (os error 104)

Summary

test result: FAILED. 19002 passed; 3 failed; 370 ignored; 0 measured

Question

Are these known issues or regressions for the riscv64gc-unknown-linux-gnu target?

Should these tests be ignored or xfailed on this target? Or is there a configuration or ABI support issue involved?

Any guidance would be appreciated!


Full Report

Failure Log
failures:

---- [ui] tests/ui/abi/rust-cold-works-with-rustic-args.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/abi/rust-cold-works-with-rustic-args.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=riscv64gc-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/abi/rust-cold-works-with-rustic-args" "-A" "unused" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/riscv64gc-unknown-linux-gnu/native/rust-test-helpers" "-Clinker=riscv64-linux-gnu-gcc" "-Clink-dead-code=true" "--crate-type" "lib"
stdout: none
--- stderr -------------------------------
rustc-LLVM ERROR: Unsupported calling convention
------------------------------------------


---- [ui] tests/ui/abi/debug.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/abi/debug/debug.stderr`
diff of stderr:

31                         mode: Direct(
32                             ArgAttributes {
33                                 regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Zext,
35                                 pointee_size: Size(0 bytes),
36                                 pointee_align: None,
37                             },

308                        mode: Direct(
309                            ArgAttributes {
310                                regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Zext,
312                                pointee_size: Size(0 bytes),
313                                pointee_align: None,
314                            },

380                        mode: Direct(
381                            ArgAttributes {
382                                regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Sext,
384                                pointee_size: Size(0 bytes),
385                                pointee_align: None,
386                            },

681                        mode: Direct(
682                            ArgAttributes {
683                                regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Sext,
685                                pointee_size: Size(0 bytes),
686                                pointee_align: None,
687                            },

759                        mode: Direct(
760                            ArgAttributes {
761                                regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Sext,
763                                pointee_size: Size(0 bytes),
764                                pointee_align: None,
765                            },

831                        mode: Direct(
832                            ArgAttributes {
833                                regular: NoUndef,
-                                  arg_ext: None,
+                                  arg_ext: Sext,
835                                pointee_size: Size(0 bytes),
836                                pointee_align: None,
837                            },


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args abi/debug.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/abi/debug.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=riscv64gc-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/abi/debug" "-A" "unused" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/riscv64gc-unknown-linux-gnu/native/rust-test-helpers" "-Clinker=riscv64-linux-gnu-gcc" "-O"
stdout: none
--- stderr -------------------------------
error: fn_abi_of(test) = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: u8,
                       layout: Layout {
                           size: Size(1 bytes),
                           align: AbiAlign {
                               abi: Align(1 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I8,
                                       false,
                                   ),
                                   valid_range: 0..=255,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(1 bytes),
                           randomization_seed: 71776127651151873,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Zext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: bool,
                   layout: Layout {
                       size: Size(1 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Scalar(
                           Initialized {
                               value: Int(
                                   I8,
                                   false,
                               ),
                               valid_range: 0..=1,
                           },
                       ),
                       fields: Primitive,
                       largest_niche: Some(
                           Niche {
                               offset: Size(0 bytes),
                               value: Int(
                                   I8,
                                   false,
                               ),
                               valid_range: 0..=1,
                           },
                       ),
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 281483566645249,
                   },
               },
               mode: Direct(
                   ArgAttributes {
                       regular: NoUndef,
                       arg_ext: Zext,
                       pointee_size: Size(0 bytes),
                       pointee_align: None,
                   },
               ),
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:16:1
   |
LL | fn test(_x: u8) -> bool { true } //~ ERROR: fn_abi
   | ^^^^^^^^^^^^^^^^^^^^^^^

error: fn_abi_of(TestFnPtr) = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: bool,
                       layout: Layout {
                           size: Size(1 bytes),
                           align: AbiAlign {
                               abi: Align(1 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I8,
                                       false,
                                   ),
                                   valid_range: 0..=1,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: Some(
                               Niche {
                                   offset: Size(0 bytes),
                                   value: Int(
                                       I8,
                                       false,
                                   ),
                                   valid_range: 0..=1,
                               },
                           ),
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(1 bytes),
                           randomization_seed: 281483566645249,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Zext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: u8,
                   layout: Layout {
                       size: Size(1 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Scalar(
                           Initialized {
                               value: Int(
                                   I8,
                                   false,
                               ),
                               valid_range: 0..=255,
                           },
                       ),
                       fields: Primitive,
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 71776127651151873,
                   },
               },
               mode: Direct(
                   ArgAttributes {
                       regular: NoUndef,
                       arg_ext: None,
                       pointee_size: Size(0 bytes),
                       pointee_align: None,
                   },
               ),
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:19:1
   |
LL | type TestFnPtr = fn(bool) -> u8; //~ ERROR: fn_abi
   | ^^^^^^^^^^^^^^

error: fn_abi_of(test_generic) = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: *const T,
                       layout: Layout {
                           size: Size(8 bytes),
                           align: AbiAlign {
                               abi: Align(8 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Pointer(
                                       AddressSpace(
                                           0,
                                       ),
                                   ),
                                   valid_range: 0..=18446744073709551615,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(8 bytes),
                           randomization_seed: 17179869191,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: None,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:22:1
   |
LL | fn test_generic<T>(_x: *const T) { } //~ ERROR: fn_abi
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: `#[rustc_abi]` can only be applied to function items, type aliases, and associated functions
  --> /checkout/tests/ui/abi/debug.rs:25:1
   |
LL | const C: () = (); //~ ERROR: can only be applied to
   | ^^^^^^^^^^^

error: ABIs are not compatible
       left ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: u8,
                       layout: Layout {
                           size: Size(1 bytes),
                           align: AbiAlign {
                               abi: Align(1 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I8,
                                       false,
                                   ),
                                   valid_range: 0..=255,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(1 bytes),
                           randomization_seed: 71776127651151873,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Zext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
       right ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: u32,
                       layout: Layout {
                           size: Size(4 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I32,
                                       false,
                                   ),
                                   valid_range: 0..=4294967295,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462607322841091,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Sext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:41:1
   |
LL | type TestAbiNe = (fn(u8), fn(u32)); //~ ERROR: ABIs are not compatible
   | ^^^^^^^^^^^^^^

error: ABIs are not compatible
       left ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: [u8; 32],
                       layout: Layout {
                           size: Size(32 bytes),
                           align: AbiAlign {
                               abi: Align(1 bytes),
                           },
                           backend_repr: Memory {
                               sized: true,
                           },
                           fields: Array {
                               stride: Size(1 bytes),
                               count: 32,
                           },
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(1 bytes),
                           randomization_seed: 71776127651151905,
                       },
                   },
                   mode: Indirect {
                       attrs: ArgAttributes {
                           regular: NoAlias | NoCapture | NonNull | NoUndef,
                           arg_ext: None,
                           pointee_size: Size(32 bytes),
                           pointee_align: Some(
                               Align(1 bytes),
                           ),
                       },
                       meta_attrs: None,
                       on_stack: false,
                   },
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
       right ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: [u32; 32],
                       layout: Layout {
                           size: Size(128 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Memory {
                               sized: true,
                           },
                           fields: Array {
                               stride: Size(4 bytes),
                               count: 32,
                           },
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462607322841123,
                       },
                   },
                   mode: Indirect {
                       attrs: ArgAttributes {
                           regular: NoAlias | NoCapture | NonNull | NoUndef,
                           arg_ext: None,
                           pointee_size: Size(128 bytes),
                           pointee_align: Some(
                               Align(4 bytes),
                           ),
                       },
                       meta_attrs: None,
                       on_stack: false,
                   },
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:44:1
   |
LL | type TestAbiNeLarger = (fn([u8; 32]), fn([u32; 32])); //~ ERROR: ABIs are not compatible
   | ^^^^^^^^^^^^^^^^^^^^

error: ABIs are not compatible
       left ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: f32,
                       layout: Layout {
                           size: Size(4 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Float(
                                       F32,
                                   ),
                                   valid_range: 0..=4294967295,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462611617808387,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: None,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
       right ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: u32,
                       layout: Layout {
                           size: Size(4 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I32,
                                       false,
                                   ),
                                   valid_range: 0..=4294967295,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462607322841091,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Sext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:47:1
   |
LL | type TestAbiNeFloat = (fn(f32), fn(u32)); //~ ERROR: ABIs are not compatible
   | ^^^^^^^^^^^^^^^^^^^

error: ABIs are not compatible
       left ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: i32,
                       layout: Layout {
                           size: Size(4 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I32,
                                       true,
                                   ),
                                   valid_range: 0..=4294967295,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462603027873795,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Sext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
       right ABI = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: u32,
                       layout: Layout {
                           size: Size(4 bytes),
                           align: AbiAlign {
                               abi: Align(4 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Int(
                                       I32,
                                       false,
                                   ),
                                   valid_range: 0..=4294967295,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: None,
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(4 bytes),
                           randomization_seed: 18446462607322841091,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoUndef,
                           arg_ext: Sext,
                           pointee_size: Size(0 bytes),
                           pointee_align: None,
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:51:1
   |
LL | type TestAbiNeSign = (fn(i32), fn(u32)); //~ ERROR: ABIs are not compatible
   | ^^^^^^^^^^^^^^^^^^

error[E0277]: the size for values of type `str` cannot be known at compilation time
  --> /checkout/tests/ui/abi/debug.rs:54:46
   |
LL | type TestAbiEqNonsense = (fn((str, str)), fn((str, str))); //~ ERROR: cannot be known at compilation time
   |                                              ^^^^^^^^^^ doesn't have a size known at compile-time
   |
   = help: the trait `Sized` is not implemented for `str`
   = note: only the last element of a tuple may have a dynamically sized type

error: unrecognized argument
  --> /checkout/tests/ui/abi/debug.rs:56:13
   |
LL | #[rustc_abi("assert_eq")] //~ ERROR unrecognized argument
   |             ^^^^^^^^^^^

error: `#[rustc_abi]` can only be applied to function items, type aliases, and associated functions
  --> /checkout/tests/ui/abi/debug.rs:29:5
   |
LL |     const C: () = (); //~ ERROR: can only be applied to
   |     ^^^^^^^^^^^

error: fn_abi_of(assoc_test) = FnAbi {
           args: [
               ArgAbi {
                   layout: TyAndLayout {
                       ty: &S,
                       layout: Layout {
                           size: Size(8 bytes),
                           align: AbiAlign {
                               abi: Align(8 bytes),
                           },
                           backend_repr: Scalar(
                               Initialized {
                                   value: Pointer(
                                       AddressSpace(
                                           0,
                                       ),
                                   ),
                                   valid_range: 1..=18446744073709551615,
                               },
                           ),
                           fields: Primitive,
                           largest_niche: Some(
                               Niche {
                                   offset: Size(0 bytes),
                                   value: Pointer(
                                       AddressSpace(
                                           0,
                                       ),
                                   ),
                                   valid_range: 1..=18446744073709551615,
                               },
                           ),
                           uninhabited: false,
                           variants: Single {
                               index: 0,
                           },
                           max_repr_align: None,
                           unadjusted_abi_align: Align(8 bytes),
                           randomization_seed: 281492156579847,
                       },
                   },
                   mode: Direct(
                       ArgAttributes {
                           regular: NoAlias | NonNull | ReadOnly | NoUndef,
                           arg_ext: None,
                           pointee_size: Size(2 bytes),
                           pointee_align: Some(
                               Align(2 bytes),
                           ),
                       },
                   ),
               },
           ],
           ret: ArgAbi {
               layout: TyAndLayout {
                   ty: (),
                   layout: Layout {
                       size: Size(0 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           memory_index: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: 0,
                   },
               },
               mode: Ignore,
           },
           c_variadic: false,
           fixed_count: 1,
           conv: Rust,
           can_unwind: true,
       }
  --> /checkout/tests/ui/abi/debug.rs:34:5
   |
LL |     fn assoc_test(&self) { } //~ ERROR: fn_abi
   |     ^^^^^^^^^^^^^^^^^^^^

error: aborting due to 12 previous errors

For more information about this error, try `rustc --explain E0277`.
------------------------------------------


---- [ui] tests/ui/array-slice-vec/nested-vec-1.rs stdout ----

error: test run failed!
status: exit status: 101
command: RUSTC="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" RUST_TEST_THREADS="192" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/remote-test-client" "run" "0" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/array-slice-vec/nested-vec-1/a"
--- stdout -------------------------------
uploaded "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/array-slice-vec/nested-vec-1/a", waiting for result
------------------------------------------
--- stderr -------------------------------

thread 'main' panicked at src/tools/remote-test-client/src/main.rs:309:9:
client.read_exact(&mut header) failed with Connection reset by peer (os error 104)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
------------------------------------------



failures:
    [ui] tests/ui/abi/rust-cold-works-with-rustic-args.rs
    [ui] tests/ui/abi/debug.rs
    [ui] tests/ui/array-slice-vec/nested-vec-1.rs

test result: FAILED. 19002 passed; 3 failed; 370 ignored; 0 measured; 0 filtered out; finished in 458.09s

Some tests failed in compiletest suite=ui mode=ui host=x86_64-unknown-linux-gnu target=riscv64gc-unknown-linux-gnu
</details> ```

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.C-external-bugCategory: issue that is caused by bugs in software beyond our controlO-riscvTarget: RISC-V architectureT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions