summaryrefslogtreecommitdiff
path: root/test/MC/ARM/eh-directive-setfp-diagnostics.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/ARM/eh-directive-setfp-diagnostics.s')
-rw-r--r--test/MC/ARM/eh-directive-setfp-diagnostics.s87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/MC/ARM/eh-directive-setfp-diagnostics.s b/test/MC/ARM/eh-directive-setfp-diagnostics.s
new file mode 100644
index 0000000000..a5b8aa2386
--- /dev/null
+++ b/test/MC/ARM/eh-directive-setfp-diagnostics.s
@@ -0,0 +1,87 @@
+@ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t
+@ RUN: FileCheck --check-prefix=CHECK < %t %s
+
+@ Check the diagnostics for .setfp directive.
+
+
+ .syntax unified
+ .text
+
+@-------------------------------------------------------------------------------
+@ TEST1: .setfp before .fnstart
+@-------------------------------------------------------------------------------
+ .globl func1
+ .align 2
+ .type func1,%function
+ .setfp fp, sp, #0
+@ CHECK: error: .fnstart must precede .setfp directive
+@ CHECK: .setfp fp, sp, #0
+@ CHECK: ^
+ .fnstart
+func1:
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST2: .setfp after .handlerdata
+@-------------------------------------------------------------------------------
+ .globl func2
+ .align 2
+ .type func2,%function
+ .fnstart
+func2:
+ .handlerdata
+ .setfp fp, sp, #0
+@ CHECK: error: .setfp must precede .handlerdata directive
+@ CHECK: .setfp fp, sp, #0
+@ CHECK: ^
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST3: .setfp with bad fp register
+@-------------------------------------------------------------------------------
+ .globl func3
+ .align 2
+ .type func3,%function
+ .fnstart
+func3:
+ .setfp 0, r0, #0
+@ CHECK: error: frame pointer register expected
+@ CHECK: .setfp 0, r0, #0
+@ CHECK: ^
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST4: .setfp with bad sp register
+@-------------------------------------------------------------------------------
+ .globl func4
+ .align 2
+ .type func4,%function
+ .fnstart
+func4:
+ .setfp fp, 0, #0
+@ CHECK: error: stack pointer register expected
+@ CHECK: .setfp fp, 0, #0
+@ CHECK: ^
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST5: .setfp with non-sp register as second operand
+@-------------------------------------------------------------------------------
+ .globl func5
+ .align 2
+ .type func5,%function
+ .fnstart
+func5:
+ .setfp fp, r0, #0
+@ CHECK: error: register should be either $sp or the latest fp register
+@ CHECK: .setfp fp, r0, #0
+@ CHECK: ^
+ .fnend