llvm.org GIT mirror llvm / af4bf77 test / CodeGen / AVR / select-mbb-placement-bug.ll
af4bf77

Tree @af4bf77 (Download .tar.gz)

select-mbb-placement-bug.ll @af4bf77raw · history · blame

; RUN: llc -mcpu=atmega328p < %s -march=avr | FileCheck %s

; CHECK-LABEL: loopy
define internal fastcc void @loopy() {

; In this case, when we expand `Select8`/`Select16`, we should be
; replacing the existing MBB instead of adding a new one.
;
; https://github.com/avr-rust/rust/issues/49

; CHECK: LBB0_1:
; CHECK: LBB0_2:
; CHECK-NOT: LBB0_3:
start:
  br label %bb7.preheader

bb7.preheader:                                    ; preds = %bb10, %start
  %i = phi i8 [ 0, %start ], [ %j, %bb10 ]
  %j = phi i8 [ 1, %start ], [ %next, %bb10 ]
  br label %bb10

bb4:                                              ; preds = %bb10
  ret void

bb10:                                             ; preds = %bb7.preheader
  tail call fastcc void @observe(i8 %i, i8 1)
  %0 = icmp ult i8 %j, 20
  %1 = zext i1 %0 to i8
  %next = add i8 %j, %1
  br i1 %0, label %bb7.preheader, label %bb4

}

declare void @observe(i8, i8);