Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b7615389
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,发现更多精彩内容 >>
提交
b7615389
编写于
8月 21, 2018
作者:
D
Denis Merigoux
提交者:
Eduard-Mihai Burtescu
11月 16, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Generalized SynchronisationScope for BuilderMethods
上级
b6998662
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
24 addition
and
6 deletion
+24
-6
src/librustc_codegen_llvm/builder.rs
src/librustc_codegen_llvm/builder.rs
+2
-2
src/librustc_codegen_llvm/intrinsic.rs
src/librustc_codegen_llvm/intrinsic.rs
+3
-3
src/librustc_codegen_llvm/llvm/ffi.rs
src/librustc_codegen_llvm/llvm/ffi.rs
+10
-0
src/librustc_codegen_llvm/traits.rs
src/librustc_codegen_llvm/traits.rs
+9
-1
未找到文件。
src/librustc_codegen_llvm/builder.rs
浏览文件 @
b7615389
...
...
@@ -1097,12 +1097,12 @@ fn atomic_rmw(
}
}
fn
atomic_fence
(
&
self
,
order
:
traits
::
AtomicOrdering
,
scope
:
SynchronizationScope
)
{
fn
atomic_fence
(
&
self
,
order
:
traits
::
AtomicOrdering
,
scope
:
traits
::
SynchronizationScope
)
{
unsafe
{
llvm
::
LLVMRustBuildAtomicFence
(
self
.llbuilder
,
AtomicOrdering
::
from_generic
(
order
),
scope
SynchronizationScope
::
from_generic
(
scope
)
);
}
}
...
...
src/librustc_codegen_llvm/intrinsic.rs
浏览文件 @
b7615389
...
...
@@ -31,7 +31,7 @@
use
builder
::
Builder
;
use
value
::
Value
;
use
traits
::{
BuilderMethods
,
AtomicRmwBinOp
};
use
traits
::{
BuilderMethods
,
AtomicRmwBinOp
,
SynchronizationScope
};
use
rustc
::
session
::
Session
;
use
syntax_pos
::
Span
;
...
...
@@ -521,12 +521,12 @@ pub fn codegen_intrinsic_call(
}
"fence"
=>
{
bx
.atomic_fence
(
order
,
llvm
::
SynchronizationScope
::
CrossThread
);
bx
.atomic_fence
(
order
,
SynchronizationScope
::
CrossThread
);
return
;
}
"singlethreadfence"
=>
{
bx
.atomic_fence
(
order
,
llvm
::
SynchronizationScope
::
SingleThread
);
bx
.atomic_fence
(
order
,
SynchronizationScope
::
SingleThread
);
return
;
}
...
...
src/librustc_codegen_llvm/llvm/ffi.rs
浏览文件 @
b7615389
...
...
@@ -304,6 +304,16 @@ pub enum SynchronizationScope {
CrossThread
,
}
impl
SynchronizationScope
{
pub
fn
from_generic
(
sc
:
traits
::
SynchronizationScope
)
->
Self
{
match
sc
{
traits
::
SynchronizationScope
::
Other
=>
SynchronizationScope
::
Other
,
traits
::
SynchronizationScope
::
SingleThread
=>
SynchronizationScope
::
SingleThread
,
traits
::
SynchronizationScope
::
CrossThread
=>
SynchronizationScope
::
CrossThread
,
}
}
}
/// LLVMRustFileType
#[derive(Copy,
Clone)]
#[repr(C)]
...
...
src/librustc_codegen_llvm/traits.rs
浏览文件 @
b7615389
...
...
@@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use
llvm
::
{
SynchronizationScope
,
AsmDialect
}
;
use
llvm
::
AsmDialect
;
use
common
::
*
;
use
type_
::
Type
;
use
libc
::
c_char
;
...
...
@@ -94,6 +94,14 @@ pub enum AtomicOrdering {
SequentiallyConsistent
,
}
pub
enum
SynchronizationScope
{
// FIXME: figure out if this variant is needed at all.
#[allow(dead_code)]
Other
,
SingleThread
,
CrossThread
,
}
pub
trait
BuilderMethods
<
'a
,
'll
:
'a
,
'tcx
:
'll
,
Value
:
?
Sized
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录