Rebase to the llvm-project monorepo
The new git submodule src/llvm-project is a monorepo replacing src/llvm
and src/tools/{clang,lld,lldb}. This also serves as a rebase for these
projects to the new 8.x branch from trunk.
The src/llvm-emscripten fork is unchanged for now.
This commit is contained in:
parent
bf669d1e32
commit
df0466d0bb
18 changed files with 166 additions and 65 deletions
|
|
@ -12,7 +12,7 @@ use self::source_loc::InternalDebugLocation::{self, UnknownLocation};
|
|||
|
||||
use llvm;
|
||||
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags,
|
||||
DILexicalBlock};
|
||||
DISPFlags, DILexicalBlock};
|
||||
use rustc::hir::CodegenFnAttrFlags;
|
||||
use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE};
|
||||
use rustc::ty::subst::{Substs, UnpackedKind};
|
||||
|
|
@ -283,7 +283,6 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||
let linkage_name = mangled_name_of_instance(self, instance);
|
||||
|
||||
let scope_line = span_start(self, span).line;
|
||||
let is_local_to_unit = is_node_local_to_unit(self, def_id);
|
||||
|
||||
let function_name = CString::new(name).unwrap();
|
||||
let linkage_name = SmallCStr::new(&linkage_name.as_str());
|
||||
|
|
@ -300,6 +299,14 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||
flags |= DIFlags::FlagNoReturn;
|
||||
}
|
||||
|
||||
let mut spflags = DISPFlags::SPFlagDefinition;
|
||||
if is_node_local_to_unit(self, def_id) {
|
||||
spflags |= DISPFlags::SPFlagLocalToUnit;
|
||||
}
|
||||
if self.sess().opts.optimize != config::OptLevel::No {
|
||||
spflags |= DISPFlags::SPFlagOptimized;
|
||||
}
|
||||
|
||||
let fn_metadata = unsafe {
|
||||
llvm::LLVMRustDIBuilderCreateFunction(
|
||||
DIB(self),
|
||||
|
|
@ -309,11 +316,9 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||
file_metadata,
|
||||
loc.line as c_uint,
|
||||
function_type_metadata,
|
||||
is_local_to_unit,
|
||||
true,
|
||||
scope_line as c_uint,
|
||||
flags,
|
||||
self.sess().opts.optimize != config::OptLevel::No,
|
||||
spflags,
|
||||
llfn,
|
||||
template_parameters,
|
||||
None)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use super::debuginfo::{
|
|||
DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType,
|
||||
DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable,
|
||||
DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator,
|
||||
DINameSpace, DIFlags,
|
||||
DINameSpace, DIFlags, DISPFlags,
|
||||
};
|
||||
|
||||
use libc::{c_uint, c_int, size_t, c_char};
|
||||
|
|
@ -591,6 +591,20 @@ pub mod debuginfo {
|
|||
const FlagMainSubprogram = (1 << 21);
|
||||
}
|
||||
}
|
||||
|
||||
// These values **must** match with LLVMRustDISPFlags!!
|
||||
bitflags! {
|
||||
#[repr(C)]
|
||||
#[derive(Default)]
|
||||
pub struct DISPFlags: ::libc::uint32_t {
|
||||
const SPFlagZero = 0;
|
||||
const SPFlagVirtual = 1;
|
||||
const SPFlagPureVirtual = 2;
|
||||
const SPFlagLocalToUnit = (1 << 2);
|
||||
const SPFlagDefinition = (1 << 3);
|
||||
const SPFlagOptimized = (1 << 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern { pub type ModuleBuffer; }
|
||||
|
|
@ -1387,11 +1401,9 @@ extern "C" {
|
|||
File: &'a DIFile,
|
||||
LineNo: c_uint,
|
||||
Ty: &'a DIType,
|
||||
isLocalToUnit: bool,
|
||||
isDefinition: bool,
|
||||
ScopeLine: c_uint,
|
||||
Flags: DIFlags,
|
||||
isOptimized: bool,
|
||||
SPFlags: DISPFlags,
|
||||
Fn: &'a Value,
|
||||
TParam: &'a DIArray,
|
||||
Decl: Option<&'a DIDescriptor>)
|
||||
|
|
@ -1529,7 +1541,7 @@ extern "C" {
|
|||
AlignInBits: u32,
|
||||
Elements: &'a DIArray,
|
||||
ClassType: &'a DIType,
|
||||
IsFixed: bool)
|
||||
IsScoped: bool)
|
||||
-> &'a DIType;
|
||||
|
||||
pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder<'a>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue