mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
7178161bf7
It breaks up the function pass manager in the codegen pipeline. With empty parameters, it looks at the -mllvm flag -rewrite-map-file. This is likely not in use. Add a check that we only have one function pass manager in the codegen pipeline. Some tests relied on the fact that we had a module pass somewhere in the codegen pipeline. addr-label.ll crashes on ARM due to this change. This is because a ARMConstantPoolConstant containing a BasicBlock to represent a blockaddress may hold an invalid pointer to a BasicBlock if the blockaddress is invalidated by its BasicBlock getting removed. In that case all referencing blockaddresses are RAUW a constant int. Making ARMConstantPoolConstant::CVal a WeakVH fixes the crash, but I'm not sure that's the right fix. As a workaround, create a barrier right before ISel so that IR optimizations can't happen while a ARMConstantPoolConstant has been created. Reviewed By: rnk, MaskRay, compnerd Differential Revision: https://reviews.llvm.org/D99707
19 lines
457 B
LLVM
19 lines
457 B
LLVM
; RUN: llc -O2 -print-after-all < %s 2>/dev/null
|
|
; RUN: llc -O2 -print-after-all < %s 2>&1 | FileCheck %s --check-prefix=ALL
|
|
; RUN: llc -O2 -print-after-all -filter-print-funcs=foo < %s 2>&1 | FileCheck %s --check-prefix=FOO
|
|
; REQUIRES: default_triple
|
|
define void @tester(){
|
|
ret void
|
|
}
|
|
|
|
define void @foo(){
|
|
ret void
|
|
}
|
|
|
|
;ALL: define void @tester()
|
|
;ALL: define void @foo()
|
|
|
|
;FOO: IR Dump After
|
|
;FOO-NEXT: define void @foo()
|
|
;FOO-NOT: define void @tester
|