| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -passes=gvn -S -o - < %s | FileCheck --check-prefixes=CHECK,MDEP %s |
| ; RUN: opt -passes='gvn<memoryssa>' -S -o - < %s | FileCheck --check-prefixes=CHECK,MSSA %s |
| |
| target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" |
| target triple = "x86_64-unknown-linux-gnu" |
| |
| declare void @use(ptr readonly nocapture) |
| |
| define i8 @test() { |
| ; MDEP-LABEL: define i8 @test() { |
| ; MDEP-NEXT: [[A:%.*]] = alloca i8, align 1 |
| ; MDEP-NEXT: store i8 1, ptr [[A]], align 1 |
| ; MDEP-NEXT: call void @use(ptr [[A]]) |
| ; MDEP-NEXT: ret i8 1 |
| ; |
| ; MSSA-LABEL: define i8 @test() { |
| ; MSSA-NEXT: [[A:%.*]] = alloca i8, align 1 |
| ; MSSA-NEXT: store i8 1, ptr [[A]], align 1 |
| ; MSSA-NEXT: call void @use(ptr [[A]]) |
| ; MSSA-NEXT: [[B:%.*]] = load i8, ptr [[A]], align 1 |
| ; MSSA-NEXT: ret i8 [[B]] |
| ; |
| %a = alloca i8 |
| store i8 1, ptr %a |
| call void @use(ptr %a) |
| %b = load i8, ptr %a |
| ret i8 %b |
| } |
| ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: |
| ; CHECK: {{.*}} |