summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-03-13 15:56:41 +0000
committerHans Wennborg <hans@hanshq.net>2014-03-13 15:56:41 +0000
commitc8ed0db5aa876d82ee26d2caf082d3e548513aec (patch)
treed5ef083a4b68e50e7ecc1ebb09ac2ade3c1c9640
parent7a2da95e44b5f537323d4fedcacf6378a8682b7d (diff)
downloadllvm-c8ed0db5aa876d82ee26d2caf082d3e548513aec.tar.gz
llvm-c8ed0db5aa876d82ee26d2caf082d3e548513aec.tar.bz2
llvm-c8ed0db5aa876d82ee26d2caf082d3e548513aec.tar.xz
[ARM] Use symbolic register names in .cfi directives only with IAS (PR19110)
This is a follow-up to r203635. Saleem pointed out that since symbolic register names are much easier to read, it would be good if we could turn them off only when we really need to because we're using an external assembler. Differential Revision: http://llvm-reviews.chandlerc.com/D3056 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203806 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCAsmInfo.h2
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp12
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h2
-rw-r--r--test/CodeGen/ARM/debug-frame-large-stack.ll22
-rw-r--r--test/CodeGen/ARM/debug-frame-vararg.ll30
-rw-r--r--test/CodeGen/ARM/debug-frame.ll261
6 files changed, 180 insertions, 149 deletions
diff --git a/include/llvm/MC/MCAsmInfo.h b/include/llvm/MC/MCAsmInfo.h
index 4e5322fe6a..0ecffa34bd 100644
--- a/include/llvm/MC/MCAsmInfo.h
+++ b/include/llvm/MC/MCAsmInfo.h
@@ -535,7 +535,7 @@ namespace llvm {
bool useIntegratedAssembler() const { return UseIntegratedAssembler; }
/// Set whether assembly (inline or otherwise) should be parsed.
- void setUseIntegratedAssembler(bool Value) {
+ virtual void setUseIntegratedAssembler(bool Value) {
UseIntegratedAssembler = Value;
}
};
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
index 4c87bb2180..3b33a9901c 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
+++ b/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
@@ -54,8 +54,14 @@ ARMELFMCAsmInfo::ARMELFMCAsmInfo() {
UseParensForSymbolVariant = true;
UseIntegratedAssembler = true;
+}
- // gas doesn't handle VFP register names in cfi directives.
- // See https://sourceware.org/bugzilla/show_bug.cgi?id=16694
- DwarfRegNumForCFI = true;
+void ARMELFMCAsmInfo::setUseIntegratedAssembler(bool Value) {
+ UseIntegratedAssembler = Value;
+ if (!UseIntegratedAssembler) {
+ // gas doesn't handle VFP register names in cfi directives,
+ // so don't use register names with external assembler.
+ // See https://sourceware.org/bugzilla/show_bug.cgi?id=16694
+ DwarfRegNumForCFI = true;
+ }
}
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h b/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
index ea9dd19571..08efa8e4f2 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
+++ b/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
@@ -29,6 +29,8 @@ namespace llvm {
void anchor() override;
public:
explicit ARMELFMCAsmInfo();
+
+ void setUseIntegratedAssembler(bool Value) override;
};
} // namespace llvm
diff --git a/test/CodeGen/ARM/debug-frame-large-stack.ll b/test/CodeGen/ARM/debug-frame-large-stack.ll
index 6ce6680e57..5bafce9407 100644
--- a/test/CodeGen/ARM/debug-frame-large-stack.ll
+++ b/test/CodeGen/ARM/debug-frame-large-stack.ll
@@ -42,8 +42,8 @@ define void @test2() {
; CHECK-ARM: .cfi_startproc
; CHECK-ARM: push {r4, r5}
; CHECK-ARM: .cfi_def_cfa_offset 8
-; CHECK-ARM: .cfi_offset 5, -4
-; CHECK-ARM: .cfi_offset 4, -8
+; CHECK-ARM: .cfi_offset r5, -4
+; CHECK-ARM: .cfi_offset r4, -8
; CHECK-ARM: sub sp, sp, #72
; CHECK-ARM: sub sp, sp, #4096
; CHECK-ARM: .cfi_def_cfa_offset 4176
@@ -54,7 +54,7 @@ define void @test2() {
; CHECK-ARM-FP_ELIM: push {r4, r5}
; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 8
; CHECK-ARM-FP_ELIM: .cfi_offset 54, -4
-; CHECK-ARM-FP_ELIM: .cfi_offset 4, -8
+; CHECK-ARM-FP_ELIM: .cfi_offset r4, -8
; CHECK-ARM-FP_ELIM: sub sp, sp, #72
; CHECK-ARM-FP_ELIM: sub sp, sp, #4096
; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 4176
@@ -73,11 +73,11 @@ define i32 @test3() {
; CHECK-ARM: .cfi_startproc
; CHECK-ARM: push {r4, r5, r11}
; CHECK-ARM: .cfi_def_cfa_offset 12
-; CHECK-ARM: .cfi_offset 11, -4
-; CHECK-ARM: .cfi_offset 5, -8
-; CHECK-ARM: .cfi_offset 4, -12
+; CHECK-ARM: .cfi_offset r11, -4
+; CHECK-ARM: .cfi_offset r5, -8
+; CHECK-ARM: .cfi_offset r4, -12
; CHECK-ARM: add r11, sp, #8
-; CHECK-ARM: .cfi_def_cfa 11, 4
+; CHECK-ARM: .cfi_def_cfa r11, 4
; CHECK-ARM: sub sp, sp, #20
; CHECK-ARM: sub sp, sp, #805306368
; CHECK-ARM: bic sp, sp, #15
@@ -87,11 +87,11 @@ define i32 @test3() {
; CHECK-ARM-FP-ELIM: .cfi_startproc
; CHECK-ARM-FP-ELIM: push {r4, r5, r11}
; CHECK-ARM-FP-ELIM: .cfi_def_cfa_offset 12
-; CHECK-ARM-FP-ELIM: .cfi_offset 11, -4
-; CHECK-ARM-FP-ELIM: .cfi_offset 5, -8
-; CHECK-ARM-FP-ELIM: .cfi_offset 4, -12
+; CHECK-ARM-FP-ELIM: .cfi_offset r11, -4
+; CHECK-ARM-FP-ELIM: .cfi_offset r5, -8
+; CHECK-ARM-FP-ELIM: .cfi_offset r4, -12
; CHECK-ARM-FP-ELIM: add r11, sp, #8
-; CHECK-ARM-FP-ELIM: .cfi_def_cfa 11, 4
+; CHECK-ARM-FP-ELIM: .cfi_def_cfa r11, 4
; CHECK-ARM-FP-ELIM: sub sp, sp, #20
; CHECK-ARM-FP-ELIM: sub sp, sp, #805306368
; CHECK-ARM-FP-ELIM: bic sp, sp, #15
diff --git a/test/CodeGen/ARM/debug-frame-vararg.ll b/test/CodeGen/ARM/debug-frame-vararg.ll
index 2a7d7947db..9b39525e52 100644
--- a/test/CodeGen/ARM/debug-frame-vararg.ll
+++ b/test/CodeGen/ARM/debug-frame-vararg.ll
@@ -66,8 +66,8 @@
; CHECK-FP: .cfi_def_cfa_offset 16
; CHECK-FP: push {r4, lr}
; CHECK-FP: .cfi_def_cfa_offset 24
-; CHECK-FP: .cfi_offset 14, -20
-; CHECK-FP: .cfi_offset 4, -24
+; CHECK-FP: .cfi_offset lr, -20
+; CHECK-FP: .cfi_offset r4, -24
; CHECK-FP: sub sp, sp, #8
; CHECK-FP: .cfi_def_cfa_offset 32
@@ -77,11 +77,11 @@
; CHECK-FP-ELIM: .cfi_def_cfa_offset 16
; CHECK-FP-ELIM: push {r4, r11, lr}
; CHECK-FP-ELIM: .cfi_def_cfa_offset 28
-; CHECK-FP-ELIM: .cfi_offset 14, -20
-; CHECK-FP-ELIM: .cfi_offset 11, -24
-; CHECK-FP-ELIM: .cfi_offset 4, -28
+; CHECK-FP-ELIM: .cfi_offset lr, -20
+; CHECK-FP-ELIM: .cfi_offset r11, -24
+; CHECK-FP-ELIM: .cfi_offset r4, -28
; CHECK-FP-ELIM: add r11, sp, #4
-; CHECK-FP-ELIM: .cfi_def_cfa 11, 24
+; CHECK-FP-ELIM: .cfi_def_cfa r11, 24
; CHECK-THUMB-FP-LABEL: sum
; CHECK-THUMB-FP: .cfi_startproc
@@ -89,10 +89,10 @@
; CHECK-THUMB-FP: .cfi_def_cfa_offset 16
; CHECK-THUMB-FP: push {r4, r5, r7, lr}
; CHECK-THUMB-FP: .cfi_def_cfa_offset 32
-; CHECK-THUMB-FP: .cfi_offset 14, -20
-; CHECK-THUMB-FP: .cfi_offset 7, -24
-; CHECK-THUMB-FP: .cfi_offset 5, -28
-; CHECK-THUMB-FP: .cfi_offset 4, -32
+; CHECK-THUMB-FP: .cfi_offset lr, -20
+; CHECK-THUMB-FP: .cfi_offset r7, -24
+; CHECK-THUMB-FP: .cfi_offset r5, -28
+; CHECK-THUMB-FP: .cfi_offset r4, -32
; CHECK-THUMB-FP: sub sp, #8
; CHECK-THUMB-FP: .cfi_def_cfa_offset 40
@@ -102,12 +102,12 @@
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 16
; CHECK-THUMB-FP-ELIM: push {r4, r5, r7, lr}
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 32
-; CHECK-THUMB-FP-ELIM: .cfi_offset 14, -20
-; CHECK-THUMB-FP-ELIM: .cfi_offset 7, -24
-; CHECK-THUMB-FP-ELIM: .cfi_offset 5, -28
-; CHECK-THUMB-FP-ELIM: .cfi_offset 4, -32
+; CHECK-THUMB-FP-ELIM: .cfi_offset lr, -20
+; CHECK-THUMB-FP-ELIM: .cfi_offset r7, -24
+; CHECK-THUMB-FP-ELIM: .cfi_offset r5, -28
+; CHECK-THUMB-FP-ELIM: .cfi_offset r4, -32
; CHECK-THUMB-FP-ELIM: add r7, sp, #8
-; CHECK-THUMB-FP-ELIM: .cfi_def_cfa 7, 24
+; CHECK-THUMB-FP-ELIM: .cfi_def_cfa r7, 24
define i32 @sum(i32 %count, ...) {
entry:
diff --git a/test/CodeGen/ARM/debug-frame.ll b/test/CodeGen/ARM/debug-frame.ll
index 527fea8c20..cf687676fb 100644
--- a/test/CodeGen/ARM/debug-frame.ll
+++ b/test/CodeGen/ARM/debug-frame.ll
@@ -12,6 +12,7 @@
; (6) thumb without -disable-fp-elim
; (7) thumbv7 with -disable-fp-elim
; (8) thumbv7 without -disable-fp-elim
+; (9) thumbv7 with -no-integrated-as
; RUN: llc -mtriple arm-unknown-linux-gnueabi \
; RUN: -disable-fp-elim -filetype=asm -o - %s \
@@ -45,6 +46,10 @@
; RUN: -filetype=asm -o - %s \
; RUN: | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-ELIM
+; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \
+; RUN: -disable-fp-elim -no-integrated-as -filetype=asm -o - %s \
+; RUN: | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-NOIAS
+
;-------------------------------------------------------------------------------
; Test 1
;-------------------------------------------------------------------------------
@@ -163,17 +168,17 @@ declare void @_ZSt9terminatev()
; CHECK-FP: .cfi_startproc
; CHECK-FP: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
; CHECK-FP: .cfi_def_cfa_offset 36
-; CHECK-FP: .cfi_offset 14, -4
-; CHECK-FP: .cfi_offset 11, -8
-; CHECK-FP: .cfi_offset 10, -12
-; CHECK-FP: .cfi_offset 9, -16
-; CHECK-FP: .cfi_offset 8, -20
-; CHECK-FP: .cfi_offset 7, -24
-; CHECK-FP: .cfi_offset 6, -28
-; CHECK-FP: .cfi_offset 5, -32
-; CHECK-FP: .cfi_offset 4, -36
+; CHECK-FP: .cfi_offset lr, -4
+; CHECK-FP: .cfi_offset r11, -8
+; CHECK-FP: .cfi_offset r10, -12
+; CHECK-FP: .cfi_offset r9, -16
+; CHECK-FP: .cfi_offset r8, -20
+; CHECK-FP: .cfi_offset r7, -24
+; CHECK-FP: .cfi_offset r6, -28
+; CHECK-FP: .cfi_offset r5, -32
+; CHECK-FP: .cfi_offset r4, -36
; CHECK-FP: add r11, sp, #28
-; CHECK-FP: .cfi_def_cfa 11, 8
+; CHECK-FP: .cfi_def_cfa r11, 8
; CHECK-FP: sub sp, sp, #28
; CHECK-FP: .cfi_endproc
@@ -181,15 +186,15 @@ declare void @_ZSt9terminatev()
; CHECK-FP-ELIM: .cfi_startproc
; CHECK-FP-ELIM: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
; CHECK-FP-ELIM: .cfi_def_cfa_offset 36
-; CHECK-FP-ELIM: .cfi_offset 14, -4
-; CHECK-FP-ELIM: .cfi_offset 11, -8
-; CHECK-FP-ELIM: .cfi_offset 10, -12
-; CHECK-FP-ELIM: .cfi_offset 9, -16
-; CHECK-FP-ELIM: .cfi_offset 8, -20
-; CHECK-FP-ELIM: .cfi_offset 7, -24
-; CHECK-FP-ELIM: .cfi_offset 6, -28
-; CHECK-FP-ELIM: .cfi_offset 5, -32
-; CHECK-FP-ELIM: .cfi_offset 4, -36
+; CHECK-FP-ELIM: .cfi_offset lr, -4
+; CHECK-FP-ELIM: .cfi_offset r11, -8
+; CHECK-FP-ELIM: .cfi_offset r10, -12
+; CHECK-FP-ELIM: .cfi_offset r9, -16
+; CHECK-FP-ELIM: .cfi_offset r8, -20
+; CHECK-FP-ELIM: .cfi_offset r7, -24
+; CHECK-FP-ELIM: .cfi_offset r6, -28
+; CHECK-FP-ELIM: .cfi_offset r5, -32
+; CHECK-FP-ELIM: .cfi_offset r4, -36
; CHECK-FP-ELIM: sub sp, sp, #28
; CHECK-FP-ELIM: .cfi_def_cfa_offset 64
; CHECK-FP-ELIM: .cfi_endproc
@@ -198,17 +203,17 @@ declare void @_ZSt9terminatev()
; CHECK-V7-FP: .cfi_startproc
; CHECK-V7-FP: push {r4, r11, lr}
; CHECK-V7-FP: .cfi_def_cfa_offset 12
-; CHECK-V7-FP: .cfi_offset 14, -4
-; CHECK-V7-FP: .cfi_offset 11, -8
-; CHECK-V7-FP: .cfi_offset 4, -12
+; CHECK-V7-FP: .cfi_offset lr, -4
+; CHECK-V7-FP: .cfi_offset r11, -8
+; CHECK-V7-FP: .cfi_offset r4, -12
; CHECK-V7-FP: add r11, sp, #4
-; CHECK-V7-FP: .cfi_def_cfa 11, 8
+; CHECK-V7-FP: .cfi_def_cfa r11, 8
; CHECK-V7-FP: vpush {d8, d9, d10, d11, d12}
-; CHECK-V7-FP: .cfi_offset 268, -24
-; CHECK-V7-FP: .cfi_offset 267, -32
-; CHECK-V7-FP: .cfi_offset 266, -40
-; CHECK-V7-FP: .cfi_offset 265, -48
-; CHECK-V7-FP: .cfi_offset 264, -56
+; CHECK-V7-FP: .cfi_offset d12, -24
+; CHECK-V7-FP: .cfi_offset d11, -32
+; CHECK-V7-FP: .cfi_offset d10, -40
+; CHECK-V7-FP: .cfi_offset d9, -48
+; CHECK-V7-FP: .cfi_offset d8, -56
; CHECK-V7-FP: sub sp, sp, #28
; CHECK-V7-FP: .cfi_endproc
@@ -216,15 +221,15 @@ declare void @_ZSt9terminatev()
; CHECK-V7-FP-ELIM: .cfi_startproc
; CHECK-V7-FP-ELIM: push {r4, lr}
; CHECK-V7-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-V7-FP-ELIM: .cfi_offset 4, -8
+; CHECK-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-V7-FP-ELIM: .cfi_offset r4, -8
; CHECK-V7-FP-ELIM: vpush {d8, d9, d10, d11, d12}
; CHECK-V7-FP-ELIM: .cfi_def_cfa_offset 48
-; CHECK-V7-FP-ELIM: .cfi_offset 268, -16
-; CHECK-V7-FP-ELIM: .cfi_offset 267, -24
-; CHECK-V7-FP-ELIM: .cfi_offset 266, -32
-; CHECK-V7-FP-ELIM: .cfi_offset 265, -40
-; CHECK-V7-FP-ELIM: .cfi_offset 264, -48
+; CHECK-V7-FP-ELIM: .cfi_offset d12, -16
+; CHECK-V7-FP-ELIM: .cfi_offset d11, -24
+; CHECK-V7-FP-ELIM: .cfi_offset d10, -32
+; CHECK-V7-FP-ELIM: .cfi_offset d9, -40
+; CHECK-V7-FP-ELIM: .cfi_offset d8, -48
; CHECK-V7-FP-ELIM: sub sp, sp, #24
; CHECK-V7-FP-ELIM: .cfi_def_cfa_offset 72
; CHECK-V7-FP-ELIM: .cfi_endproc
@@ -233,13 +238,13 @@ declare void @_ZSt9terminatev()
; CHECK-THUMB-FP: .cfi_startproc
; CHECK-THUMB-FP: push {r4, r5, r6, r7, lr}
; CHECK-THUMB-FP: .cfi_def_cfa_offset 20
-; CHECK-THUMB-FP: .cfi_offset 14, -4
-; CHECK-THUMB-FP: .cfi_offset 7, -8
-; CHECK-THUMB-FP: .cfi_offset 6, -12
-; CHECK-THUMB-FP: .cfi_offset 5, -16
-; CHECK-THUMB-FP: .cfi_offset 4, -20
+; CHECK-THUMB-FP: .cfi_offset lr, -4
+; CHECK-THUMB-FP: .cfi_offset r7, -8
+; CHECK-THUMB-FP: .cfi_offset r6, -12
+; CHECK-THUMB-FP: .cfi_offset r5, -16
+; CHECK-THUMB-FP: .cfi_offset r4, -20
; CHECK-THUMB-FP: add r7, sp, #12
-; CHECK-THUMB-FP: .cfi_def_cfa 7, 8
+; CHECK-THUMB-FP: .cfi_def_cfa r7, 8
; CHECK-THUMB-FP: sub sp, #60
; CHECK-THUMB-FP: .cfi_endproc
@@ -247,11 +252,11 @@ declare void @_ZSt9terminatev()
; CHECK-THUMB-FP-ELIM: .cfi_startproc
; CHECK-THUMB-FP-ELIM: push {r4, r5, r6, r7, lr}
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 20
-; CHECK-THUMB-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-FP-ELIM: .cfi_offset 7, -8
-; CHECK-THUMB-FP-ELIM: .cfi_offset 6, -12
-; CHECK-THUMB-FP-ELIM: .cfi_offset 5, -16
-; CHECK-THUMB-FP-ELIM: .cfi_offset 4, -20
+; CHECK-THUMB-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-FP-ELIM: .cfi_offset r7, -8
+; CHECK-THUMB-FP-ELIM: .cfi_offset r6, -12
+; CHECK-THUMB-FP-ELIM: .cfi_offset r5, -16
+; CHECK-THUMB-FP-ELIM: .cfi_offset r4, -20
; CHECK-THUMB-FP-ELIM: sub sp, #60
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 80
; CHECK-THUMB-FP-ELIM: .cfi_endproc
@@ -260,18 +265,18 @@ declare void @_ZSt9terminatev()
; CHECK-THUMB-V7-FP: .cfi_startproc
; CHECK-THUMB-V7-FP: push.w {r4, r7, r11, lr}
; CHECK-THUMB-V7-FP: .cfi_def_cfa_offset 16
-; CHECK-THUMB-V7-FP: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP: .cfi_offset 11, -8
-; CHECK-THUMB-V7-FP: .cfi_offset 7, -12
-; CHECK-THUMB-V7-FP: .cfi_offset 4, -16
+; CHECK-THUMB-V7-FP: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP: .cfi_offset r11, -8
+; CHECK-THUMB-V7-FP: .cfi_offset r7, -12
+; CHECK-THUMB-V7-FP: .cfi_offset r4, -16
; CHECK-THUMB-V7-FP: add r7, sp, #4
-; CHECK-THUMB-V7-FP: .cfi_def_cfa 7, 12
+; CHECK-THUMB-V7-FP: .cfi_def_cfa r7, 12
; CHECK-THUMB-V7-FP: vpush {d8, d9, d10, d11, d12}
-; CHECK-THUMB-V7-FP: .cfi_offset 268, -24
-; CHECK-THUMB-V7-FP: .cfi_offset 267, -32
-; CHECK-THUMB-V7-FP: .cfi_offset 266, -40
-; CHECK-THUMB-V7-FP: .cfi_offset 265, -48
-; CHECK-THUMB-V7-FP: .cfi_offset 264, -56
+; CHECK-THUMB-V7-FP: .cfi_offset d12, -24
+; CHECK-THUMB-V7-FP: .cfi_offset d11, -32
+; CHECK-THUMB-V7-FP: .cfi_offset d10, -40
+; CHECK-THUMB-V7-FP: .cfi_offset d9, -48
+; CHECK-THUMB-V7-FP: .cfi_offset d8, -56
; CHECK-THUMB-V7-FP: sub sp, #24
; CHECK-THUMB-V7-FP: .cfi_endproc
@@ -279,19 +284,37 @@ declare void @_ZSt9terminatev()
; CHECK-THUMB-V7-FP-ELIM: .cfi_startproc
; CHECK-THUMB-V7-FP-ELIM: push {r4, lr}
; CHECK-THUMB-V7-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 4, -8
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset r4, -8
; CHECK-THUMB-V7-FP-ELIM: vpush {d8, d9, d10, d11, d12}
; CHECK-THUMB-V7-FP-ELIM: .cfi_def_cfa_offset 48
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 268, -16
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 267, -24
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 266, -32
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 265, -40
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 264, -48
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset d12, -16
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset d11, -24
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset d10, -32
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset d9, -40
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset d8, -48
; CHECK-THUMB-V7-FP-ELIM: sub sp, #24
; CHECK-THUMB-V7-FP-ELIM: .cfi_def_cfa_offset 72
; CHECK-THUMB-V7-FP-ELIM: .cfi_endproc
+; CHECK-THUMB-V7-FP-NOIAS-LABEL: _Z4testiiiiiddddd:
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_startproc
+; CHECK-THUMB-V7-FP-NOIAS: push.w {r4, r7, r11, lr}
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_def_cfa_offset 16
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 14, -4
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 11, -8
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 7, -12
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 4, -16
+; CHECK-THUMB-V7-FP-NOIAS: add r7, sp, #4
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_def_cfa 7, 12
+; CHECK-THUMB-V7-FP-NOIAS: vpush {d8, d9, d10, d11, d12}
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 268, -24
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 267, -32
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 266, -40
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 265, -48
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_offset 264, -56
+; CHECK-THUMB-V7-FP-NOIAS: sub sp, #24
+; CHECK-THUMB-V7-FP-NOIAS: .cfi_endproc
;-------------------------------------------------------------------------------
; Test 2
@@ -309,10 +332,10 @@ entry:
; CHECK-FP: .cfi_startproc
; CHECK-FP: push {r11, lr}
; CHECK-FP: .cfi_def_cfa_offset 8
-; CHECK-FP: .cfi_offset 14, -4
-; CHECK-FP: .cfi_offset 11, -8
+; CHECK-FP: .cfi_offset lr, -4
+; CHECK-FP: .cfi_offset r11, -8
; CHECK-FP: mov r11, sp
-; CHECK-FP: .cfi_def_cfa_register 11
+; CHECK-FP: .cfi_def_cfa_register r11
; CHECK-FP: pop {r11, lr}
; CHECK-FP: mov pc, lr
; CHECK-FP: .cfi_endproc
@@ -321,8 +344,8 @@ entry:
; CHECK-FP-ELIM: .cfi_startproc
; CHECK-FP-ELIM: push {r11, lr}
; CHECK-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-FP-ELIM: .cfi_offset 14, -4
-; CHECK-FP-ELIM: .cfi_offset 11, -8
+; CHECK-FP-ELIM: .cfi_offset lr, -4
+; CHECK-FP-ELIM: .cfi_offset r11, -8
; CHECK-FP-ELIM: pop {r11, lr}
; CHECK-FP-ELIM: mov pc, lr
; CHECK-FP-ELIM: .cfi_endproc
@@ -331,10 +354,10 @@ entry:
; CHECK-V7-FP: .cfi_startproc
; CHECK-V7-FP: push {r11, lr}
; CHECK-V7-FP: .cfi_def_cfa_offset 8
-; CHECK-V7-FP: .cfi_offset 14, -4
-; CHECK-V7-FP: .cfi_offset 11, -8
+; CHECK-V7-FP: .cfi_offset lr, -4
+; CHECK-V7-FP: .cfi_offset r11, -8
; CHECK-V7-FP: mov r11, sp
-; CHECK-V7-FP: .cfi_def_cfa_register 11
+; CHECK-V7-FP: .cfi_def_cfa_register r11
; CHECK-V7-FP: pop {r11, pc}
; CHECK-V7-FP: .cfi_endproc
@@ -342,8 +365,8 @@ entry:
; CHECK-V7-FP-ELIM: .cfi_startproc
; CHECK-V7-FP-ELIM: push {r11, lr}
; CHECK-V7-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-V7-FP-ELIM: .cfi_offset 11, -8
+; CHECK-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-V7-FP-ELIM: .cfi_offset r11, -8
; CHECK-V7-FP-ELIM: pop {r11, pc}
; CHECK-V7-FP-ELIM: .cfi_endproc
@@ -351,10 +374,10 @@ entry:
; CHECK-THUMB-FP: .cfi_startproc
; CHECK-THUMB-FP: push {r7, lr}
; CHECK-THUMB-FP: .cfi_def_cfa_offset 8
-; CHECK-THUMB-FP: .cfi_offset 14, -4
-; CHECK-THUMB-FP: .cfi_offset 7, -8
+; CHECK-THUMB-FP: .cfi_offset lr, -4
+; CHECK-THUMB-FP: .cfi_offset r7, -8
; CHECK-THUMB-FP: add r7, sp, #0
-; CHECK-THUMB-FP: .cfi_def_cfa_register 7
+; CHECK-THUMB-FP: .cfi_def_cfa_register r7
; CHECK-THUMB-FP: pop {r7, pc}
; CHECK-THUMB-FP: .cfi_endproc
@@ -362,8 +385,8 @@ entry:
; CHECK-THUMB-FP-ELIM: .cfi_startproc
; CHECK-THUMB-FP-ELIM: push {r7, lr}
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-THUMB-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-FP-ELIM: .cfi_offset 7, -8
+; CHECK-THUMB-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-FP-ELIM: .cfi_offset r7, -8
; CHECK-THUMB-FP-ELIM: pop {r7, pc}
; CHECK-THUMB-FP-ELIM: .cfi_endproc
@@ -371,10 +394,10 @@ entry:
; CHECK-THUMB-V7-FP: .cfi_startproc
; CHECK-THUMB-V7-FP: push {r7, lr}
; CHECK-THUMB-V7-FP: .cfi_def_cfa_offset 8
-; CHECK-THUMB-V7-FP: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP: .cfi_offset 7, -8
+; CHECK-THUMB-V7-FP: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP: .cfi_offset r7, -8
; CHECK-THUMB-V7-FP: mov r7, sp
-; CHECK-THUMB-V7-FP: .cfi_def_cfa_register 7
+; CHECK-THUMB-V7-FP: .cfi_def_cfa_register r7
; CHECK-THUMB-V7-FP: pop {r7, pc}
; CHECK-THUMB-V7-FP: .cfi_endproc
@@ -382,8 +405,8 @@ entry:
; CHECK-THUMB-V7-FP-ELIM: .cfi_startproc
; CHECK-THUMB-V7-FP-ELIM: push.w {r11, lr}
; CHECK-THUMB-V7-FP-ELIM: .cfi_def_cfa_offset 8
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 11, -8
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset r11, -8
; CHECK-THUMB-V7-FP-ELIM: pop.w {r11, pc}
; CHECK-THUMB-V7-FP-ELIM: .cfi_endproc
@@ -413,12 +436,12 @@ entry:
; CHECK-FP: .cfi_startproc
; CHECK-FP: push {r4, r5, r11, lr}
; CHECK-FP: .cfi_def_cfa_offset 16
-; CHECK-FP: .cfi_offset 14, -4
-; CHECK-FP: .cfi_offset 11, -8
-; CHECK-FP: .cfi_offset 5, -12
-; CHECK-FP: .cfi_offset 4, -16
+; CHECK-FP: .cfi_offset lr, -4
+; CHECK-FP: .cfi_offset r11, -8
+; CHECK-FP: .cfi_offset r5, -12
+; CHECK-FP: .cfi_offset r4, -16
; CHECK-FP: add r11, sp, #8
-; CHECK-FP: .cfi_def_cfa 11, 8
+; CHECK-FP: .cfi_def_cfa r11, 8
; CHECK-FP: pop {r4, r5, r11, lr}
; CHECK-FP: mov pc, lr
; CHECK-FP: .cfi_endproc
@@ -427,10 +450,10 @@ entry:
; CHECK-FP-ELIM: .cfi_startproc
; CHECK-FP-ELIM: push {r4, r5, r11, lr}
; CHECK-FP-ELIM: .cfi_def_cfa_offset 16
-; CHECK-FP-ELIM: .cfi_offset 14, -4
-; CHECK-FP-ELIM: .cfi_offset 11, -8
-; CHECK-FP-ELIM: .cfi_offset 5, -12
-; CHECK-FP-ELIM: .cfi_offset 4, -16
+; CHECK-FP-ELIM: .cfi_offset lr, -4
+; CHECK-FP-ELIM: .cfi_offset r11, -8
+; CHECK-FP-ELIM: .cfi_offset r5, -12
+; CHECK-FP-ELIM: .cfi_offset r4, -16
; CHECK-FP-ELIM: pop {r4, r5, r11, lr}
; CHECK-FP-ELIM: mov pc, lr
; CHECK-FP-ELIM: .cfi_endproc
@@ -439,12 +462,12 @@ entry:
; CHECK-V7-FP: .cfi_startproc
; CHECK-V7-FP: push {r4, r5, r11, lr}
; CHECK-V7-FP: .cfi_def_cfa_offset 16
-; CHECK-V7-FP: .cfi_offset 14, -4
-; CHECK-V7-FP: .cfi_offset 11, -8
-; CHECK-V7-FP: .cfi_offset 5, -12
-; CHECK-V7-FP: .cfi_offset 4, -16
+; CHECK-V7-FP: .cfi_offset lr, -4
+; CHECK-V7-FP: .cfi_offset r11, -8
+; CHECK-V7-FP: .cfi_offset r5, -12
+; CHECK-V7-FP: .cfi_offset r4, -16
; CHECK-V7-FP: add r11, sp, #8
-; CHECK-V7-FP: .cfi_def_cfa 11, 8
+; CHECK-V7-FP: .cfi_def_cfa r11, 8
; CHECK-V7-FP: pop {r4, r5, r11, pc}
; CHECK-V7-FP: .cfi_endproc
@@ -452,10 +475,10 @@ entry:
; CHECK-V7-FP-ELIM: .cfi_startproc
; CHECK-V7-FP-ELIM: push {r4, r5, r11, lr}
; CHECK-V7-FP-ELIM: .cfi_def_cfa_offset 16
-; CHECK-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-V7-FP-ELIM: .cfi_offset 11, -8
-; CHECK-V7-FP-ELIM: .cfi_offset 5, -12
-; CHECK-V7-FP-ELIM: .cfi_offset 4, -16
+; CHECK-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-V7-FP-ELIM: .cfi_offset r11, -8
+; CHECK-V7-FP-ELIM: .cfi_offset r5, -12
+; CHECK-V7-FP-ELIM: .cfi_offset r4, -16
; CHECK-V7-FP-ELIM: pop {r4, r5, r11, pc}
; CHECK-V7-FP-ELIM: .cfi_endproc
@@ -463,12 +486,12 @@ entry:
; CHECK-THUMB-FP: .cfi_startproc
; CHECK-THUMB-FP: push {r4, r5, r7, lr}
; CHECK-THUMB-FP: .cfi_def_cfa_offset 16
-; CHECK-THUMB-FP: .cfi_offset 14, -4
-; CHECK-THUMB-FP: .cfi_offset 7, -8
-; CHECK-THUMB-FP: .cfi_offset 5, -12
-; CHECK-THUMB-FP: .cfi_offset 4, -16
+; CHECK-THUMB-FP: .cfi_offset lr, -4
+; CHECK-THUMB-FP: .cfi_offset r7, -8
+; CHECK-THUMB-FP: .cfi_offset r5, -12
+; CHECK-THUMB-FP: .cfi_offset r4, -16
; CHECK-THUMB-FP: add r7, sp, #8
-; CHECK-THUMB-FP: .cfi_def_cfa 7, 8
+; CHECK-THUMB-FP: .cfi_def_cfa r7, 8
; CHECK-THUMB-FP: pop {r4, r5, r7, pc}
; CHECK-THUMB-FP: .cfi_endproc
@@ -476,10 +499,10 @@ entry:
; CHECK-THUMB-FP-ELIM: .cfi_startproc
; CHECK-THUMB-FP-ELIM: push {r4, r5, r7, lr}
; CHECK-THUMB-FP-ELIM: .cfi_def_cfa_offset 16
-; CHECK-THUMB-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-FP-ELIM: .cfi_offset 7, -8
-; CHECK-THUMB-FP-ELIM: .cfi_offset 5, -12
-; CHECK-THUMB-FP-ELIM: .cfi_offset 4, -16
+; CHECK-THUMB-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-FP-ELIM: .cfi_offset r7, -8
+; CHECK-THUMB-FP-ELIM: .cfi_offset r5, -12
+; CHECK-THUMB-FP-ELIM: .cfi_offset r4, -16
; CHECK-THUMB-FP-ELIM: pop {r4, r5, r7, pc}
; CHECK-THUMB-FP-ELIM: .cfi_endproc
@@ -487,12 +510,12 @@ entry:
; CHECK-THUMB-V7-FP: .cfi_startproc
; CHECK-THUMB-V7-FP: push {r4, r5, r7, lr}
; CHECK-THUMB-V7-FP: .cfi_def_cfa_offset 16
-; CHECK-THUMB-V7-FP: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP: .cfi_offset 7, -8
-; CHECK-THUMB-V7-FP: .cfi_offset 5, -12
-; CHECK-THUMB-V7-FP: .cfi_offset 4, -16
+; CHECK-THUMB-V7-FP: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP: .cfi_offset r7, -8
+; CHECK-THUMB-V7-FP: .cfi_offset r5, -12
+; CHECK-THUMB-V7-FP: .cfi_offset r4, -16
; CHECK-THUMB-V7-FP: add r7, sp, #8
-; CHECK-THUMB-V7-FP: .cfi_def_cfa 7, 8
+; CHECK-THUMB-V7-FP: .cfi_def_cfa r7, 8
; CHECK-THUMB-V7-FP: pop {r4, r5, r7, pc}
; CHECK-THUMB-V7-FP: .cfi_endproc
@@ -500,10 +523,10 @@ entry:
; CHECK-THUMB-V7-FP-ELIM: .cfi_startproc
; CHECK-THUMB-V7-FP-ELIM: push.w {r4, r5, r11, lr}
; CHECK-THUMB-V7-FP-ELIM: .cfi_def_cfa_offset 16
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 14, -4
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 11, -8
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 5, -12
-; CHECK-THUMB-V7-FP-ELIM: .cfi_offset 4, -16
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset lr, -4
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset r11, -8
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset r5, -12
+; CHECK-THUMB-V7-FP-ELIM: .cfi_offset r4, -16
; CHECK-THUMB-V7-FP-ELIM: pop.w {r4, r5, r11, pc}
; CHECK-THUMB-V7-FP-ELIM: .cfi_endproc