summaryrefslogtreecommitdiff
path: root/test/MC/ARM/eh-directive-save-diagnoatics.s
diff options
context:
space:
mode:
authorLogan Chien <tzuhsiang.chien@gmail.com>2013-05-10 16:17:24 +0000
committerLogan Chien <tzuhsiang.chien@gmail.com>2013-05-10 16:17:24 +0000
commitc24a374331fc97dd215937c8f0a9bf5271f39657 (patch)
tree8b45dc88291c6b9a7da543364389118c4e278a8b /test/MC/ARM/eh-directive-save-diagnoatics.s
parent2e2c12b9961647987692389bc3cc25eae9220d26 (diff)
downloadllvm-c24a374331fc97dd215937c8f0a9bf5271f39657.tar.gz
llvm-c24a374331fc97dd215937c8f0a9bf5271f39657.tar.bz2
llvm-c24a374331fc97dd215937c8f0a9bf5271f39657.tar.xz
Implement AsmParser for ARM unwind directives.
This commit implements the AsmParser for fnstart, fnend, cantunwind, personality, handlerdata, pad, setfp, save, and vsave directives. This commit fixes some minor issue in the ARMELFStreamer: * The switch back to corresponding section after the .fnend directive. * Emit the unwind opcode while processing .fnend directive if there is no .handlerdata directive. * Emit the unwind opcode to .ARM.extab while processing .handlerdata even if .personality directive does not exist. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181603 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/ARM/eh-directive-save-diagnoatics.s')
-rw-r--r--test/MC/ARM/eh-directive-save-diagnoatics.s41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/MC/ARM/eh-directive-save-diagnoatics.s b/test/MC/ARM/eh-directive-save-diagnoatics.s
new file mode 100644
index 0000000000..0e6d7404a3
--- /dev/null
+++ b/test/MC/ARM/eh-directive-save-diagnoatics.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 .save directive
+
+@ .save directive should always come after .fnstart directive and
+@ before .handlerdata directive.
+
+ .syntax unified
+ .text
+
+@-------------------------------------------------------------------------------
+@ TEST1: .save before .fnstart
+@-------------------------------------------------------------------------------
+ .globl func1
+ .align 2
+ .type func1,%function
+ .save {r4, r5, r6, r7}
+@ CHECK: error: .fnstart must precede .save or .vsave directives
+@ CHECK: .save {r4, r5, r6, r7}
+@ CHECK: ^
+ .fnstart
+func1:
+ .fnend
+
+
+
+@-------------------------------------------------------------------------------
+@ TEST2: .save after .handlerdata
+@-------------------------------------------------------------------------------
+ .globl func2
+ .align 2
+ .type func2,%function
+ .fnstart
+func2:
+ .handlerdata
+ .save {r4, r5, r6, r7}
+@ CHECK: error: .save or .vsave must precede .handlerdata directive
+@ CHECK: .save {r4, r5, r6, r7}
+@ CHECK: ^
+ .fnend