diff --git a/include/llvm/MC/MCAsmInfo.h b/include/llvm/MC/MCAsmInfo.h index 4e5322fe6af..0ecffa34bd6 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 4c87bb21803..3b33a9901c6 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 ea9dd19571c..08efa8e4f24 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 6ce6680e572..5bafce9407e 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 2a7d7947db0..9b39525e527 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 527fea8c204..cf687676fb1 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