mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[NewPM] Add CrossDSOCFI pass irrespective of LTO optimization level
This pass is not an optimization and is needed for CFI functionality (cross-dso verification). Differential Revision: https://reviews.llvm.org/D106699
This commit is contained in:
parent
2a84a8fcc2
commit
987b8f791e
@ -1647,6 +1647,10 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
|
||||
// Convert @llvm.global.annotations to !annotation metadata.
|
||||
MPM.addPass(Annotation2MetadataPass());
|
||||
|
||||
// Create a function that performs CFI checks for cross-DSO calls with targets
|
||||
// in the current module.
|
||||
MPM.addPass(CrossDSOCFIPass());
|
||||
|
||||
if (Level == OptimizationLevel::O0) {
|
||||
// The WPD and LowerTypeTest passes need to run at -O0 to lower type
|
||||
// metadata and intrinsics.
|
||||
@ -1865,10 +1869,6 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
|
||||
MainFPM.addPass(JumpThreadingPass(/*InsertFreezeWhenUnfoldingSelect*/ true));
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(MainFPM)));
|
||||
|
||||
// Create a function that performs CFI checks for cross-DSO calls with
|
||||
// targets in the current module.
|
||||
MPM.addPass(CrossDSOCFIPass());
|
||||
|
||||
// Lower type metadata and the type.test intrinsic. This pass supports
|
||||
// clang's control flow integrity mechanisms (-fsanitize=cfi*) and needs
|
||||
// to be run at link time if CFI is enabled. This pass does nothing if
|
||||
|
@ -53,6 +53,7 @@
|
||||
; CHECK-THINLTO-NEXT: Running pass: EliminateAvailableExternallyPass
|
||||
; CHECK-THINLTO-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-LTO: Running pass: Annotation2MetadataPass
|
||||
; CHECK-LTO-NEXT: Running pass: CrossDSOCFIPass on [module]
|
||||
; CHECK-LTO-NEXT: Running pass: WholeProgramDevirtPass
|
||||
; CHECK-LTO-NEXT: Running analysis: InnerAnalysisManagerProxy
|
||||
; CHECK-LTO-NEXT: Running pass: LowerTypeTestsPass
|
||||
|
@ -26,6 +26,7 @@
|
||||
; RUN: --check-prefix=CHECK-O3 --check-prefix=CHECK-EP-Peephole
|
||||
|
||||
; CHECK-O: Running pass: Annotation2Metadata
|
||||
; CHECK-O-NEXT: Running pass: CrossDSOCFIPass
|
||||
; CHECK-O-NEXT: Running pass: GlobalDCEPass
|
||||
; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass
|
||||
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
|
||||
@ -123,7 +124,6 @@
|
||||
; CHECK-O23SZ-NEXT: Running pass: InstCombinePass on foo
|
||||
; CHECK-EP-Peephole-NEXT: Running pass: NoOpFunctionPass on foo
|
||||
; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass on foo
|
||||
; CHECK-O23SZ-NEXT: Running pass: CrossDSOCFIPass
|
||||
; CHECK-O23SZ-NEXT: Running pass: LowerTypeTestsPass
|
||||
; CHECK-O-NEXT: Running pass: LowerTypeTestsPass
|
||||
; CHECK-O23SZ-NEXT: Running pass: SimplifyCFGPass
|
||||
|
Loading…
Reference in New Issue
Block a user