brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 930e5b3 Raw
79 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -passes=newgvn -S < %s | FileCheck %s3@y = external global i324@z = external global i325 6; Function Attrs: nounwind ssp uwtable7define void @foo(i32 %x) {8; CHECK-LABEL: define void @foo(9; CHECK-SAME: i32 [[X:%.*]]) {10; CHECK-NEXT:    [[DOTPRE:%.*]] = load i32, ptr @y, align 411; CHECK-NEXT:    br i1 false, label [[IF_THEN:%.*]], label [[ENTRY_IF_END_CRIT_EDGE:%.*]]12; CHECK:       entry.if.end_crit_edge:13; CHECK-NEXT:    br label [[IF_END:%.*]]14; CHECK:       if.then:15; CHECK-NEXT:    store i8 poison, ptr null, align 116; CHECK-NEXT:    br label [[IF_END]]17; CHECK:       if.end:18; CHECK-NEXT:    tail call void @bar(i32 [[DOTPRE]])19; CHECK-NEXT:    ret void20;21 22  %t = sub i32 %x, %x23  %.pre = load i32, ptr @y, align 424  %cmp = icmp sgt i32 %t, 225  br i1 %cmp, label %if.then, label %entry.if.end_crit_edge26 27entry.if.end_crit_edge:                           ; preds = %entry28  br label %if.end29 30if.then:                                          ; preds = %entry31  %add = add nsw i32 %x, 332  store i32 %add, ptr @y, align 433  br label %if.end34 35if.end:                                           ; preds = %entry.if.end_crit_edge, %if.then36  %1 = phi i32 [ %.pre, %entry.if.end_crit_edge ], [ %add, %if.then ]37  tail call void @bar(i32 %1)38  ret void39}40 41define void @foo2(i32 %x) {42; CHECK-LABEL: define void @foo2(43; CHECK-SAME: i32 [[X:%.*]]) {44; CHECK-NEXT:  entry:45; CHECK-NEXT:    [[DOTPRE:%.*]] = load i32, ptr @y, align 446; CHECK-NEXT:    br i1 false, label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]47; CHECK:       if.then:48; CHECK-NEXT:    store i8 poison, ptr null, align 149; CHECK-NEXT:    br label [[IF_END:%.*]]50; CHECK:       if.else:51; CHECK-NEXT:    store i32 1, ptr @z, align 452; CHECK-NEXT:    br label [[IF_END]]53; CHECK:       if.end:54; CHECK-NEXT:    tail call void @bar(i32 [[DOTPRE]])55; CHECK-NEXT:    ret void56;57entry:58  %t = sub i32 %x, %x59  %.pre = load i32, ptr @y, align 460  %cmp = icmp sgt i32 %t, 261  br i1 %cmp, label %if.then, label %if.else62 63if.then:                                          ; preds = %entry64  %add = add nsw i32 %x, 365  store i32 %add, ptr @y, align 466  br label %if.end67 68if.else:                                          ; preds = %entry69  store i32 1, ptr @z, align 470  br label %if.end71 72if.end:                                           ; preds = %if.else, %if.then73  %0 = phi i32 [ %.pre, %if.else ], [ %add, %if.then ]74  tail call void @bar(i32 %0)75  ret void76}77 78declare void @bar(i32)79