Skip to content

Commit

Permalink
Merge pull request rust-lang#277 from folkertdev/llvm-13
Browse files Browse the repository at this point in the history
Llvm 13 support
  • Loading branch information
TheDan64 authored Oct 30, 2021
2 parents a42e6aa + 1fad5c9 commit 45d4dcb
Show file tree
Hide file tree
Showing 12 changed files with 102 additions and 44 deletions.
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ llvm9-0 = ["llvm-sys-90"]
llvm10-0 = ["llvm-sys-100"]
llvm11-0 = ["llvm-sys-110"]
llvm12-0 = ["llvm-sys-120"]
llvm13-0 = ["llvm-sys-130"]
# Don't link aganist LLVM libraries. This is useful if another dependency is
# installing LLVM. See llvm-sys for more details. We can't enable a single
# `no-llvm-linking` feature across the board of llvm versions, as it'll cause
Expand All @@ -45,6 +46,7 @@ llvm9-0-no-llvm-linking = ["llvm9-0", "llvm-sys-90/no-llvm-linking"]
llvm10-0-no-llvm-linking = ["llvm10-0", "llvm-sys-100/no-llvm-linking"]
llvm11-0-no-llvm-linking = ["llvm11-0", "llvm-sys-110/no-llvm-linking"]
llvm12-0-no-llvm-linking = ["llvm12-0", "llvm-sys-120/no-llvm-linking"]
llvm13-0-no-llvm-linking = ["llvm13-0", "llvm-sys-130/no-llvm-linking"]
# Don't force linking to libffi on non-windows platforms. Without this feature
# inkwell always links to libffi on non-windows platforms.
no-libffi-linking = []
Expand Down Expand Up @@ -102,6 +104,7 @@ llvm-sys-90 = { package = "llvm-sys", version = "90.2", optional = true }
llvm-sys-100 = { package = "llvm-sys", version = "100.2", optional = true }
llvm-sys-110 = { package = "llvm-sys", version = "110.0", optional = true }
llvm-sys-120 = { package = "llvm-sys", version = "120.2", optional = true }
llvm-sys-130 = { package = "llvm-sys", version = "130.0", optional = true }
once_cell = "1.4.1"
parking_lot = "0.11"
regex = "1"
Expand Down
4 changes: 2 additions & 2 deletions internal_macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ use syn::spanned::Spanned;
use syn::{Token, LitFloat, Ident, Item, Field, Variant, Attribute};

// This array should match the LLVM features in the top level Cargo manifest
const FEATURE_VERSIONS: [&str; 13] =
["llvm3-6", "llvm3-7", "llvm3-8", "llvm3-9", "llvm4-0", "llvm5-0", "llvm6-0", "llvm7-0", "llvm8-0", "llvm9-0", "llvm10-0", "llvm11-0", "llvm12-0"];
const FEATURE_VERSIONS: [&str; 14] =
["llvm3-6", "llvm3-7", "llvm3-8", "llvm3-9", "llvm4-0", "llvm5-0", "llvm6-0", "llvm7-0", "llvm8-0", "llvm9-0", "llvm10-0", "llvm11-0", "llvm12-0", "llvm13-0"];

/// Gets the index of the feature version that represents `latest`
fn get_latest_feature_index(features: &[&str]) -> usize {
Expand Down
55 changes: 53 additions & 2 deletions src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,55 @@ impl Context {
}
}

