зеркало из https://github.com/microsoft/clang-1.git
Implement __builtin_eh_return_data_regno() for ARM and MIPS.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175954 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
884f0a752b
Коммит
a8f7a97a22
|
@ -3721,6 +3721,12 @@ public:
|
|||
virtual CallingConvCheckResult checkCallingConvention(CallingConv CC) const {
|
||||
return (CC == CC_AAPCS || CC == CC_AAPCS_VFP) ? CCCR_OK : CCCR_Warning;
|
||||
}
|
||||
|
||||
virtual int getEHDataRegisterNumber(unsigned RegNo) const {
|
||||
if (RegNo == 0) return 0;
|
||||
if (RegNo == 1) return 1;
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
const char * const ARMTargetInfo::GCCRegNames[] = {
|
||||
|
@ -4434,6 +4440,12 @@ public:
|
|||
if (it != Features.end())
|
||||
Features.erase(it);
|
||||
}
|
||||
|
||||
virtual int getEHDataRegisterNumber(unsigned RegNo) const {
|
||||
if (RegNo == 0) return 4;
|
||||
if (RegNo == 1) return 5;
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
const Builtin::Info MipsTargetInfoBase::BuiltinInfo[] = {
|
||||
|
|
|
@ -11,3 +11,10 @@ void f1(char *a, char *b) {
|
|||
}
|
||||
|
||||
// CHECK: call {{.*}} @__clear_cache
|
||||
|
||||
void test_eh_return_data_regno()
|
||||
{
|
||||
volatile int res;
|
||||
res = __builtin_eh_return_data_regno(0); // CHECK: store volatile i32 0
|
||||
res = __builtin_eh_return_data_regno(1); // CHECK: store volatile i32 1
|
||||
}
|
||||
|
|
|
@ -532,3 +532,10 @@ void foo() {
|
|||
v4i8_r = __builtin_mips_subuh_r_qb(v4i8_a, v4i8_b);
|
||||
// CHECK: call <4 x i8> @llvm.mips.subuh.r.qb
|
||||
}
|
||||
|
||||
void test_eh_return_data_regno()
|
||||
{
|
||||
volatile int res;
|
||||
res = __builtin_eh_return_data_regno(0); // CHECK: store volatile i32 4
|
||||
res = __builtin_eh_return_data_regno(1); // CHECK: store volatile i32 5
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче