Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
9c38a54c
R
Rust
项目概览
int
/
Rust
接近 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9c38a54c
编写于
12月 16, 2016
作者:
M
Mark-Simulacrum
提交者:
Mark Simulacrum
12月 20, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Inline FunctionContext.mir
上级
65f04003
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
12 addition
and
21 deletion
+12
-21
src/librustc_trans/base.rs
src/librustc_trans/base.rs
+1
-5
src/librustc_trans/common.rs
src/librustc_trans/common.rs
+0
-10
src/librustc_trans/debuginfo/create_scope_map.rs
src/librustc_trans/debuginfo/create_scope_map.rs
+5
-2
src/librustc_trans/mir/mod.rs
src/librustc_trans/mir/mod.rs
+6
-4
未找到文件。
src/librustc_trans/base.rs
浏览文件 @
9c38a54c
...
...
@@ -752,11 +752,7 @@ pub fn trans_instance<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>, instance: Instance
let
fcx
=
FunctionContext
::
new
(
ccx
,
lldecl
,
fn_ty
,
Some
((
instance
,
&
sig
,
abi
)),
true
);
if
fcx
.mir
.is_none
()
{
bug!
(
"attempted translation of `{}` w/o MIR"
,
instance
);
}
mir
::
trans_mir
(
&
fcx
);
mir
::
trans_mir
(
&
fcx
,
ccx
.tcx
()
.item_mir
(
instance
.def
));
}
pub
fn
trans_ctor_shim
<
'a
,
'tcx
>
(
ccx
:
&
CrateContext
<
'a
,
'tcx
>
,
...
...
src/librustc_trans/common.rs
浏览文件 @
9c38a54c
...
...
@@ -22,7 +22,6 @@
use
rustc
::
hir
::
def_id
::
DefId
;
use
rustc
::
hir
::
map
::
DefPathData
;
use
rustc
::
infer
::
TransNormalize
;
use
rustc
::
mir
::
Mir
;
use
rustc
::
util
::
common
::
MemoizationMap
;
use
middle
::
lang_items
::
LangItem
;
use
rustc
::
ty
::
subst
::
Substs
;
...
...
@@ -48,7 +47,6 @@
use
std
::
iter
;
use
std
::
ops
::
Deref
;
use
std
::
ffi
::
CString
;
use
std
::
cell
::
Ref
;
use
syntax
::
ast
;
use
syntax
::
symbol
::{
Symbol
,
InternedString
};
...
...
@@ -237,9 +235,6 @@ pub fn from_ty(tcx: TyCtxt<'a, 'tcx, 'tcx>,
// Function context. Every LLVM function we create will have one of these.
pub
struct
FunctionContext
<
'a
,
'tcx
:
'a
>
{
// The MIR for this function.
pub
mir
:
Option
<
Ref
<
'tcx
,
Mir
<
'tcx
>>>
,
// The ValueRef returned from a call to llvm::LLVMAddFunction; the
// address of the first instruction in the sequence of
// instructions for this function that will go in the .text
...
...
@@ -318,7 +313,6 @@ pub fn new(
};
let
mut
fcx
=
FunctionContext
{
mir
:
mir
,
llfn
:
llfndecl
,
llretslotptr
:
None
,
param_env
:
ccx
.tcx
()
.empty_parameter_environment
(),
...
...
@@ -368,10 +362,6 @@ pub fn get_entry_block(&'a self) -> BlockAndBuilder<'a, 'tcx> {
},
self
)
}
pub
fn
mir
(
&
self
)
->
Ref
<
'tcx
,
Mir
<
'tcx
>>
{
self
.mir
.as_ref
()
.map
(
Ref
::
clone
)
.expect
(
"fcx.mir was empty"
)
}
pub
fn
new_block
(
&
'a
self
,
name
:
&
str
)
->
BasicBlockRef
{
unsafe
{
let
name
=
CString
::
new
(
name
)
.unwrap
();
...
...
src/librustc_trans/debuginfo/create_scope_map.rs
浏览文件 @
9c38a54c
...
...
@@ -19,6 +19,7 @@
use
libc
::
c_uint
;
use
std
::
ptr
;
use
std
::
cell
::
Ref
;
use
syntax_pos
::
Pos
;
...
...
@@ -44,8 +45,10 @@ pub fn is_valid(&self) -> bool {
/// Produce DIScope DIEs for each MIR Scope which has variables defined in it.
/// If debuginfo is disabled, the returned vector is empty.
pub
fn
create_mir_scopes
(
fcx
:
&
FunctionContext
)
->
IndexVec
<
VisibilityScope
,
MirDebugScope
>
{
let
mir
=
fcx
.mir
();
pub
fn
create_mir_scopes
<
'tcx
>
(
fcx
:
&
FunctionContext
,
mir
:
Ref
<
'tcx
,
Mir
<
'tcx
>>
,
)
->
IndexVec
<
VisibilityScope
,
MirDebugScope
>
{
let
null_scope
=
MirDebugScope
{
scope_metadata
:
ptr
::
null_mut
(),
file_start_pos
:
BytePos
(
0
),
...
...
src/librustc_trans/mir/mod.rs
浏览文件 @
9c38a54c
...
...
@@ -12,7 +12,7 @@
use
llvm
::{
self
,
ValueRef
,
BasicBlockRef
};
use
llvm
::
debuginfo
::
DIScope
;
use
rustc
::
ty
;
use
rustc
::
mir
;
use
rustc
::
mir
::{
self
,
Mir
}
;
use
rustc
::
mir
::
tcx
::
LvalueTy
;
use
session
::
config
::
FullDebugInfo
;
use
base
;
...
...
@@ -179,9 +179,11 @@ fn new_operand<'bcx>(ccx: &CrateContext<'bcx, 'tcx>,
///////////////////////////////////////////////////////////////////////////
pub
fn
trans_mir
<
'blk
,
'tcx
:
'blk
>
(
fcx
:
&
'blk
FunctionContext
<
'blk
,
'tcx
>
)
{
pub
fn
trans_mir
<
'blk
,
'tcx
:
'blk
>
(
fcx
:
&
'blk
FunctionContext
<
'blk
,
'tcx
>
,
mir
:
Ref
<
'tcx
,
Mir
<
'tcx
>>
)
{
let
bcx
=
fcx
.get_entry_block
();
let
mir
=
fcx
.mir
();
// Analyze the temps to determine which must be lvalues
// FIXME
...
...
@@ -199,7 +201,7 @@ pub fn trans_mir<'blk, 'tcx: 'blk>(fcx: &'blk FunctionContext<'blk, 'tcx>) {
})
.collect
();
// Compute debuginfo scopes from MIR scopes.
let
scopes
=
debuginfo
::
create_mir_scopes
(
fcx
);
let
scopes
=
debuginfo
::
create_mir_scopes
(
fcx
,
Ref
::
clone
(
&
mir
)
);
let
mut
mircx
=
MirContext
{
mir
:
Ref
::
clone
(
&
mir
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录