extern crate llvm_sys;
extern crate rustc_llvm_proxy;
use llvm_sys::core::*;
use std::ffi::{CStr, CString};
#[test]
fn module_creation() {
unsafe {
let module_name = CString::new("test module").unwrap();
let module = LLVMModuleCreateWithName(module_name.as_ptr());
let data_layout = CString::new("e-i64:64-v16:16-v32:32-n16:32:64").unwrap();
LLVMSetDataLayout(module, data_layout.as_ptr());
let module_contents_raw = LLVMPrintModuleToString(module);
let module_contents = CStr::from_ptr(module_contents_raw);
assert_eq!(
module_contents.to_str().unwrap(),
r#"; ModuleID = 'test module'
source_filename = "test module"
target datalayout = "e-i64:64-v16:16-v32:32-n16:32:64"
"#
);
LLVMDisposeMessage(module_contents_raw);
LLVMDisposeModule(module);
}
}