@@ -435,7 +435,7 @@ impl<T: PassManagerSubType> PassManager<T> {
435
435
/// for each pair of compatible instructions. These heuristics
436
436
/// are intended to prevent vectorization in cases where it would
437
437
/// not yield a performance increase of the resulting code.
438
- #[ llvm_versions( 3.6 ..=6 .0) ]
438
+ #[ llvm_versions( 3.6 ..=4 .0) ]
439
439
pub fn add_bb_vectorize_pass ( & self ) {
440
440
use llvm_sys:: transforms:: vectorize:: LLVMAddBBVectorizePass ;
441
441
@@ -1048,31 +1048,60 @@ impl<T: PassManagerSubType> PassManager<T> {
1048
1048
}
1049
1049
}
1050
1050
1051
- #[ llvm_versions( 7.0 ) ]
1051
+ #[ llvm_versions( 7.0 ..=latest ) ]
1052
1052
pub fn add_aggressive_inst_combiner_pass ( & self ) {
1053
+ #[ cfg( feature = "llvm7-0" ) ]
1053
1054
use llvm_sys:: transforms:: scalar:: LLVMAddAggressiveInstCombinerPass ;
1055
+ #[ cfg( not( feature = "llvm7-0" ) ) ]
1056
+ use llvm_sys:: transforms:: aggressive_instcombine:: LLVMAddAggressiveInstCombinerPass ;
1054
1057
1055
1058
unsafe {
1056
1059
LLVMAddAggressiveInstCombinerPass ( self . pass_manager )
1057
1060
}
1058
1061
}
1059
1062
1063
+ #[ llvm_versions( 7.0 ..=latest) ]
1064
+ pub fn add_loop_unroll_and_jam_pass ( & self ) {
1065
+ use llvm_sys:: transforms:: scalar:: LLVMAddLoopUnrollAndJamPass ;
1066
+
1067
+ unsafe {
1068
+ LLVMAddLoopUnrollAndJamPass ( self . pass_manager )
1069
+ }
1070
+ }
1071
+
1060
1072
#[ llvm_versions( 8.0 ..=latest) ]
1061
- pub fn add_aggressive_inst_combiner_pass ( & self ) {
1062
- use llvm_sys:: transforms:: aggressive_instcombine :: LLVMAddAggressiveInstCombinerPass ;
1073
+ pub fn add_coroutine_early_pass ( & self ) {
1074
+ use llvm_sys:: transforms:: coroutine :: LLVMAddCoroEarlyPass ;
1063
1075
1064
1076
unsafe {
1065
- LLVMAddAggressiveInstCombinerPass ( self . pass_manager )
1077
+ LLVMAddCoroEarlyPass ( self . pass_manager )
1078
+ }
1079
+ }
1080
+
1081
+ #[ llvm_versions( 8.0 ..=latest) ]
1082
+ pub fn add_coroutine_split_pass ( & self ) {
1083
+ use llvm_sys:: transforms:: coroutine:: LLVMAddCoroSplitPass ;
1084
+
1085
+ unsafe {
1086
+ LLVMAddCoroSplitPass ( self . pass_manager )
1066
1087
}
1067
1088
}
1068
1089
1090
+ #[ llvm_versions( 8.0 ..=latest) ]
1091
+ pub fn add_coroutine_elide_pass ( & self ) {
1092
+ use llvm_sys:: transforms:: coroutine:: LLVMAddCoroElidePass ;
1069
1093
1070
- #[ llvm_versions( 7.0 ..=latest) ]
1071
- pub fn add_loop_unroll_and_jam_pass ( & self ) {
1072
- use llvm_sys:: transforms:: scalar:: LLVMAddLoopUnrollAndJamPass ;
1094
+ unsafe {
1095
+ LLVMAddCoroElidePass ( self . pass_manager )
1096
+ }
1097
+ }
1098
+
1099
+ #[ llvm_versions( 8.0 ..=latest) ]
1100
+ pub fn add_coroutine_cleanup_pass ( & self ) {
1101
+ use llvm_sys:: transforms:: coroutine:: LLVMAddCoroCleanupPass ;
1073
1102
1074
1103
unsafe {
1075
- LLVMAddLoopUnrollAndJamPass ( self . pass_manager )
1104
+ LLVMAddCoroCleanupPass ( self . pass_manager )
1076
1105
}
1077
1106
}
1078
1107
}
0 commit comments