| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 | |
| ; RUN: opt < %s -passes=instcombine,memcpyopt -S | FileCheck %s | |
| ; FIXME: These two memset calls should be merged into a single one. | |
| define void @merge_memset(ptr %p, i1 %cond) { | |
| ; CHECK-LABEL: define void @merge_memset( | |
| ; CHECK-SAME: ptr [[P:%.*]], i1 [[COND:%.*]]) { | |
| ; CHECK-NEXT: [[OFF:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 4096 | |
| ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[P]], i8 0, i64 4864, i1 false) | |
| ; CHECK-NEXT: ret void | |
| ; | |
| %sel = select i1 %cond, ptr null, ptr %p | |
| tail call void @llvm.memset.p0.i64(ptr noundef nonnull %sel, i8 0, i64 4096, i1 false) | |
| %off = getelementptr inbounds nuw i8, ptr %sel, i64 4096 | |
| tail call void @llvm.memset.p0.i64(ptr noundef nonnull %off, i8 0, i64 768, i1 false) | |
| ret void | |
| } |