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