mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-21 03:05:26 -04:00
c24f456857
Summary: Whenever we get the previous definition, the assumption is that the recursion starts ina reachable block. If the recursion starts in an unreachable block, we may recurse indefinitely. Handle this case by returning LoE if the block is unreachable. Resolves PR43426. Reviewers: george.burgess.iv Subscribers: Prazek, sanjoy.google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68809 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374447 91177308-0d34-0410-b5e6-96231b3b80d8
41 lines
813 B
LLVM
41 lines
813 B
LLVM
; RUN: opt -licm -enable-mssa-loop-dependency -S %s | FileCheck %s
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; CHECK-LABEL: @d()
|
|
define dso_local void @d() {
|
|
entry:
|
|
br label %header
|
|
|
|
header:
|
|
store i32 1, i32* null, align 4
|
|
br i1 true, label %cleanup53, label %body
|
|
|
|
body:
|
|
br i1 undef, label %cleanup31, label %for.cond11
|
|
|
|
for.cond11: ; Needs branch as is
|
|
br i1 undef, label %unreachable, label %latch
|
|
|
|
cleanup31:
|
|
br label %unreachable
|
|
|
|
deadblock:
|
|
br i1 undef, label %unreachable, label %deadblock
|
|
|
|
cleanup53:
|
|
%val = load i32, i32* null, align 4
|
|
%cmpv = icmp eq i32 %val, 0
|
|
br i1 %cmpv, label %cleanup63, label %latch
|
|
|
|
latch:
|
|
br label %header
|
|
|
|
cleanup63:
|
|
ret void
|
|
|
|
unreachable:
|
|
unreachable
|
|
}
|
|
|