brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 2b7ceb4 Raw
139 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=globalopt -S < %s | FileCheck %s3 4@g1 = internal unnamed_addr global i32 05@g2 = internal unnamed_addr global i32 06@g3 = internal unnamed_addr global i32 07@g4 = internal unnamed_addr global i32 08@g5 = internal unnamed_addr global i32 09@g6 = internal unnamed_addr global i32 010@g7 = internal unnamed_addr global i32 011@g8 = internal unnamed_addr global ptr null12@tl = internal thread_local unnamed_addr global i32 013 14declare void @b()15 16define i1 @dom_const() {17; CHECK-LABEL: @dom_const(18; CHECK-NEXT:    call void @b()19; CHECK-NEXT:    ret i1 true20;21  store i1 true, ptr @g122  call void @b()23  %r = load i1, ptr @g124  ret i1 %r25}26 27define i32 @dom_arg(i32 %a) {28; CHECK-LABEL: @dom_arg(29; CHECK-NEXT:    store i32 [[A:%.*]], ptr @g2, align 430; CHECK-NEXT:    call void @b()31; CHECK-NEXT:    [[R:%.*]] = load i32, ptr @g2, align 432; CHECK-NEXT:    ret i32 [[R]]33;34  store i32 %a, ptr @g235  call void @b()36  %r = load i32, ptr @g237  ret i32 %r38}39 40define ptr @dom_thread_local_global() {41; CHECK-LABEL: @dom_thread_local_global(42; CHECK-NEXT:    [[P:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @tl)43; CHECK-NEXT:    store ptr [[P]], ptr @g3, align 844; CHECK-NEXT:    call void @b()45; CHECK-NEXT:    [[R:%.*]] = load ptr, ptr @g3, align 846; CHECK-NEXT:    ret ptr [[R]]47;48  %p = call ptr @llvm.threadlocal.address(ptr @tl)49  store ptr %p, ptr @g350  call void @b()51  %r = load ptr, ptr @g352  ret ptr %r53}54 55define i32 @dom_different_types() {56; CHECK-LABEL: @dom_different_types(57; CHECK-NEXT:    store i1 true, ptr @g4, align 158; CHECK-NEXT:    call void @b()59; CHECK-NEXT:    [[R:%.*]] = load i32, ptr @g4, align 460; CHECK-NEXT:    ret i32 [[R]]61;62  store i1 true, ptr @g463  call void @b()64  %r = load i32, ptr @g465  ret i32 %r66}67 68define i1 @no_dom(i1 %i) {69; CHECK-LABEL: @no_dom(70; CHECK-NEXT:    br i1 [[I:%.*]], label [[BB1:%.*]], label [[END:%.*]]71; CHECK:       bb1:72; CHECK-NEXT:    store i1 true, ptr @g5, align 173; CHECK-NEXT:    br label [[END]]74; CHECK:       end:75; CHECK-NEXT:    call void @b()76; CHECK-NEXT:    [[R:%.*]] = load i1, ptr @g5, align 177; CHECK-NEXT:    ret i1 [[R]]78;79  br i1 %i, label %bb1, label %end80bb1:81  store i1 true, ptr @g582  br label %end83end:84  call void @b()85  %r = load i1, ptr @g586  ret i1 %r87}88 89define i1 @dom_multiple_function_loads() {90; CHECK-LABEL: @dom_multiple_function_loads(91; CHECK-NEXT:    store i1 true, ptr @g6, align 192; CHECK-NEXT:    call void @b()93; CHECK-NEXT:    ret i1 true94;95  store i1 true, ptr @g696  call void @b()97  %r = load i1, ptr @g698  ret i1 %r99}100 101define i1 @other() {102; CHECK-LABEL: @other(103; CHECK-NEXT:    call void @b()104; CHECK-NEXT:    [[R:%.*]] = load i1, ptr @g6, align 1105; CHECK-NEXT:    ret i1 [[R]]106;107  call void @b()108  %r = load i1, ptr @g6109  ret i1 %r110}111 112define i1 @dom_volatile() {113; CHECK-LABEL: @dom_volatile(114; CHECK-NEXT:    store i1 true, ptr @g7, align 1115; CHECK-NEXT:    call void @b()116; CHECK-NEXT:    [[R:%.*]] = load volatile i1, ptr @g7, align 1117; CHECK-NEXT:    ret i1 [[R]]118;119  store i1 true, ptr @g7120  call void @b()121  %r = load volatile i1, ptr @g7122  ret i1 %r123}124 125define i1 @dom_store_const_and_initializer() {126; CHECK-LABEL: @dom_store_const_and_initializer(127; CHECK-NEXT:    store i1 true, ptr @g8, align 1128; CHECK-NEXT:    store i1 false, ptr @g8, align 1129; CHECK-NEXT:    call void @b()130; CHECK-NEXT:    [[R:%.*]] = load i1, ptr @g8, align 1131; CHECK-NEXT:    ret i1 [[R]]132;133  store i1 true, ptr @g8134  store i1 false, ptr @g8135  call void @b()136  %r = load i1, ptr @g8137  ret i1 %r138}139