blob: abfa539fef4d477b82487c47bc0cbaeb71d86df8 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes="require<no-op-loop>" -S | FileCheck %s
; RUN: opt < %s -passes="loop(invalidate<all>)" -S | FileCheck %s
;; Test that if we have a loop out of LCSSA in an optnone function, we do not
;; assert when we require a loop analysis.
define i32 @foo() #0 {
; CHECK-LABEL: define i32 @foo(
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br label %[[FOR_COND:.*]]
; CHECK: [[FOR_COND]]:
; CHECK-NEXT: [[TMP0:%.*]] = add i16 0, 0
; CHECK-NEXT: br i1 false, label %[[FOR_COND]], label %[[HANDLER_POINTER_OVERFLOW:.*]]
; CHECK: [[HANDLER_POINTER_OVERFLOW]]:
; CHECK-NEXT: [[TMP1:%.*]] = zext i16 [[TMP0]] to i32
; CHECK-NEXT: ret i32 [[TMP1]]
;
entry:
br label %for.cond
for.cond:
%0 = add i16 0, 0
br i1 false, label %for.cond, label %handler.pointer_overflow
handler.pointer_overflow:
%1 = zext i16 %0 to i32
ret i32 %1
}
attributes #0 = { noinline optnone }