/// Creates a inline asm function pointer.
///
/// # Example
/// ```no_run
/// use std::convert::TryFrom;
/// use inkwell::context::Context;
/// use inkwell::values::CallableValue;
///
/// let context = Context::create();
/// let module = context.create_module("my_module");
/// let builder = context.create_builder();
/// let void_type = context.void_type();
/// let fn_type = void_type.fn_type(&[], false);
/// let fn_val = module.add_function("my_fn", fn_type, None);
/// let basic_block = context.append_basic_block(fn_val, "entry");
///
/// builder.position_at_end(basic_block);
/// let asm_fn = context.i64_type().fn_type(&[context.i64_type().into(), context.i64_type().into()], false);
/// let asm = context.create_inline_asm(asm_fn, "syscall".to_string(), "=r,{rax},{rdi}".to_string(), true, false, None, false);
/// let params = &[context.i64_type().const_int(60, false).into(), context.i64_type().const_int(1, false).into()];
/// let callable_value = CallableValue::try_from(asm).unwrap();
/// builder.build_call(callable_value, params, "exit");
/// builder.build_return(None);
/// ```
#[llvm_versions(13.0..=latest)]
pub fn create_inline_asm(&self, ty: FunctionType, mut assembly: String, mut constraints: String, sideeffects: bool, alignstack: bool, dialect: Option<InlineAsmDialect>,
can_throw: bool,
) -> PointerValue {
#[cfg(any(feature = "llvm13-0"))]
let can_throw_llvmbool = can_throw as i32;

let value = unsafe {
LLVMGetInlineAsm(
ty.as_type_ref(),
assembly.as_mut_ptr() as *mut ::libc::c_char,
assembly.len(),
constraints.as_mut_ptr() as *mut ::libc::c_char,
constraints.len(),
sideeffects as i32,
alignstack as i32,
dialect.unwrap_or(InlineAsmDialect::ATT).into(),
can_throw_llvmbool,
)
};

unsafe {
PointerValue::new(value)
}
}
/// Creates a inline asm function pointer.
///
/// # Example
Expand All @@ -220,7 +269,8 @@ impl Context {
/// let callable_value = CallableValue::try_from(asm).unwrap();
/// builder.build_call(callable_value, params, "exit");
/// builder.build_return(None);
#[llvm_versions(7.0..=latest)]
/// ```
#[llvm_versions(7.0..=12.0)]
pub fn create_inline_asm(&self, ty: FunctionType, mut assembly: String, mut constraints: String, sideeffects: bool, alignstack: bool, dialect: Option<InlineAsmDialect>) -> PointerValue {
let value = unsafe {
LLVMGetInlineAsm(
Expand All @@ -231,7 +281,7 @@ impl Context {
constraints.len(),
sideeffects as i32,
alignstack as i32,
dialect.unwrap_or(InlineAsmDialect::ATT).into()
dialect.unwrap_or(InlineAsmDialect::ATT).into(),
)
};

Expand Down Expand Up @@ -262,6 +312,7 @@ impl Context {
/// let callable_value = CallableValue::try_from(asm).unwrap();
/// builder.build_call(callable_value, params, "exit");
/// builder.build_return(None);
/// ```
#[llvm_versions(3.6..7.0)]
pub fn create_inline_asm(&self, ty: FunctionType, assembly: String, constraints: String, sideeffects: bool, alignstack: bool) -> PointerValue {
let value = unsafe {
Expand Down
14 changes: 7 additions & 7 deletions src/debug_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,9 @@ impl<'ctx> DebugInfoBuilder<'ctx> {
dwo_id: libc::c_uint,
split_debug_inlining: bool,
debug_info_for_profiling: bool,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sysroot: &str,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sdk: &str,
) -> (Self, DICompileUnit<'ctx>) {
let builder = unsafe {
Expand Down Expand Up @@ -209,9 +209,9 @@ impl<'ctx> DebugInfoBuilder<'ctx> {
dwo_id,
split_debug_inlining,
debug_info_for_profiling,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sysroot,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sdk
);

Expand Down Expand Up @@ -244,9 +244,9 @@ impl<'ctx> DebugInfoBuilder<'ctx> {
dwo_id: libc::c_uint,
split_debug_inlining: bool,
debug_info_for_profiling: bool,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sysroot: &str,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sdk: &str,
) -> DICompileUnit<'ctx> {

Expand All @@ -271,7 +271,7 @@ impl<'ctx> DebugInfoBuilder<'ctx> {
debug_info_for_profiling as _,
) }

#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
{ LLVMDIBuilderCreateCompileUnit(
self.builder,
language.into(),
Expand Down
4 changes: 3 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ extern crate llvm_sys_100 as llvm_sys;
extern crate llvm_sys_110 as llvm_sys;
#[cfg(feature="llvm12-0")]
extern crate llvm_sys_120 as llvm_sys;
#[cfg(feature="llvm13-0")]
extern crate llvm_sys_130 as llvm_sys;

use llvm_sys::{LLVMIntPredicate, LLVMRealPredicate, LLVMVisibility, LLVMThreadLocalMode, LLVMDLLStorageClass, LLVMAtomicOrdering, LLVMAtomicRMWBinOp};

Expand Down Expand Up @@ -104,7 +106,7 @@ macro_rules! assert_unique_used_features {
}
}

assert_unique_used_features!{"llvm3-6", "llvm3-7", "llvm3-8", "llvm3-9", "llvm4-0", "llvm5-0", "llvm6-0", "llvm7-0", "llvm8-0", "llvm9-0", "llvm10-0", "llvm11-0", "llvm12-0"}
assert_unique_used_features!{"llvm3-6", "llvm3-7", "llvm3-8", "llvm3-9", "llvm4-0", "llvm5-0", "llvm6-0", "llvm7-0", "llvm8-0", "llvm9-0", "llvm10-0", "llvm11-0", "llvm12-0", "llvm13-0"}

/// Defines the address space in which a global will be inserted.
///
Expand Down
8 changes: 4 additions & 4 deletions src/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1385,18 +1385,18 @@ impl<'ctx> Module<'ctx> {
dwo_id: libc::c_uint,
split_debug_inlining: bool,
debug_info_for_profiling: bool,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sysroot: &str,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sdk: &str,
) -> (DebugInfoBuilder<'ctx>, DICompileUnit<'ctx>) {
DebugInfoBuilder::new(self, allow_unresolved,
language, filename, directory, producer, is_optimized, flags,
runtime_ver, split_name, kind, dwo_id, split_debug_inlining,
debug_info_for_profiling,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sysroot,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
sdk
)
}
Expand Down
12 changes: 6 additions & 6 deletions src/types/enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ impl<'ctx> AnyTypeEnum<'ctx> {
LLVMTypeKind::LLVMX86_FP80TypeKind |
LLVMTypeKind::LLVMFP128TypeKind |
LLVMTypeKind::LLVMPPC_FP128TypeKind => AnyTypeEnum::FloatType(FloatType::new(type_)),
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMBFloatTypeKind => AnyTypeEnum::FloatType(FloatType::new(type_)),
LLVMTypeKind::LLVMLabelTypeKind => panic!("FIXME: Unsupported type: Label"),
LLVMTypeKind::LLVMIntegerTypeKind => AnyTypeEnum::IntType(IntType::new(type_)),
Expand All @@ -207,11 +207,11 @@ impl<'ctx> AnyTypeEnum<'ctx> {
LLVMTypeKind::LLVMArrayTypeKind => AnyTypeEnum::ArrayType(ArrayType::new(type_)),
LLVMTypeKind::LLVMPointerTypeKind => AnyTypeEnum::PointerType(PointerType::new(type_)),
LLVMTypeKind::LLVMVectorTypeKind => AnyTypeEnum::VectorType(VectorType::new(type_)),
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMScalableVectorTypeKind => AnyTypeEnum::VectorType(VectorType::new(type_)),
LLVMTypeKind::LLVMMetadataTypeKind => unreachable!("Metadata type is not supported as AnyType."),
LLVMTypeKind::LLVMX86_MMXTypeKind => panic!("FIXME: Unsupported type: MMX"),
#[cfg(feature = "llvm12-0")]
#[cfg(any(feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMX86_AMXTypeKind => panic!("FIXME: Unsupported type: AMX"),
#[cfg(not(any(feature = "llvm3-6", feature = "llvm3-7")))]
LLVMTypeKind::LLVMTokenTypeKind => panic!("FIXME: Unsupported type: Token"),
Expand Down Expand Up @@ -344,20 +344,20 @@ impl<'ctx> BasicTypeEnum<'ctx> {
LLVMTypeKind::LLVMX86_FP80TypeKind |
LLVMTypeKind::LLVMFP128TypeKind |
LLVMTypeKind::LLVMPPC_FP128TypeKind => BasicTypeEnum::FloatType(FloatType::new(type_)),
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMBFloatTypeKind => BasicTypeEnum::FloatType(FloatType::new(type_)),
LLVMTypeKind::LLVMIntegerTypeKind => BasicTypeEnum::IntType(IntType::new(type_)),
LLVMTypeKind::LLVMStructTypeKind => BasicTypeEnum::StructType(StructType::new(type_)),
LLVMTypeKind::LLVMPointerTypeKind => BasicTypeEnum::PointerType(PointerType::new(type_)),
LLVMTypeKind::LLVMArrayTypeKind => BasicTypeEnum::ArrayType(ArrayType::new(type_)),
LLVMTypeKind::LLVMVectorTypeKind => BasicTypeEnum::VectorType(VectorType::new(type_)),
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMScalableVectorTypeKind => BasicTypeEnum::VectorType(VectorType::new(type_)),
LLVMTypeKind::LLVMMetadataTypeKind => unreachable!("Unsupported basic type: Metadata"),
// see https://llvm.org/docs/LangRef.html#x86-mmx-type
LLVMTypeKind::LLVMX86_MMXTypeKind => unreachable!("Unsupported basic type: MMX"),
// see https://llvm.org/docs/LangRef.html#x86-amx-type
#[cfg(feature = "llvm12-0")]
#[cfg(any(feature = "llvm12-0", feature = "llvm13-0"))]
LLVMTypeKind::LLVMX86_AMXTypeKind => unreachable!("Unsupported basic type: AMX"),
LLVMTypeKind::LLVMLabelTypeKind => unreachable!("Unsupported basic type: Label"),
LLVMTypeKind::LLVMVoidTypeKind => unreachable!("Unsupported basic type: VoidType"),
Expand Down
2 changes: 2 additions & 0 deletions src/values/metadata_value.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ pub const FIRST_CUSTOM_METADATA_KIND_ID: u32 = 28;
pub const FIRST_CUSTOM_METADATA_KIND_ID: u32 = 30;
#[cfg(feature = "llvm12-0")]
pub const FIRST_CUSTOM_METADATA_KIND_ID: u32 = 31;
#[cfg(feature = "llvm13-0")]
pub const FIRST_CUSTOM_METADATA_KIND_ID: u32 = 31;

#[derive(PartialEq, Eq, Clone, Copy, Hash)]
pub struct MetadataValue<'ctx> {
Expand Down
4 changes: 2 additions & 2 deletions tests/all/test_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ fn test_build_invoke_catch_all() {
let exception_type = context.struct_type(&[i8_ptr_type.into(), i32_type.into()], false);

let null = i8_ptr_type.const_zero();
let res = builder.build_landing_pad(exception_type, personality_function, &[null.into()], false, "res");
builder.build_landing_pad(exception_type, personality_function, &[null.into()], false, "res");

let fakepi = f32_type.const_zero();

Expand Down Expand Up @@ -268,7 +268,7 @@ fn landing_pad_filter() {

// make the filter landing pad
let filter_pattern = i8_ptr_type.const_array(&[type_info_int.as_any_value_enum().into_pointer_value()]);
let res = builder.build_landing_pad(exception_type, personality_function, &[filter_pattern.into()], false, "res");
builder.build_landing_pad(exception_type, personality_function, &[filter_pattern.into()], false, "res");

let fakepi = f32_type.const_zero();

Expand Down
24 changes: 12 additions & 12 deletions tests/all/test_debug_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ fn test_smoke() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down Expand Up @@ -108,9 +108,9 @@ fn test_struct_with_placeholders() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down Expand Up @@ -225,9 +225,9 @@ fn test_no_explicit_finalize() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down Expand Up @@ -256,9 +256,9 @@ fn test_replacing_placeholder_with_placeholder() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down Expand Up @@ -303,9 +303,9 @@ fn test_anonymous_basic_type() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down Expand Up @@ -341,9 +341,9 @@ fn test_global_expressions() {
0,
false,
false,
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
"",
);

Expand Down
10 changes: 5 additions & 5 deletions tests/all/test_passes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ fn test_init_all_passes_for_module() {
pass_manager.add_always_inliner_pass();
pass_manager.add_global_dce_pass();
pass_manager.add_global_optimizer_pass();
#[cfg(not(feature = "llvm12-0"))]
#[cfg(not(any(feature = "llvm12-0", feature = "llvm13-0")))]
pass_manager.add_ip_constant_propagation_pass();
pass_manager.add_prune_eh_pass();
pass_manager.add_ipsccp_pass();
Expand Down Expand Up @@ -63,9 +63,9 @@ fn test_init_all_passes_for_module() {
pass_manager.add_scalar_repl_aggregates_pass_with_threshold(1);
pass_manager.add_simplify_lib_calls_pass();
pass_manager.add_tail_call_elimination_pass();
#[cfg(not(feature = "llvm12-0"))]
#[cfg(not(any(feature = "llvm12-0", feature = "llvm13-0")))]
pass_manager.add_constant_propagation_pass();
#[cfg(feature = "llvm12-0")]
#[cfg(any(feature = "llvm12-0", feature = "llvm13-0"))]
pass_manager.add_instruction_simplify_pass();
pass_manager.add_demote_memory_to_register_pass();
pass_manager.add_verifier_pass();
Expand Down Expand Up @@ -147,9 +147,9 @@ fn test_pass_manager_builder() {
let module2 = module.clone();

// TODOC: In 3.6, 3.8, & 3.9 it returns false. Seems like a LLVM bug?
#[cfg(not(any(feature = "llvm3-7", feature = "llvm6-0", feature = "llvm7-0", feature = "llvm8-0", feature = "llvm9-0", feature = "llvm10-0", feature = "llvm11-0", feature = "llvm12-0")))]
#[cfg(not(any(feature = "llvm3-7", feature = "llvm6-0", feature = "llvm7-0", feature = "llvm8-0", feature = "llvm9-0", feature = "llvm10-0", feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0")))]
assert!(!module_pass_manager.run_on(&module));
#[cfg(any(feature = "llvm3-7", feature = "llvm6-0", feature = "llvm7-0", feature = "llvm8-0", feature = "llvm9-0", feature = "llvm10-0", feature = "llvm11-0", feature = "llvm12-0"))]
#[cfg(any(feature = "llvm3-7", feature = "llvm6-0", feature = "llvm7-0", feature = "llvm8-0", feature = "llvm9-0", feature = "llvm10-0", feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0"))]
assert!(module_pass_manager.run_on(&module));

let lto_pass_manager = PassManager::create(());
Expand Down
Loading

0 comments on commit 45d4dcb

Please sign in to comment.