From 11b0e9ac315f5aa44bd1e3e6e4e54a987522432f Mon Sep 17 00:00:00 2001 From: clubby789 Date: Tue, 23 Apr 2024 16:54:44 +0000 Subject: [PATCH] Add test for efficient codegen of manual `eq` implementations of a small struct --- tests/assembly/manual-eq-efficient.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/assembly/manual-eq-efficient.rs diff --git a/tests/assembly/manual-eq-efficient.rs b/tests/assembly/manual-eq-efficient.rs new file mode 100644 index 0000000000000..18b2b857a33ec --- /dev/null +++ b/tests/assembly/manual-eq-efficient.rs @@ -0,0 +1,22 @@ +// Regression test for #106269 +//@ assembly-output: emit-asm +//@ compile-flags: --crate-type=lib -O -C llvm-args=-x86-asm-syntax=intel +//@ only-x86_64 +//@ ignore-sgx + +pub struct S { + a: u8, + b: u8, + c: u8, + d: u8, +} + +// CHECK-LABEL: manual_eq: +#[no_mangle] +pub fn manual_eq(s1: &S, s2: &S) -> bool { + // CHECK: mov [[REG:[a-z0-9]+]], dword ptr [{{[a-z0-9]+}}] + // CHECK-NEXT: cmp [[REG]], dword ptr [{{[a-z0-9]+}}] + // CHECK-NEXT: sete al + // CHECK-NEXT: ret + s1.a == s2.a && s1.b == s2.b && s1.c == s2.c && s1.d == s2.d +}