mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
93b123f786
In both ADCE and BDCE (via DemandedBits) we should not remove instructions that are not guaranteed to return. This issue was pointed out by fhahn in the recent llvm-dev thread. Differential Revision: https://reviews.llvm.org/D96993
26 lines
611 B
LLVM
26 lines
611 B
LLVM
; RUN: llvm-as -o %t.bc %s
|
|
; RUN: llvm-lto -exported-symbol=foo -exported-symbol=bar -j2 -o %t.o %t.bc
|
|
; RUN: llvm-nm %t.o.0 | FileCheck --check-prefix=CHECK0 %s
|
|
; RUN: llvm-nm %t.o.1 | FileCheck --check-prefix=CHECK1 %s
|
|
|
|
; FIXME: Investigate test failures on these architectures.
|
|
; UNSUPPORTED: mips, mipsel, aarch64, powerpc64
|
|
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; CHECK0-NOT: bar
|
|
; CHECK0: T foo
|
|
; CHECK0-NOT: bar
|
|
define void @foo() mustprogress {
|
|
call void @bar()
|
|
ret void
|
|
}
|
|
|
|
; CHECK1-NOT: foo
|
|
; CHECK1: T bar
|
|
; CHECK1-NOT: foo
|
|
define void @bar() mustprogress {
|
|
call void @foo()
|
|
ret void
|
|
}
|