Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/SimpleLoopUnswitch/pr37888.ll
; RUN: opt -simple-loop-unswitch -loop-deletion -S < %s | FileCheck %s | ; RUN: opt -simple-loop-unswitch -loop-deletion -S < %s | FileCheck %s | ||||
; RUN: opt -simple-loop-unswitch -enable-mssa-loop-dependency=true -verify-memoryssa -loop-deletion -S < %s | FileCheck %s | ; RUN: opt -simple-loop-unswitch -enable-mssa-loop-dependency=true -verify-memoryssa -loop-deletion -S < %s | FileCheck %s | ||||
; | ; | ||||
; Check that when we do unswitching where we re-enqueue the loop to be processed | ; Check that when we do unswitching where we re-enqueue the loop to be processed | ||||
; again, but manage to delete the loop before ever getting to iterate on it, it | ; again, but manage to delete the loop before ever getting to iterate on it, it | ||||
; doesn't crash the legacy pass manager. | ; doesn't crash the legacy pass manager. | ||||
target triple = "x86_64-unknown-linux-gnu" | target triple = "x86_64-unknown-linux-gnu" | ||||
define void @pr37888() { | define void @pr37888() willreturn { | ||||
; CHECK-LABEL: define void @pr37888() | ; CHECK-LABEL: define void @pr37888() | ||||
entry: | entry: | ||||
%tobool = icmp ne i16 undef, 0 | %tobool = icmp ne i16 undef, 0 | ||||
br label %for.body | br label %for.body | ||||
; CHECK: %[[TOBOOL:.*]] = icmp ne | ; CHECK: %[[TOBOOL:.*]] = icmp ne | ||||
; CHECK-NEXT: br i1 %[[TOBOOL]], label %if.then, label %[[ENTRY_SPLIT:.*]] | ; CHECK-NEXT: br i1 %[[TOBOOL]], label %if.then, label %[[ENTRY_SPLIT:.*]] | ||||
; | ; | ||||
; CHECK: [[ENTRY_SPLIT]]: | ; CHECK: [[ENTRY_SPLIT]]: | ||||
Show All 21 Lines |