Add tests

This commit is contained in:
Amanieu d'Antras 2022-02-19 21:46:49 +00:00
parent fc41d4bf35
commit fb5539b475
5 changed files with 66 additions and 2 deletions

View File

@ -1,5 +1,5 @@
use super::{InlineAsmArch, InlineAsmType};
use crate::spec::{Target, RelocModel};
use crate::spec::{RelocModel, Target};
use rustc_data_structures::stable_set::FxHashSet;
use rustc_macros::HashStable_Generic;
use rustc_span::{sym, Symbol};

View File

@ -1,5 +1,5 @@
use super::{InlineAsmArch, InlineAsmType};
use crate::spec::{Target, RelocModel};
use crate::spec::{RelocModel, Target};
use rustc_data_structures::stable_set::FxHashSet;
use rustc_macros::HashStable_Generic;
use rustc_span::Symbol;

View File

@ -0,0 +1,26 @@
// revisions: ropi rwpi
// [ropi] compile-flags: --target armv7-unknown-linux-gnueabihf -C relocation-model=ropi
// [rwpi] compile-flags: --target armv7-unknown-linux-gnueabihf -C relocation-model=rwpi
// [ropi] needs-llvm-components: arm
// [rwpi] needs-llvm-components: arm
// [ropi] build-pass
#![feature(no_core, lang_items, rustc_attrs)]
#![no_core]
#![crate_type = "rlib"]
#[rustc_builtin_macro]
macro_rules! asm {
() => {};
}
#[lang = "sized"]
trait Sized {}
// R9 is reserved as the RWPI base register
fn main() {
unsafe {
asm!("", out("r9") _);
//[rwpi]~^ cannot use register `r9`
}
}

View File

@ -0,0 +1,8 @@
error: cannot use register `r9`: the RWPI static base register (r9) cannot be used as an operand for inline asm
--> $DIR/issue-85247.rs:23:18
|
LL | asm!("", out("r9") _);
| ^^^^^^^^^^^
error: aborting due to previous error

View File

@ -0,0 +1,30 @@
// compile-flags: --target armv5te-unknown-linux-gnueabi
// needs-llvm-components: arm
// build-pass
#![feature(no_core, lang_items, rustc_attrs, isa_attribute)]
#![no_core]
#![crate_type = "rlib"]
#[rustc_builtin_macro]
macro_rules! asm {
() => {};
}
#[lang = "sized"]
trait Sized {}
// ARM uses R11 for the frame pointer, make sure R7 is usable.
#[instruction_set(arm::a32)]
pub fn arm() {
unsafe {
asm!("", out("r7") _);
}
}
// Thumb uses R7 for the frame pointer, make sure R11 is usable.
#[instruction_set(arm::t32)]
pub fn thumb() {
unsafe {
asm!("", out("r11") _);
}
}