brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 22c5e34 Raw
68 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -passes=mem2reg < %s | FileCheck %s3 4define i8 @single_store_literal_poison(i1 %cond) {5; CHECK-LABEL: define i8 @single_store_literal_poison(6; CHECK-SAME: i1 [[COND:%.*]]) {7; CHECK-NEXT:    br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]8; CHECK:       [[IF]]:9; CHECK-NEXT:    br label %[[EXIT]]10; CHECK:       [[EXIT]]:11; CHECK-NEXT:    ret i8 undef12;13  %a = alloca i8, align 114  br i1 %cond, label %if, label %exit15 16if:17  store i8 poison, ptr %a, align 118  br label %exit19 20exit:21  %v = load i8, ptr %a, align 122  ret i8 %v23}24 25; FIXME: This is a miscompile.26define i8 @single_store_maybe_poison(i1 %cond, i8 %x) {27; CHECK-LABEL: define i8 @single_store_maybe_poison(28; CHECK-SAME: i1 [[COND:%.*]], i8 [[X:%.*]]) {29; CHECK-NEXT:    br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]30; CHECK:       [[IF]]:31; CHECK-NEXT:    br label %[[EXIT]]32; CHECK:       [[EXIT]]:33; CHECK-NEXT:    [[A_0:%.*]] = phi i8 [ [[X]], %[[IF]] ], [ undef, [[TMP0:%.*]] ]34; CHECK-NEXT:    ret i8 [[A_0]]35;36  %a = alloca i8, align 137  br i1 %cond, label %if, label %exit38 39if:40  store i8 %x, ptr %a, align 141  br label %exit42 43exit:44  %v = load i8, ptr %a, align 145  ret i8 %v46}47 48define i8 @single_store_cant_be_poison(i1 %cond, i8 noundef %x) {49; CHECK-LABEL: define i8 @single_store_cant_be_poison(50; CHECK-SAME: i1 [[COND:%.*]], i8 noundef [[X:%.*]]) {51; CHECK-NEXT:    br i1 [[COND]], label %[[IF:.*]], label %[[EXIT:.*]]52; CHECK:       [[IF]]:53; CHECK-NEXT:    br label %[[EXIT]]54; CHECK:       [[EXIT]]:55; CHECK-NEXT:    ret i8 [[X]]56;57  %a = alloca i8, align 158  br i1 %cond, label %if, label %exit59 60if:61  store i8 %x, ptr %a, align 162  br label %exit63 64exit:65  %v = load i8, ptr %a, align 166  ret i8 %v67}68