brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 39d418c Raw
66 lines · plain
1; RUN: opt -passes=gvn-hoist -S < %s | FileCheck %s2target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"3target triple = "x86_64-unknown-linux-gnu"4 5@input = local_unnamed_addr global ptr null, align 86 7; Check that the load instruction is **not** hoisted8; CHECK-LABEL: @_Z3fooPii9; CHECK-LABEL: if.then:10; CHECK-NEXT: load11; CHECK-LABEL: if2:12; CHECK: load13; CHECK-LABEL: @main14 15define i32 @_Z3fooPii(ptr %p, i32 %x) local_unnamed_addr  {16entry:17  %cmp.not = icmp eq ptr %p, null18  br i1 %cmp.not, label %if.end3, label %if.then19 20if.then:                                          ; preds = %entry21  %0 = load i32, ptr %p, align 4, !tbaa !322  %add = add nsw i32 %0, %x23  %cmp1 = icmp eq i32 %add, 424  br i1 %cmp1, label %if2, label %if.end325 26if.end3:                                          ; preds = %entry, %if.then27  %x.addr.0 = phi i32 [ %add, %if.then ], [ %x, %entry ]28  %add4 = add nsw i32 %x.addr.0, 229  br i1 %cmp.not, label %if.end11, label %if230 31if2:                                              ; preds = %if.end3, %if.then32  %x.addr.1 = phi i32 [ 4, %if.then ], [ %x.addr.0, %if.end3 ]33  %y.0 = phi i32 [ 2, %if.then ], [ %add4, %if.end3 ]34  %1 = load i32, ptr %p, align 4, !tbaa !335  %add7 = add nsw i32 %x.addr.1, %136  %cmp8 = icmp eq i32 %add7, 537  br i1 %cmp8, label %end, label %if.end1138 39if.end11:                                         ; preds = %if.end3, %if240  %x.addr.2 = phi i32 [ %add7, %if2 ], [ %x.addr.0, %if.end3 ]41  %y.1 = phi i32 [ %y.0, %if2 ], [ %add4, %if.end3 ]42  %add12 = add nsw i32 %y.1, %x.addr.243  br label %end44 45end:                                              ; preds = %if2, %if.end1146  %x.addr.3 = phi i32 [ 5, %if2 ], [ %x.addr.2, %if.end11 ]47  %y.2 = phi i32 [ %y.0, %if2 ], [ %add12, %if.end11 ]48  %add13 = add nsw i32 %x.addr.3, %y.249  ret i32 %add1350}51 52define i32 @main() local_unnamed_addr  {53entry:54  %0 = load ptr, ptr @input, align 8, !tbaa !755  %call = call i32 @_Z3fooPii(ptr %0, i32 0)56  ret i32 %call57}58 59 60!3 = !{!4, !4, i64 0}61!4 = !{!"int", !5, i64 0}62!5 = !{!"omnipotent char", !6, i64 0}63!6 = !{!"Simple C++ TBAA"}64!7 = !{!8, !8, i64 0}65!8 = !{!"pointer@_ZTSPi", !5, i64 0}66