diff options
| author | James Cowgill <jcowgill@debian.org> | 2018-01-24 11:50:10 +0000 |
|---|---|---|
| committer | James Cowgill <jcowgill@debian.org> | 2018-01-30 11:54:52 +0000 |
| commit | d8e4142bd442c53b6ddc79ea0dd2d90cf550462e (patch) | |
| tree | bdb9ae1e6ad431d6a1fe0ad7e5bc2fb2e2cc6c52 /src | |
| parent | fe7e1a45f37f4265434cead827f587e75412f85c (diff) | |
| download | rust-d8e4142bd442c53b6ddc79ea0dd2d90cf550462e.tar.gz rust-d8e4142bd442c53b6ddc79ea0dd2d90cf550462e.zip | |
rustc_trans: clobber $1 (aka $at) on mips
This copies what clang does. There is a long explanation as to why this is needed in the clang source (tools/clang/lib/Basic/Targets/Mips.h).
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/asm.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/librustc_trans/asm.rs b/src/librustc_trans/asm.rs index c7be0c4e67d..751f8148a2a 100644 --- a/src/librustc_trans/asm.rs +++ b/src/librustc_trans/asm.rs @@ -59,8 +59,9 @@ pub fn trans_inline_asm<'a, 'tcx>( // Default per-arch clobbers // Basically what clang does let arch_clobbers = match &bx.sess().target.target.arch[..] { - "x86" | "x86_64" => vec!["~{dirflag}", "~{fpsr}", "~{flags}"], - _ => Vec::new() + "x86" | "x86_64" => vec!["~{dirflag}", "~{fpsr}", "~{flags}"], + "mips" | "mips64" => vec!["~{$1}"], + _ => Vec::new() }; let all_constraints = |
