brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 15bc841 Raw
44 lines · plain
1; RUN: llc -asm-verbose=false < %s | FileCheck %s2; PR260633 4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"5target triple = "armv7--linux-gnueabihf"6 7; CHECK: .LBB0_1:8; CHECK-NEXT: bl      f{{$}}9; CHECK-NEXT: ldrb    r[[T0:[0-9]+]], [r{{[0-9]+}}, #1]!{{$}}10; CHECK-NEXT: cmp     r{{[0-9]+}}, #1{{$}}11; CHECK-NEXT: cmpne   r[[T0]], #0{{$}}12; CHECK-NEXT: bne     .LBB0_1{{$}}13define ptr @h(ptr readonly %a, i32 %b, i32 %c) {14entry:15  %0 = load i8, ptr %a, align 116  %tobool4 = icmp ne i8 %0, 017  %cmp5 = icmp ne i32 %b, 118  %1 = and i1 %cmp5, %tobool419  br i1 %1, label %while.body.preheader, label %while.end20 21while.body.preheader:                             ; preds = %entry22  br label %while.body23 24while.body:                                       ; preds = %while.body.preheader, %while.body25  %a.addr.06 = phi ptr [ %incdec.ptr, %while.body ], [ %a, %while.body.preheader ]26  %call = tail call i32 @f()27  %incdec.ptr = getelementptr inbounds i8, ptr %a.addr.06, i32 128  %2 = load i8, ptr %incdec.ptr, align 129  %tobool = icmp ne i8 %2, 030  %cmp = icmp ne i32 %call, 131  %3 = and i1 %cmp, %tobool32  br i1 %3, label %while.body, label %while.end.loopexit33 34while.end.loopexit:                               ; preds = %while.body35  %incdec.ptr.lcssa = phi ptr [ %incdec.ptr, %while.body ]36  br label %while.end37 38while.end:                                        ; preds = %while.end.loopexit, %entry39  %a.addr.0.lcssa = phi ptr [ %a, %entry ], [ %incdec.ptr.lcssa, %while.end.loopexit ]40  ret ptr %a.addr.0.lcssa41}42 43declare i32 @f(...)44