brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 6533452 Raw
62 lines · plain
1; RUN: opt -passes=mldst-motion -S < %s | FileCheck %s2; RUN: opt -aa-pipeline=basic-aa -passes='require<memdep>',mldst-motion \3; RUN:   -S < %s | FileCheck %s4 5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8@r = common global i32 0, align 49@s = common global i32 0, align 410 11; CHECK-LABEL: define void @test1(12define void @test1(i1 %cmp, ptr noalias %p) {13entry:14  br i1 %cmp, label %if.then, label %if.else15 16if.then:                                          ; preds = %entry17  call void @may_exit() nounwind18  %arrayidx = getelementptr inbounds i32, ptr %p, i64 119  %0 = load i32, ptr %arrayidx, align 420  store i32 %0, ptr @r, align 421  br label %if.end22; CHECK:       call void @may_exit()23; CHECK-NEXT:  %[[gep:.*]] = getelementptr inbounds i32, ptr %p, i64 124; CHECK-NEXT:  %[[load:.*]] = load i32, ptr %[[gep]], align 425; CHECK-NEXT:  store i32 %[[load]], ptr @r, align 426 27if.else:                                          ; preds = %entry28  %arrayidx1 = getelementptr inbounds i32, ptr %p, i64 129  %1 = load i32, ptr %arrayidx1, align 430  store i32 %1, ptr @s, align 431  br label %if.end32 33if.end:                                           ; preds = %if.else, %if.then34  ret void35}36 37; CHECK-LABEL: define void @test2(38define void @test2(i1 %cmp, ptr noalias %p) {39entry:40  br i1 %cmp, label %if.then, label %if.else41 42if.then:                                          ; preds = %entry43  %arrayidx = getelementptr inbounds i32, ptr %p, i64 144  store i32 1, ptr %arrayidx, align 445  call void @may_throw()46; CHECK:       %[[gep:.*]] = getelementptr inbounds i32, ptr %p, i64 147; CHECK-NEXT:  store i32 1, ptr %[[gep]], align 448; CHECK-NEXT:  call void @may_throw()49  br label %if.end50 51if.else:                                          ; preds = %entry52  %arrayidx1 = getelementptr inbounds i32, ptr %p, i64 153  store i32 2, ptr %arrayidx1, align 454  br label %if.end55 56if.end:                                           ; preds = %if.else, %if.then57  ret void58}59 60declare void @may_throw()61declare void @may_exit() nounwind62