Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
1ca75068
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
1ca75068
编写于
8月 21, 2018
作者:
D
Denis Merigoux
提交者:
Eduard-Mihai Burtescu
11月 16, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Generalized AsmDialect for BuilderMethods
上级
b7615389
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
15 addition
and
10 deletion
+15
-10
src/librustc_codegen_llvm/asm.rs
src/librustc_codegen_llvm/asm.rs
+1
-7
src/librustc_codegen_llvm/builder.rs
src/librustc_codegen_llvm/builder.rs
+3
-2
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
+1
-1
未找到文件。
src/librustc_codegen_llvm/asm.rs
浏览文件 @
1ca75068
...
...
@@ -22,7 +22,6 @@
use
mir
::
operand
::
OperandValue
;
use
std
::
ffi
::
CString
;
use
syntax
::
ast
::
AsmDialect
;
use
libc
::{
c_uint
,
c_char
};
// Take an inline assembly expression and splat it out via LLVM
...
...
@@ -82,11 +81,6 @@ pub fn codegen_inline_asm(
_
=>
Type
::
struct_
(
bx
.cx
,
&
output_types
,
false
)
};
let
dialect
=
match
ia
.dialect
{
AsmDialect
::
Att
=>
llvm
::
AsmDialect
::
Att
,
AsmDialect
::
Intel
=>
llvm
::
AsmDialect
::
Intel
,
};
let
asm
=
CString
::
new
(
ia
.asm
.as_str
()
.as_bytes
())
.unwrap
();
let
constraint_cstr
=
CString
::
new
(
all_constraints
)
.unwrap
();
let
r
=
bx
.inline_asm_call
(
...
...
@@ -96,7 +90,7 @@ pub fn codegen_inline_asm(
output_type
,
ia
.volatile
,
ia
.alignstack
,
dialect
ia
.
dialect
);
if
r
.is_none
()
{
return
false
;
...
...
src/librustc_codegen_llvm/builder.rs
浏览文件 @
1ca75068
...
...
@@ -20,6 +20,7 @@
use
rustc
::
session
::{
config
,
Session
};
use
rustc_data_structures
::
small_c_str
::
SmallCStr
;
use
traits
::{
self
,
BuilderMethods
};
use
syntax
;
use
std
::
borrow
::
Cow
;
use
std
::
ops
::
Range
;
...
...
@@ -742,7 +743,7 @@ fn phi(&self, ty: &'ll Type, vals: &[&'ll Value], bbs: &[&'ll BasicBlock]) -> &'
fn
inline_asm_call
(
&
self
,
asm
:
*
const
c_char
,
cons
:
*
const
c_char
,
inputs
:
&
[
&
'll
Value
],
output
:
&
'll
Type
,
volatile
:
bool
,
alignstack
:
bool
,
dia
:
AsmDialect
)
->
Option
<&
'll
Value
>
{
dia
:
syntax
::
ast
::
AsmDialect
)
->
Option
<&
'll
Value
>
{
self
.count_insn
(
"inlineasm"
);
let
volatile
=
if
volatile
{
llvm
::
True
}
...
...
@@ -763,7 +764,7 @@ fn inline_asm_call(&self, asm: *const c_char, cons: *const c_char,
debug!
(
"Constraint verification result: {:?}"
,
constraints_ok
);
if
constraints_ok
{
let
v
=
llvm
::
LLVMRustInlineAsm
(
fty
,
asm
,
cons
,
volatile
,
alignstack
,
dia
);
fty
,
asm
,
cons
,
volatile
,
alignstack
,
AsmDialect
::
from_generic
(
dia
)
);
Some
(
self
.call
(
v
,
inputs
,
None
))
}
else
{
// LLVM has detected an issue with our constraints, bail out
...
...
src/librustc_codegen_llvm/llvm/ffi.rs
浏览文件 @
1ca75068
...
...
@@ -20,6 +20,7 @@
use
std
::
marker
::
PhantomData
;
use
traits
;
use
syntax
;
use
super
::
RustString
;
...
...
@@ -354,6 +355,15 @@ pub enum AsmDialect {
Intel
,
}
impl
AsmDialect
{
pub
fn
from_generic
(
asm
:
syntax
::
ast
::
AsmDialect
)
->
Self
{
match
asm
{
syntax
::
ast
::
AsmDialect
::
Att
=>
AsmDialect
::
Att
,
syntax
::
ast
::
AsmDialect
::
Intel
=>
AsmDialect
::
Intel
}
}
}
/// LLVMRustCodeGenOptLevel
#[derive(Copy,
Clone,
PartialEq)]
#[repr(C)]
...
...
src/librustc_codegen_llvm/traits.rs
浏览文件 @
1ca75068
...
...
@@ -8,7 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use
llvm
::
AsmDialect
;
use
common
::
*
;
use
type_
::
Type
;
use
libc
::
c_char
;
...
...
@@ -20,6 +19,7 @@
use
std
::
borrow
::
Cow
;
use
std
::
ops
::
Range
;
use
syntax
::
ast
::
AsmDialect
;
pub
struct
OperandBundleDef
<
'a
,
Value
:
'a
>
{
pub
name
:
&
'a
str
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录