brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 2331469 Raw
166 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 4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"5target triple = "thumbv7--linux-gnueabi"6 7%struct.a = type { i16, i16, [1 x %union.a] }8%union.a = type { i32 }9 10@length = external global [0 x i32], align 411 12; Function Attrs: nounwind13define fastcc void @foo(ptr nocapture readonly %x, i1 %arg, i1 %arg2, i1 %arg3, i1 %arg4) {14; CHECK-LABEL: define fastcc void @foo(15; CHECK-SAME: ptr readonly captures(none) [[X:%.*]], i1 [[ARG:%.*]], i1 [[ARG2:%.*]], i1 [[ARG3:%.*]], i1 [[ARG4:%.*]]) {16; CHECK-NEXT:  entry:17; CHECK-NEXT:    br label [[BB0:%.*]]18; CHECK:       bb0:19; CHECK-NEXT:    [[X_TR:%.*]] = phi ptr [ [[X]], [[ENTRY:%.*]] ], [ null, [[LAND_LHS_TRUE:%.*]] ]20; CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr [[X_TR]], align 421; CHECK-NEXT:    [[CONV:%.*]] = zext i16 [[TMP0]] to i3222; CHECK-NEXT:    switch i32 [[CONV]], label [[IF_END_50:%.*]] [23; CHECK-NEXT:      i32 43, label [[CLEANUP:%.*]]24; CHECK-NEXT:      i32 52, label [[IF_THEN_5:%.*]]25; CHECK-NEXT:    ]26; CHECK:       if.then.5:27; CHECK-NEXT:    br i1 [[ARG]], label [[LAND_LHS_TRUE]], label [[IF_THEN_26:%.*]]28; CHECK:       land.lhs.true:29; CHECK-NEXT:    br i1 [[ARG2]], label [[CLEANUP]], label [[BB0]]30; CHECK:       if.then.26:31; CHECK-NEXT:    br i1 [[ARG3]], label [[COND_END:%.*]], label [[COND_FALSE:%.*]]32; CHECK:       cond.false:33; CHECK-NEXT:    [[MODE:%.*]] = getelementptr inbounds [[STRUCT_A:%.*]], ptr [[X_TR]], i32 0, i32 134; CHECK-NEXT:    [[BF_LOAD:%.*]] = load i16, ptr [[MODE]], align 235; CHECK-NEXT:    br label [[COND_END]]36; CHECK:       cond.end:37; CHECK-NEXT:    br i1 [[ARG3]], label [[IF_THEN_44:%.*]], label [[CLEANUP]]38; CHECK:       if.then.44:39; CHECK-NEXT:    unreachable40; CHECK:       if.end.50:41; CHECK-NEXT:    [[ARRAYIDX52:%.*]] = getelementptr inbounds [0 x i32], ptr @length, i32 0, i32 [[CONV]]42; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX52]], align 443; CHECK-NEXT:    br i1 [[ARG4]], label [[FOR_BODY_57:%.*]], label [[CLEANUP]]44; CHECK:       for.body.57:45; CHECK-NEXT:    unreachable46; CHECK:       cleanup:47; CHECK-NEXT:    ret void48;49entry:50  br label %bb051 52bb0:                                      ; preds = %land.lhs.true, %entry53  %x.tr = phi ptr [ %x, %entry ], [ null, %land.lhs.true ]54  %0 = load i16, ptr %x.tr, align 455  %conv = zext i16 %0 to i3256  switch i32 %conv, label %if.end.50 [57  i32 43, label %cleanup58  i32 52, label %if.then.559  ]60 61if.then.5:                                        ; preds = %bb062  br i1 %arg, label %land.lhs.true, label %if.then.2663 64land.lhs.true:                                    ; preds = %if.then.565  br i1 %arg2, label %cleanup, label %bb066 67if.then.26:                                       ; preds = %if.then.568  %x.tr.lcssa163 = phi ptr [ %x.tr, %if.then.5 ]69  br i1 %arg3, label %cond.end, label %cond.false70 71cond.false:                                       ; preds = %if.then.2672  %mode = getelementptr inbounds %struct.a, ptr %x.tr.lcssa163, i32 0, i32 173  %bf.load = load i16, ptr %mode, align 274  %bf.shl = shl i16 %bf.load, 875  br label %cond.end76 77cond.end:                                         ; preds = %cond.false, %if.then.2678  br i1 %arg3, label %if.then.44, label %cleanup79 80if.then.44:                                       ; preds = %cond.end81  unreachable82 83if.end.50:                                        ; preds = %bb084  %conv.lcssa = phi i32 [ %conv, %bb0 ]85  %arrayidx52 = getelementptr inbounds [0 x i32], ptr @length, i32 0, i32 %conv.lcssa86  %1 = load i32, ptr %arrayidx52, align 487  br i1 %arg4, label %for.body.57, label %cleanup88 89for.body.57:                                      ; preds = %if.end.5090  %i.2157 = add nsw i32 %1, -191  unreachable92 93cleanup:                                          ; preds = %if.end.50, %cond.end, %land.lhs.true, %bb094  ret void95}96 97@yy_c_buf_p = external unnamed_addr global ptr, align 498@dfg_text = external global ptr, align 499 100define void @dfg_lex(i1 %arg, i32 %arg2) {101; CHECK-LABEL: define void @dfg_lex(102; CHECK-SAME: i1 [[ARG:%.*]], i32 [[ARG2:%.*]]) {103; CHECK-NEXT:  entry:104; CHECK-NEXT:    br label [[WHILE_BODYTHREAD_PRE_SPLIT:%.*]]105; CHECK:       while.bodythread-pre-split:106; CHECK-NEXT:    br i1 [[ARG]], label [[IF_THEN_14:%.*]], label [[IF_END_15:%.*]]107; CHECK:       if.then.14:108; CHECK-NEXT:    [[V1:%.*]] = load i32, ptr @dfg_text, align 4109; CHECK-NEXT:    br label [[IF_END_15]]110; CHECK:       if.end.15:111; CHECK-NEXT:    [[V2:%.*]] = load ptr, ptr @yy_c_buf_p, align 4112; CHECK-NEXT:    br label [[WHILE_COND_16:%.*]]113; CHECK:       while.cond.16:114; CHECK-NEXT:    br i1 [[ARG]], label [[WHILE_COND_16]], label [[WHILE_END:%.*]]115; CHECK:       while.end:116; CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i8, ptr [[V2]], i32 undef117; CHECK-NEXT:    store ptr [[ADD_PTR]], ptr @dfg_text, align 4118; CHECK-NEXT:    [[SUB_PTR_RHS_CAST25:%.*]] = ptrtoint ptr [[ADD_PTR]] to i32119; CHECK-NEXT:    switch i32 [[ARG2]], label [[SW_DEFAULT:%.*]] [120; CHECK-NEXT:      i32 65, label [[WHILE_BODYTHREAD_PRE_SPLIT]]121; CHECK-NEXT:      i32 3, label [[RETURN:%.*]]122; CHECK-NEXT:      i32 57, label [[WHILE_BODYTHREAD_PRE_SPLIT]]123; CHECK-NEXT:      i32 60, label [[IF_THEN_14]]124; CHECK-NEXT:    ]125; CHECK:       sw.default:126; CHECK-NEXT:    unreachable127; CHECK:       return:128; CHECK-NEXT:    ret void129;130entry:131  br label %while.bodythread-pre-split132 133while.bodythread-pre-split:                       ; preds = %while.end, %while.end, %entry134  br i1 %arg, label %if.then.14, label %if.end.15135 136if.then.14:                                       ; preds = %while.end, %while.bodythread-pre-split137  %v1 = load i32, ptr @dfg_text, align 4138  %sub.ptr.sub = sub i32 undef, %v1139  br label %if.end.15140 141if.end.15:                                        ; preds = %if.then.14, %while.bodythread-pre-split142  %v2 = load ptr, ptr @yy_c_buf_p, align 4143  br label %while.cond.16144 145while.cond.16:                                    ; preds = %while.cond.16, %if.end.15146  br i1 %arg, label %while.cond.16, label %while.end147 148while.end:                                        ; preds = %while.cond.16149  %add.ptr = getelementptr inbounds i8, ptr %v2, i32 undef150  store ptr %add.ptr, ptr @dfg_text, align 4151  %sub.ptr.rhs.cast25 = ptrtoint ptr %add.ptr to i32152  %sub.ptr.sub26 = sub i32 0, %sub.ptr.rhs.cast25153  switch i32 %arg2, label %sw.default [154  i32 65, label %while.bodythread-pre-split155  i32 3, label %return156  i32 57, label %while.bodythread-pre-split157  i32 60, label %if.then.14158  ]159 160sw.default:                                       ; preds = %while.end161  unreachable162 163return:                                           ; preds = %while.end164  ret void165}166