70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes='require<loops>,gvn' -S < %s | FileCheck %s3 4; This used to fail with ASAN enabled and if for some reason LoopInfo remained5; available during GVN. In this case BasicAA will use LI but6; MergeBlockIntoPredecessor in GVN failed to update LI.7 8target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"9 10%struct.wibble.1028 = type { i32, i32, %struct.barney.881 }11%struct.barney.881 = type { %struct.zot.882 }12%struct.zot.882 = type { [64 x i8] }13 14; Function Attrs: argmemonly15declare void @snork.1(ptr) local_unnamed_addr #016 17define hidden zeroext i1 @eggs(ptr %arg, i1 %arg2, i1 %arg3) unnamed_addr align 2 {18; CHECK-LABEL: define hidden zeroext i1 @eggs(19; CHECK-SAME: ptr [[ARG:%.*]], i1 [[ARG2:%.*]], i1 [[ARG3:%.*]]) unnamed_addr align 2 {20; CHECK-NEXT: [[BB:.*:]]21; CHECK-NEXT: br i1 [[ARG2]], label %[[BB14:.*]], label %[[BB3:.*]]22; CHECK: [[BB3]]:23; CHECK-NEXT: [[TMP:%.*]] = getelementptr inbounds [[STRUCT_WIBBLE_1028:%.*]], ptr [[ARG]], i64 0, i32 2, i32 0, i32 0, i64 024; CHECK-NEXT: br label %[[BB6:.*]]25; CHECK: [[BB6]]:26; CHECK-NEXT: br i1 [[ARG3]], label %[[BB11:.*]], label %[[BB8:.*]]27; CHECK: [[BB8]]:28; CHECK-NEXT: [[TMP9:%.*]] = load ptr, ptr [[TMP]], align 829; CHECK-NEXT: br label %[[BB12:.*]]30; CHECK: [[BB11]]:31; CHECK-NEXT: br label %[[BB12]]32; CHECK: [[BB12]]:33; CHECK-NEXT: [[TMP13:%.*]] = phi ptr [ [[TMP]], %[[BB11]] ], [ [[TMP9]], %[[BB8]] ]34; CHECK-NEXT: call void @snork.1(ptr [[TMP13]]) #[[ATTR1:[0-9]+]]35; CHECK-NEXT: br label %[[BB6]]36; CHECK: [[BB14]]:37; CHECK-NEXT: ret i1 false38;39bb:40 br i1 %arg2, label %bb14, label %bb341 42bb3: ; preds = %bb43 %tmp = getelementptr inbounds %struct.wibble.1028, ptr %arg, i64 0, i32 2, i32 0, i32 0, i64 044 br label %bb645 46bb6: ; preds = %bb12, %bb347 br label %bb748 49bb7: ; preds = %bb650 br i1 %arg3, label %bb11, label %bb851 52bb8: ; preds = %bb753 %tmp9 = load ptr, ptr %tmp, align 854 br label %bb1255 56bb11: ; preds = %bb757 br label %bb1258 59bb12: ; preds = %bb11, %bb860 %tmp13 = phi ptr [ %tmp, %bb11 ], [ %tmp9, %bb8 ]61 call void @snork.1(ptr %tmp13) #162 br label %bb663 64bb14: ; preds = %bb65 ret i1 false66}67 68attributes #0 = { argmemonly }69attributes #1 = { nounwind }70