llvm/test/MC/ARM/eh-directive-cantunwind-diagnostics.s
Saleem Abdulrasool 307f17b938 MCParser: introduce Note and use it for ARM AsmParser
Introduce a new virtual method Note into the AsmParser.  This completements the
existing Warning and Error methods.  Use the new method to clean up the output
of the unwind routines in the ARM AsmParser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198661 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-07 02:28:31 +00:00

107 lines
3.1 KiB
ArmAsm

@ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t
@ RUN: FileCheck < %t %s
@ Check the diagnostics for .cantunwind, .handlerdata, and .personality
@ .cantunwind directive can't be used with .handlerdata directive nor
@ .personality directive. This test case check for the diagnostics for
@ the conflicts.
.syntax unified
.text
@-------------------------------------------------------------------------------
@ TEST1: cantunwind + personality
@-------------------------------------------------------------------------------
.globl func1
.align 2
.type func1,%function
.fnstart
func1:
.cantunwind
.personality __gxx_personality_v0
@ CHECK: error: .personality can't be used with .cantunwind directive
@ CHECK: .personality __gxx_personality_v0
@ CHECK: ^
@ CHECK: note: .cantunwind was specified here
@ CHECK: .cantunwind
@ CHECK: ^
.fnend
@-------------------------------------------------------------------------------
@ TEST2: cantunwind + handlerdata
@-------------------------------------------------------------------------------
.globl func2
.align 2
.type func2,%function
.fnstart
func2:
.cantunwind
.handlerdata
@ CHECK: error: .handlerdata can't be used with .cantunwind directive
@ CHECK: .handlerdata
@ CHECK: ^
@ CHECK: note: .cantunwind was specified here
@ CHECK: .cantunwind
@ CHECK: ^
.fnend
@-------------------------------------------------------------------------------
@ TEST3: personality + cantunwind
@-------------------------------------------------------------------------------
.globl func3
.align 2
.type func3,%function
.fnstart
func3:
.personality __gxx_personality_v0
.cantunwind
@ CHECK: error: .cantunwind can't be used with .personality directive
@ CHECK: .cantunwind
@ CHECK: ^
@ CHECK: note: .personality was specified here
@ CHECK: .personality __gxx_personality_v0
@ CHECK: ^
.fnend
@-------------------------------------------------------------------------------
@ TEST4: handlerdata + cantunwind
@-------------------------------------------------------------------------------
.globl func4
.align 2
.type func4,%function
.fnstart
func4:
.handlerdata
.cantunwind
@ CHECK: error: .cantunwind can't be used with .handlerdata directive
@ CHECK: .cantunwind
@ CHECK: ^
@ CHECK: note: .handlerdata was specified here
@ CHECK: .handlerdata
@ CHECK: ^
.fnend
@-------------------------------------------------------------------------------
@ TEST5: cantunwind + fnstart
@-------------------------------------------------------------------------------
.globl func5
.align 2
.type func5,%function
.cantunwind
@ CHECK: error: .fnstart must precede .cantunwind directive
@ CHECK: .cantunwind
@ CHECK: ^
.fnstart
func5:
.fnend