mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
0b315633ca
The specific case that triggered this was when inlining a recursive internal function into itself caused the recursion to go away, allowing the inliner to mark the function as dead. The inliner marks the SCC as invalidated but does not provide a new SCC to continue with. This matches the implementations of ModuleToPostOrderCGSCCPassAdaptor and CGSCCPassManager. Fixes PR50363. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D106306
31 lines
408 B
LLVM
31 lines
408 B
LLVM
; RUN: opt -passes='devirt<0>(inline)' < %s -S | FileCheck %s
|
|
|
|
; CHECK-NOT: internal
|
|
; CHECK: define void @e()
|
|
; CHECK-NOT: internal
|
|
|
|
define void @e() {
|
|
entry:
|
|
call void @b()
|
|
ret void
|
|
}
|
|
|
|
define internal void @b() {
|
|
entry:
|
|
call void @d()
|
|
call void @c()
|
|
ret void
|
|
}
|
|
|
|
define internal void @d() {
|
|
entry:
|
|
unreachable
|
|
}
|
|
|
|
define internal void @c() {
|
|
entry:
|
|
call void @b()
|
|
call void @e()
|
|
ret void
|
|
}
|