use rustc::session::Session;
use rustc::util::nodemap::FxHashMap;
use time_graph::{self, TimeGraph, Timeline};
-use llvm;
-use llvm::{PassManagerRef, DiagnosticInfoRef};
-use llvm::SMDiagnosticRef;
+use llvm::{self, DiagnosticInfo, PassManagerRef, SMDiagnostic};
use {CodegenResults, ModuleSource, ModuleCodegen, CompiledModule, ModuleKind};
use CrateInfo;
use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
cgcx.diag_emitter.inline_asm_error(cookie as u32, msg.to_string());
}
-unsafe extern "C" fn inline_asm_handler(diag: SMDiagnosticRef,
+unsafe extern "C" fn inline_asm_handler(diag: &SMDiagnostic,
user: *const c_void,
cookie: c_uint) {
if user.is_null() {
report_inline_asm(cgcx, &msg, cookie);
}
-unsafe extern "C" fn diagnostic_handler(info: DiagnosticInfoRef, user: *mut c_void) {
+unsafe extern "C" fn diagnostic_handler(info: &DiagnosticInfo, user: *mut c_void) {
if user.is_null() {
return
}
use libc::c_uint;
use value::Value;
-use super::{DiagnosticInfoRef, TwineRef};
+use super::{DiagnosticInfo, Twine};
#[derive(Copy, Clone)]
pub enum OptimizationDiagnosticKind {
impl OptimizationDiagnostic<'ll> {
unsafe fn unpack(
kind: OptimizationDiagnosticKind,
- di: DiagnosticInfoRef,
+ di: &'ll DiagnosticInfo,
) -> Self {
let mut function = None;
let mut line = 0;
#[derive(Copy, Clone)]
pub struct InlineAsmDiagnostic<'ll> {
pub cookie: c_uint,
- pub message: TwineRef,
+ pub message: &'ll Twine,
pub instruction: &'ll Value,
}
impl InlineAsmDiagnostic<'ll> {
- unsafe fn unpack(di: DiagnosticInfoRef) -> Self {
+ unsafe fn unpack(di: &'ll DiagnosticInfo) -> Self {
let mut cookie = 0;
- let mut message = 0 as *mut _;
+ let mut message = None;
let mut instruction = None;
super::LLVMRustUnpackInlineAsmDiagnostic(
InlineAsmDiagnostic {
cookie,
- message,
+ message: message.unwrap(),
instruction: instruction.unwrap(),
}
}
pub enum Diagnostic<'ll> {
Optimization(OptimizationDiagnostic<'ll>),
InlineAsm(InlineAsmDiagnostic<'ll>),
- PGO(DiagnosticInfoRef),
+ PGO(&'ll DiagnosticInfo),
/// LLVM has other types that we do not wrap here.
- UnknownDiagnostic(DiagnosticInfoRef),
+ UnknownDiagnostic(&'ll DiagnosticInfo),
}
impl Diagnostic<'ll> {
- pub unsafe fn unpack(di: DiagnosticInfoRef) -> Self {
+ pub unsafe fn unpack(di: &'ll DiagnosticInfo) -> Self {
use super::DiagnosticKind as Dk;
let kind = super::LLVMRustGetDiagInfoKind(di);
extern { pub type ArchiveChild; }
pub type ArchiveChildRef = *mut ArchiveChild;
extern { pub type Twine; }
-pub type TwineRef = *mut Twine;
extern { pub type DiagnosticInfo; }
-pub type DiagnosticInfoRef = *mut DiagnosticInfo;
extern { pub type SMDiagnostic; }
-pub type SMDiagnosticRef = *mut SMDiagnostic;
extern { pub type RustArchiveMember; }
pub type RustArchiveMemberRef = *mut RustArchiveMember;
extern { pub type OperandBundleDef; }
extern { pub type Linker; }
pub type LinkerRef = *mut Linker;
-pub type DiagnosticHandler = unsafe extern "C" fn(DiagnosticInfoRef, *mut c_void);
-pub type InlineAsmDiagHandler = unsafe extern "C" fn(SMDiagnosticRef, *const c_void, c_uint);
+pub type DiagnosticHandler = unsafe extern "C" fn(&DiagnosticInfo, *mut c_void);
+pub type InlineAsmDiagHandler = unsafe extern "C" fn(&SMDiagnostic, *const c_void, c_uint);
pub mod debuginfo {
pub fn LLVMRustGetSectionName(SI: SectionIteratorRef, data: *mut *const c_char) -> size_t;
- pub fn LLVMRustWriteTwineToString(T: TwineRef, s: RustStringRef);
+ pub fn LLVMRustWriteTwineToString(T: &Twine, s: RustStringRef);
pub fn LLVMContextSetDiagnosticHandler(C: &Context,
Handler: DiagnosticHandler,
DiagnosticContext: *mut c_void);
- pub fn LLVMRustUnpackOptimizationDiagnostic(DI: DiagnosticInfoRef,
+ pub fn LLVMRustUnpackOptimizationDiagnostic(DI: &'a DiagnosticInfo,
pass_name_out: RustStringRef,
- function_out: *mut Option<&Value>,
+ function_out: *mut Option<&'a Value>,
loc_line_out: *mut c_uint,
loc_column_out: *mut c_uint,
loc_filename_out: RustStringRef,
message_out: RustStringRef);
- pub fn LLVMRustUnpackInlineAsmDiagnostic(DI: DiagnosticInfoRef,
+ pub fn LLVMRustUnpackInlineAsmDiagnostic(DI: &'a DiagnosticInfo,
cookie_out: *mut c_uint,
- message_out: *mut TwineRef,
- instruction_out: *mut Option<&Value>);
+ message_out: *mut Option<&'a Twine>,
+ instruction_out: *mut Option<&'a Value>);
- pub fn LLVMRustWriteDiagnosticInfoToString(DI: DiagnosticInfoRef, s: RustStringRef);
- pub fn LLVMRustGetDiagInfoKind(DI: DiagnosticInfoRef) -> DiagnosticKind;
+ pub fn LLVMRustWriteDiagnosticInfoToString(DI: &DiagnosticInfo, s: RustStringRef);
+ pub fn LLVMRustGetDiagInfoKind(DI: &DiagnosticInfo) -> DiagnosticKind;
pub fn LLVMRustSetInlineAsmDiagnosticHandler(C: &Context,
H: InlineAsmDiagHandler,
CX: *mut c_void);
- pub fn LLVMRustWriteSMDiagnosticToString(d: SMDiagnosticRef, s: RustStringRef);
+ pub fn LLVMRustWriteSMDiagnosticToString(d: &SMDiagnostic, s: RustStringRef);
pub fn LLVMRustWriteArchive(Dst: *const c_char,
NumMembers: size_t,