summaryrefslogtreecommitdiff
path: root/test/MC/ARM/eh-directive-vsave-diagnostics.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/ARM/eh-directive-vsave-diagnostics.s')
-rw-r--r--test/MC/ARM/eh-directive-vsave-diagnostics.s41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/MC/ARM/eh-directive-vsave-diagnostics.s b/test/MC/ARM/eh-directive-vsave-diagnostics.s
new file mode 100644
index 0000000000..62787f37c2
--- /dev/null
+++ b/test/MC/ARM/eh-directive-vsave-diagnostics.s
@@ -0,0 +1,41 @@
+@ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t
+@ RUN: FileCheck --check-prefix=CHECK < %t %s
+
+@ Check the diagnostics for .vsave directive
+
+@ .vsave directive should always come after .fnstart directive
+@ and before .handlerdata directive.
+
+ .syntax unified
+ .text
+
+@-------------------------------------------------------------------------------
+@ TEST1: .vsave before .fnstart
+@-------------------------------------------------------------------------------
+ .globl func1
+ .align 2
+ .type func1,%function
+ .vsave {d0, d1, d2, d3}
+@ CHECK: error: .fnstart must precede .save or .vsave directives
+@ CHECK: .vsave {d0, d1, d2, d3}
+@ CHECK: ^
+ .fnstart
+func1:
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST2: .vsave after .handlerdata
+@-------------------------------------------------------------------------------
+ .globl func2
+ .align 2
+ .type func2,%function
+ .fnstart
+func2:
+ .handlerdata
+ .vsave {d0, d1, d2, d3}
+@ CHECK: error: .save or .vsave must precede .handlerdata directive
+@ CHECK: .vsave {d0, d1, d2, d3}
+@ CHECK: ^
+ .fnend