brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 7462159 Raw
126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -aa-pipeline=basic-aa -passes=gvn -S < %s | FileCheck %s3 4; This test catches an issue in MemoryDependenceAnalysis caching mechanism in presense of TBAA.5define i64 @foo(ptr %arg, i1 %arg1, i1 %arg2, i1 %arg3, i32 %arg4) {6; CHECK-LABEL: @foo(7; CHECK-NEXT:  bb:8; CHECK-NEXT:    [[TMP:%.*]] = load atomic ptr addrspace(1), ptr [[ARG:%.*]] unordered, align 89; CHECK-NEXT:    [[TMP5:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP]], i64 810; CHECK-NEXT:    store atomic i64 0, ptr addrspace(1) [[TMP5]] unordered, align 811; CHECK-NEXT:    br label [[BB6:%.*]]12; CHECK:       bb6:13; CHECK-NEXT:    [[TMP7:%.*]] = phi i64 [ 0, [[BB:%.*]] ], [ [[TMP22:%.*]], [[BB19:%.*]] ]14; CHECK-NEXT:    br i1 [[ARG1:%.*]], label [[BB19]], label [[BB8:%.*]]15; CHECK:       bb8:16; CHECK-NEXT:    [[TMP9:%.*]] = load atomic ptr addrspace(1), ptr [[ARG]] unordered, align 817; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB11:%.*]], label [[BB10:%.*]]18; CHECK:       bb10:19; CHECK-NEXT:    br label [[BB15:%.*]]20; CHECK:       bb11:21; CHECK-NEXT:    br i1 [[ARG3:%.*]], label [[BB12:%.*]], label [[BB18:%.*]]22; CHECK:       bb12:23; CHECK-NEXT:    [[TMP14:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP9]], i64 824; CHECK-NEXT:    store atomic i64 1, ptr addrspace(1) [[TMP14]] unordered, align 825; CHECK-NEXT:    ret i64 026; CHECK:       bb15:27; CHECK-NEXT:    [[TMP16:%.*]] = phi ptr addrspace(1) [ [[TMP9]], [[BB10]] ], [ [[TMP27:%.*]], [[BB26:%.*]] ]28; CHECK-NEXT:    [[TMP17:%.*]] = phi i64 [ [[TMP7]], [[BB10]] ], [ 0, [[BB26]] ]29; CHECK-NEXT:    switch i32 [[ARG4:%.*]], label [[BB19]] [30; CHECK-NEXT:    i32 0, label [[BB26]]31; CHECK-NEXT:    i32 1, label [[BB23:%.*]]32; CHECK-NEXT:    ]33; CHECK:       bb18:34; CHECK-NEXT:    br label [[BB19]]35; CHECK:       bb19:36; CHECK-NEXT:    [[TMP20:%.*]] = phi ptr addrspace(1) [ [[TMP16]], [[BB15]] ], [ inttoptr (i64 1 to ptr addrspace(1)), [[BB6]] ], [ [[TMP9]], [[BB18]] ]37; CHECK-NEXT:    [[TMP21:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP20]], i64 838; CHECK-NEXT:    [[TMP22]] = load atomic i64, ptr addrspace(1) [[TMP21]] unordered, align 8, !tbaa !039; CHECK-NEXT:    br label [[BB6]]40; CHECK:       bb23:41; CHECK-NEXT:    [[TMP24:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP16]], i64 842; CHECK-NEXT:    [[TMP25:%.*]] = load atomic i64, ptr addrspace(1) [[TMP24]] unordered, align 843; CHECK-NEXT:    call void @baz(i64 [[TMP25]]) #044; CHECK-NEXT:    ret i64 045; CHECK:       bb26:46; CHECK-NEXT:    call void @bar()47; CHECK-NEXT:    [[TMP27]] = load atomic ptr addrspace(1), ptr [[ARG]] unordered, align 848; CHECK-NEXT:    [[TMP28:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP27]], i64 849; CHECK-NEXT:    [[TMP29:%.*]] = load atomic i64, ptr addrspace(1) [[TMP28]] unordered, align 850; CHECK-NEXT:    [[TMP30:%.*]] = getelementptr inbounds i64, ptr addrspace(1) [[TMP27]], i64 4051; CHECK-NEXT:    store atomic i64 [[TMP29]], ptr addrspace(1) [[TMP30]] unordered, align 452; CHECK-NEXT:    br label [[BB15]]53;54bb:55  %tmp = load atomic ptr addrspace(1), ptr %arg unordered, align 856  %tmp5 = getelementptr inbounds i64, ptr addrspace(1) %tmp, i64 857  store atomic i64 0, ptr addrspace(1) %tmp5 unordered, align 858  br label %bb659 60bb6:                                              ; preds = %bb19, %bb61  %tmp7 = phi i64 [ 0, %bb ], [ %tmp22, %bb19 ]62  %tmp111 = inttoptr i64 1 to ptr addrspace(1)63  br i1 %arg1, label %bb19, label %bb864 65bb8:                                              ; preds = %bb666  %tmp9 = load atomic ptr addrspace(1), ptr %arg unordered, align 867  br i1 %arg2, label %bb11, label %bb1068 69bb10:                                             ; preds = %bb870  br label %bb1571 72bb11:                                             ; preds = %bb873  br i1 %arg3, label %bb12, label %bb1874 75bb12:                                             ; preds = %bb1176  %tmp13 = phi ptr addrspace(1) [ %tmp9, %bb11 ]77  %tmp14 = getelementptr inbounds i64, ptr addrspace(1) %tmp13, i64 878  store atomic i64 1, ptr addrspace(1) %tmp14 unordered, align 879  ret i64 080 81bb15:                                             ; preds = %bb26, %bb1082  %tmp16 = phi ptr addrspace(1) [ %tmp9, %bb10 ], [ %tmp27, %bb26 ]83  %tmp17 = phi i64 [ %tmp7, %bb10 ], [ 0, %bb26 ]84  switch i32 %arg4, label %bb19 [85  i32 0, label %bb2686  i32 1, label %bb2387  ]88 89bb18:                                             ; preds = %bb1190  br label %bb1991 92bb19:                                             ; preds = %bb18, %bb15, %bb693  %tmp20 = phi ptr addrspace(1) [ %tmp16, %bb15 ], [ %tmp111, %bb6 ], [ %tmp9, %bb18 ]94  %tmp21 = getelementptr inbounds i64, ptr addrspace(1) %tmp20, i64 895  %tmp22 = load atomic i64, ptr addrspace(1) %tmp21 unordered, align 8, !tbaa !096  br label %bb697 98bb23:                                             ; preds = %bb1599  %tmp24 = getelementptr inbounds i64, ptr addrspace(1) %tmp16, i64 8100  %tmp25 = load atomic i64, ptr addrspace(1) %tmp24 unordered, align 8101  call void @baz(i64 %tmp25) #0102  ret i64 0103 104bb26:                                             ; preds = %bb15105  call void @bar()106  %tmp27 = load atomic ptr addrspace(1), ptr %arg unordered, align 8107  %tmp28 = getelementptr inbounds i64, ptr addrspace(1) %tmp27, i64 8108  %tmp29 = load atomic i64, ptr addrspace(1) %tmp28 unordered, align 8109  %tmp30 = getelementptr inbounds i64, ptr addrspace(1) %tmp27, i64 40110  store atomic i64 %tmp29, ptr addrspace(1) %tmp30 unordered, align 4111  br label %bb15112}113 114declare void @bar()115 116; Function Attrs: inaccessiblememonly readonly117declare void @baz(i64) #0118 119attributes #0 = { inaccessiblememonly readonly }120 121!0 = !{!1, !2, i64 8}122!1 = !{!"Name", !2, i64 8}123!2 = !{!"tbaa_local_fields", !3, i64 0}124!3 = !{!"tbaa-access-type"}125 126