brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 5840216 Raw
64 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -S -passes=gvn-hoist < %s | FileCheck %s3 4; Make sure the two stores @B do not get hoisted past the load @B.5 6@A = external global i87@B = external global ptr8 9define ptr @Foo(i1 %arg) {10; CHECK-LABEL: define ptr @Foo(i1 %arg) {11; CHECK-NEXT:    store i8 0, ptr @A, align 112; CHECK-NEXT:    br i1 %arg, label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]13; CHECK:       if.then:14; CHECK-NEXT:    store ptr null, ptr @B, align 815; CHECK-NEXT:    ret ptr null16; CHECK:       if.else:17; CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr @B, align 818; CHECK-NEXT:    store ptr null, ptr @B, align 819; CHECK-NEXT:    ret ptr [[TMP1]]20;21  store i8 0, ptr @A22  br i1 %arg, label %if.then, label %if.else23 24if.then:25  store ptr null, ptr @B26  ret ptr null27 28if.else:29  %1 = load ptr, ptr @B30  store ptr null, ptr @B31  ret ptr %132}33 34; Make sure the two stores @B do not get hoisted past the store @GlobalVar.35 36@GlobalVar = internal global i8 037 38define ptr @Fun(i1 %arg) {39; CHECK-LABEL: define ptr @Fun(i1 %arg) {40; CHECK-NEXT:    store i8 0, ptr @A, align 141; CHECK-NEXT:    br i1 %arg, label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]42; CHECK:       if.then:43; CHECK-NEXT:    store ptr null, ptr @B, align 844; CHECK-NEXT:    ret ptr null45; CHECK:       if.else:46; CHECK-NEXT:    store i8 0, ptr @GlobalVar, align 147; CHECK-NEXT:    store ptr null, ptr @B, align 848; CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr @B, align 849; CHECK-NEXT:    ret ptr [[TMP1]]50;51  store i8 0, ptr @A52  br i1 %arg, label %if.then, label %if.else53 54if.then:55  store ptr null, ptr @B56  ret ptr null57 58if.else:59  store i8 0, ptr @GlobalVar60  store ptr null, ptr @B61  %1 = load ptr, ptr @B62  ret ptr %163}64