From 45940dbc0c6cc32dc9754e8a001db839226f0ebe Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Mon, 22 Mar 2021 11:30:02 -0700 Subject: [PATCH] Tweak a test so it actually gets autogened --- llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll b/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll index ff525e9..ad19eec 100644 --- a/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll +++ b/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll @@ -1,14 +1,25 @@ -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py -; RUN: opt < %s -mtriple=x86_64-unknown-unknown -mergeicmps -verify-dom-info -S | FileCheck %s --check-prefix=X86 +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --force-update +; RUN: opt < %s -mtriple=x86_64-unknown-unknown -mergeicmps -verify-dom-info -S 2>&1 | FileCheck %s ; 8-byte int and 8-byte pointer should merge into a 16-byte memcmp. -; X86: memcmp(i8* {{.*}}, i8* {{.*}}, i64 16) %struct.outer = type { i64, %struct.inner* } %struct.inner = type { i32, i32, i32 } ; Function Attrs: nounwind uwtable -define dso_local i1 @"?foo@@YAHAEAUouter@@0@Z"(%struct.outer* align 8 dereferenceable(16) %o1, %struct.outer* align 8 dereferenceable(116) %o2) local_unnamed_addr #0 { +define i1 @test(%struct.outer* align 8 dereferenceable(16) %o1, %struct.outer* align 8 dereferenceable(116) %o2) local_unnamed_addr #0 { +; CHECK-LABEL: @test( +; CHECK-NEXT: "entry+if.then": +; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds [[STRUCT_OUTER:%.*]], %struct.outer* [[O1:%.*]], i64 0, i32 0 +; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds [[STRUCT_OUTER]], %struct.outer* [[O2:%.*]], i64 0, i32 0 +; CHECK-NEXT: [[CSTR:%.*]] = bitcast i64* [[TMP0]] to i8* +; CHECK-NEXT: [[CSTR1:%.*]] = bitcast i64* [[TMP1]] to i8* +; CHECK-NEXT: [[MEMCMP:%.*]] = call i32 @memcmp(i8* [[CSTR]], i8* [[CSTR1]], i64 16) +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[MEMCMP]], 0 +; CHECK-NEXT: br label [[IF_END5:%.*]] +; CHECK: if.end5: +; CHECK-NEXT: ret i1 [[TMP2]] +; entry: %p1 = getelementptr inbounds %struct.outer, %struct.outer* %o1, i64 0, i32 0 %0 = load i64, i64* %p1, align 8 -- 2.7.4