1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2; RUN: opt -passes=newgvn -S < %s | FileCheck %s 3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:4" 5target triple = "x86_64-unknown-linux-gnu" 6 7define void @f0(i1 %alwaysFalse, i64 %val, ptr %loc) { 8; CHECK-LABEL: define void @f0( 9; CHECK-SAME: i1 [[ALWAYSFALSE:%.*]], i64 [[VAL:%.*]], ptr [[LOC:%.*]]) { 10; CHECK-NEXT: entry: 11; CHECK-NEXT: store i64 [[VAL]], ptr [[LOC]], align 8 12; CHECK-NEXT: br i1 [[ALWAYSFALSE]], label [[NEVERTAKEN:%.*]], label [[ALWAYSTAKEN:%.*]] 13; CHECK: neverTaken: 14; CHECK-NEXT: [[PTR:%.*]] = load ptr addrspace(4), ptr [[LOC]], align 8 15; CHECK-NEXT: store i8 5, ptr addrspace(4) [[PTR]], align 1 16; CHECK-NEXT: ret void 17; CHECK: alwaysTaken: 18; CHECK-NEXT: ret void 19; 20 entry: 21 store i64 %val, ptr %loc 22 br i1 %alwaysFalse, label %neverTaken, label %alwaysTaken 23 24 neverTaken: 25 %ptr = load ptr addrspace(4), ptr %loc 26 store i8 5, ptr addrspace(4) %ptr 27 ret void 28 29 alwaysTaken: 30 ret void 31} 32 33define i64 @f1(i1 %alwaysFalse, ptr addrspace(4) %val, ptr %loc) { 34; CHECK-LABEL: define i64 @f1( 35; CHECK-SAME: i1 [[ALWAYSFALSE:%.*]], ptr addrspace(4) [[VAL:%.*]], ptr [[LOC:%.*]]) { 36; CHECK-NEXT: entry: 37; CHECK-NEXT: store ptr addrspace(4) [[VAL]], ptr [[LOC]], align 8 38; CHECK-NEXT: br i1 [[ALWAYSFALSE]], label [[NEVERTAKEN:%.*]], label [[ALWAYSTAKEN:%.*]] 39; CHECK: neverTaken: 40; CHECK-NEXT: [[INT:%.*]] = load i64, ptr [[LOC]], align 8 41; CHECK-NEXT: ret i64 [[INT]] 42; CHECK: alwaysTaken: 43; CHECK-NEXT: ret i64 42 44; 45 entry: 46 store ptr addrspace(4) %val, ptr %loc 47 br i1 %alwaysFalse, label %neverTaken, label %alwaysTaken 48 49 neverTaken: 50 %int = load i64, ptr %loc 51 ret i64 %int 52 53 alwaysTaken: 54 ret i64 42 55} 56