Repository: rust
Issue: 1.55.0 new only-x86_64 test codegen/array-equality.rs fails on Debian x86_64
Labels: C-bug,S-needs-info

~~~~
------stderr------------------------------
/<<PKGBUILDDIR>>/src/test/codegen/array-equality.rs:10:17: error: CHECK-NEXT: expected string not found in input
 // CHECK-NEXT: %2 = icmp eq i96 %0, %1
                ^
/<<PKGBUILDDIR>>/build/x86_64-unknown-linux-gnu/test/codegen/array-equality/array-equality.ll:9:2: note: scanning from here
 tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
 ^
/<<PKGBUILDDIR>>/build/x86_64-unknown-linux-gnu/test/codegen/array-equality/array-equality.ll:17:2: note: possible intended match here
 %4 = icmp eq i96 %1, %3
 ^
/<<PKGBUILDDIR>>/src/test/codegen/array-equality.rs:50:17: error: CHECK-LABEL: expected string not found in input
// CHECK-LABEL: @array_eq_zero(i128 %0)
                ^
/<<PKGBUILDDIR>>/build/x86_64-unknown-linux-gnu/test/codegen/array-equality/array-equality.ll:47:33: note: scanning from here
define zeroext i1 @array_eq_long([1234 x i16]* noalias readonly align 2 dereferenceable(2468) %0, [1234 x i16]* noalias readonly align 2 dereferenceable(2468) %1) unnamed_addr #0 {
                                ^
/<<PKGBUILDDIR>>/build/x86_64-unknown-linux-gnu/test/codegen/array-equality/array-equality.ll:57:19: note: possible intended match here
define zeroext i1 @array_eq_zero([8 x i16]* noalias nocapture readonly dereferenceable(16) %x) unnamed_addr #0 {
                  ^

Input file: /<<PKGBUILDDIR>>/build/x86_64-unknown-linux-gnu/test/codegen/array-equality/array-equality.ll
Check file: /<<PKGBUILDDIR>>/src/test/codegen/array-equality.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: ; ModuleID = 'array_equality.6a4da171-cgu.0'
            2: source_filename = "array_equality.6a4da171-cgu.0"
            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
            4: target triple = "x86_64-unknown-linux-gnu"
            5: 
            6: ; Function Attrs: nofree nounwind nonlazybind uwtable willreturn
            7: define zeroext i1 @array_eq_value([6 x i16]* noalias nocapture readonly dereferenceable(12) %a, [6 x i16]* noalias nocapture readonly dereferenceable(12) %b) unnamed_addr #0 {
            8: start:
            9:  tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
next:10'0       X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
           10:  tail call void @llvm.experimental.noalias.scope.decl(metadata !5)
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           11:  tail call void @llvm.experimental.noalias.scope.decl(metadata !7) #3, !noalias !10
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           12:  tail call void @llvm.experimental.noalias.scope.decl(metadata !11) #3, !noalias !10
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           13:  %0 = bitcast [6 x i16]* %a to i96*
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           14:  %1 = load i96, i96* %0, align 2, !alias.scope !13, !noalias !14
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           15:  %2 = bitcast [6 x i16]* %b to i96*
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           16:  %3 = load i96, i96* %2, align 2, !alias.scope !14, !noalias !13
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           17:  %4 = icmp eq i96 %1, %3
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~
next:10'1       ?                       possible intended match
           18:  ret i1 %4
next:10'0      ~~~~~~~~~~
           19: }
next:10'0      ~
           20: 
next:10'0      ~
           21: ; Function Attrs: nofree nounwind nonlazybind uwtable willreturn
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           22: define zeroext i1 @array_eq_ref([6 x i16]* noalias readonly align 2 dereferenceable(12) %0, [6 x i16]* noalias readonly align 2 dereferenceable(12) %1) unnamed_addr #0 {
next:10'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
            .
           42:  %2 = icmp eq i32 %bcmp.i.i, 0
           43:  ret i1 %2
           44: }
           45: 
           46: ; Function Attrs: nofree nounwind nonlazybind uwtable willreturn
           47: define zeroext i1 @array_eq_long([1234 x i16]* noalias readonly align 2 dereferenceable(2468) %0, [1234 x i16]* noalias readonly align 2 dereferenceable(2468) %1) unnamed_addr #0 {
label:50'0                                     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
           48: start:
label:50'0     ~~~~~~
           49:  %2 = bitcast [1234 x i16]* %0 to i8*
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           50:  %3 = bitcast [1234 x i16]* %1 to i8*
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %bcmp.i.i.i = tail call i32 @bcmp(i8* nonnull dereferenceable(2468) %2, i8* nonnull dereferenceable(2468) %3, i64 2468) #3, !alias.scope !41, !noalias !48
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           52:  %4 = icmp eq i32 %bcmp.i.i.i, 0
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           53:  ret i1 %4
label:50'0     ~~~~~~~~~~
           54: }
label:50'0     ~
           55: 
label:50'0     ~
           56: ; Function Attrs: nofree nounwind nonlazybind uwtable willreturn
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           57: define zeroext i1 @array_eq_zero([8 x i16]* noalias nocapture readonly dereferenceable(16) %x) unnamed_addr #0 {
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
label:50'1                       ?                                                                                              possible intended match
           58: start:
label:50'0     ~~~~~~
           59:  %0 = bitcast [8 x i16]* %x to i128*
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           60:  %1 = load i128, i128* %0, align 2, !alias.scope !52
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           61:  %2 = icmp eq i128 %1, 0
label:50'0     ~~~~~~~~~~~~~~~~~~~~~~~~
           62:  ret i1 %2
label:50'0     ~~~~~~~~~~
            .
            .
            .
>>>>>>
~~~~

Full log here, warning very large: https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=amd64&ver=1.55.0%2Bdfsg1-1%7Eexp1&stamp=1633891056&raw=0

Since the test is specifically for x86_64 I am slightly concerned in fails in Debian, though everything else works on x86-64.

The version of the test in 1.55.0 was writting for LLVM 12 which is what we're using, though without the rust-specific patches.