From: Daniel Dunbar Date: Wed, 11 Aug 2010 02:17:11 +0000 (+0000) Subject: ARM: Swap which registers we consider real / aliases to match LLVM and llvm-gcc. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1fd71718eee5f39f560f536f0ee9cf7c68876518;p=clang ARM: Swap which registers we consider real / aliases to match LLVM and llvm-gcc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110774 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 40a029673e..3eee5c07d6 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -1788,17 +1788,16 @@ public: const char * const ARMTargetInfo::GCCRegNames[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" + "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc" }; void ARMTargetInfo::getGCCRegNames(const char * const *&Names, - unsigned &NumNames) const { + unsigned &NumNames) const { Names = GCCRegNames; NumNames = llvm::array_lengthof(GCCRegNames); } const TargetInfo::GCCRegAlias ARMTargetInfo::GCCRegAliases[] = { - { { "a1" }, "r0" }, { { "a2" }, "r1" }, { { "a3" }, "r2" }, @@ -1812,9 +1811,9 @@ const TargetInfo::GCCRegAlias ARMTargetInfo::GCCRegAliases[] = { { { "sl" }, "r10" }, { { "fp" }, "r11" }, { { "ip" }, "r12" }, - { { "sp" }, "r13" }, - { { "lr" }, "r14" }, - { { "pc" }, "r15" }, + { { "r13" }, "sp" }, + { { "r14" }, "lr" }, + { { "r15" }, "pc" }, }; void ARMTargetInfo::getGCCRegAliases(const GCCRegAlias *&Aliases, diff --git a/test/CodeGen/asm_arm.c b/test/CodeGen/asm_arm.c index aac47d57dc..12cf5d79c8 100644 --- a/test/CodeGen/asm_arm.c +++ b/test/CodeGen/asm_arm.c @@ -30,3 +30,11 @@ void test4(float *a, float *b) { "vst1.32 {q4}, [%0,:128] \n\t" :: "r"(a), "r"(b)); } + +// {sp, lr, pc} are the canonical names for {r13, r14, r15}. +// +// CHECK: @test5 +// CHECK: call void asm sideeffect "", "~{sp},~{lr},~{pc},~{sp},~{lr},~{pc}"() +void test5() { + __asm__("" : : : "r13", "r14", "r15", "sp", "lr", "pc"); +}