Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
90c48bed
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
90c48bed
编写于
9月 11, 2015
作者:
B
Björn Steinbrink
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Centralise the handling of attributes on extern functions
上级
fd230ff1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
6 addition
and
10 deletion
+6
-10
src/librustc_trans/trans/base.rs
src/librustc_trans/trans/base.rs
+2
-7
src/librustc_trans/trans/foreign.rs
src/librustc_trans/trans/foreign.rs
+4
-3
未找到文件。
src/librustc_trans/trans/base.rs
浏览文件 @
90c48bed
...
...
@@ -677,11 +677,8 @@ pub fn trans_external_path<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
ccx
.sess
()
.bug
(
"unexpected intrinsic in trans_external_path"
)
}
_
=>
{
let
llfn
=
foreign
::
register_foreign_item_fn
(
ccx
,
fn_ty
.abi
,
t
,
&
name
);
let
attrs
=
csearch
::
get_item_attrs
(
&
ccx
.sess
()
.cstore
,
did
);
attributes
::
from_fn_attrs
(
ccx
,
&
attrs
,
llfn
);
llfn
foreign
::
register_foreign_item_fn
(
ccx
,
fn_ty
.abi
,
t
,
&
name
,
&
attrs
)
}
}
}
...
...
@@ -2418,9 +2415,7 @@ pub fn get_item_val(ccx: &CrateContext, id: ast::NodeId) -> ValueRef {
let
abi
=
ccx
.tcx
()
.map
.get_foreign_abi
(
id
);
let
ty
=
ccx
.tcx
()
.node_id_to_type
(
ni
.id
);
let
name
=
foreign
::
link_name
(
&*
ni
);
let
llfn
=
foreign
::
register_foreign_item_fn
(
ccx
,
abi
,
ty
,
&
name
);
attributes
::
from_fn_attrs
(
ccx
,
&
ni
.attrs
,
llfn
);
llfn
foreign
::
register_foreign_item_fn
(
ccx
,
abi
,
ty
,
&
name
,
&
ni
.attrs
)
}
hir
::
ForeignItemStatic
(
..
)
=>
{
foreign
::
register_static
(
ccx
,
&*
ni
)
...
...
src/librustc_trans/trans/foreign.rs
浏览文件 @
90c48bed
...
...
@@ -187,7 +187,8 @@ pub fn get_extern_fn(ccx: &CrateContext,
/// Registers a foreign function found in a library. Just adds a LLVM global.
pub
fn
register_foreign_item_fn
<
'a
,
'tcx
>
(
ccx
:
&
CrateContext
<
'a
,
'tcx
>
,
abi
:
Abi
,
fty
:
Ty
<
'tcx
>
,
name
:
&
str
)
->
ValueRef
{
name
:
&
str
,
attrs
:
&
[
hir
::
Attribute
])
->
ValueRef
{
debug!
(
"register_foreign_item_fn(abi={:?},
\
ty={:?},
\
name={})"
,
...
...
@@ -211,6 +212,7 @@ pub fn register_foreign_item_fn<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
let
llfn
=
get_extern_fn
(
ccx
,
&
mut
*
ccx
.externs
()
.borrow_mut
(),
name
,
cc
,
llfn_ty
,
fty
);
add_argument_attributes
(
&
tys
,
llfn
);
attributes
::
from_fn_attrs
(
ccx
,
attrs
,
llfn
);
llfn
}
...
...
@@ -489,8 +491,7 @@ pub fn trans_foreign_mod(ccx: &CrateContext, foreign_mod: &hir::ForeignMod) {
"foreign fn's sty isn't a bare_fn_ty?"
)
}
let
llfn
=
register_foreign_item_fn
(
ccx
,
abi
,
ty
,
&
lname
);
attributes
::
from_fn_attrs
(
ccx
,
&
foreign_item
.attrs
,
llfn
);
register_foreign_item_fn
(
ccx
,
abi
,
ty
,
&
lname
,
&
foreign_item
.attrs
);
// Unlike for other items, we shouldn't call
// `base::update_linkage` here. Foreign items have
// special linkage requirements, which are handled
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录