| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -S -passes='instcombine<no-verify-fixpoint>' < %s | FileCheck %s |
| |
| ; This does not reach a fixpoint, because the global initializer is not in |
| ; folded form. This will not happen if preceded by a GlobalOpt run. |
| |
| target datalayout = "p:8:8" |
| |
| @g = external global i8 |
| @c = constant ptr getelementptr inbounds (i8, ptr @g, i64 1) |
| |
| define i1 @test(ptr %p) { |
| ; CHECK-LABEL: @test( |
| ; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[P:%.*]], getelementptr inbounds (i8, ptr @g, i64 1) |
| ; CHECK-NEXT: ret i1 [[CMP]] |
| ; |
| %alloca = alloca ptr |
| call void @llvm.memcpy.p0.p0.i32(ptr %alloca, ptr @c, i32 0, i1 false) |
| %load = load ptr, ptr %alloca |
| %cmp = icmp eq ptr %p, %load |
| ret i1 %cmp |
| } |
| |
| declare void @llvm.memcpy.p0.p0.i32(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg) |