Home | History | Annotate | Download | only in ARM
      1 @ RUN: not llvm-mc -triple=armv7-unknown-linux-gnueabi < %s 2> %t
      2 @ RUN: FileCheck < %t %s
      3 
      4 @ Check the diagnostics for .cantunwind, .handlerdata, and .personality
      5 
      6 @ .cantunwind directive can't be used with .handlerdata directive nor
      7 @ .personality directive.  This test case check for the diagnostics for
      8 @ the conflicts.
      9 
     10 
     11         .syntax unified
     12         .text
     13 
     14 @-------------------------------------------------------------------------------
     15 @ TEST1: cantunwind + personality
     16 @-------------------------------------------------------------------------------
     17         .globl  func1
     18         .align  2
     19         .type   func1,%function
     20         .fnstart
     21 func1:
     22         .cantunwind
     23         .personality    __gxx_personality_v0
     24 @ CHECK: error: .personality can't be used with .cantunwind directive
     25 @ CHECK:        .personality __gxx_personality_v0
     26 @ CHECK:        ^
     27 @ CHECK: error: .cantunwind was specified here
     28 @ CHECK:        .cantunwind
     29 @ CHECK:        ^
     30         .fnend
     31 
     32 
     33 
     34 @-------------------------------------------------------------------------------
     35 @ TEST2: cantunwind + handlerdata
     36 @-------------------------------------------------------------------------------
     37         .globl  func2
     38         .align  2
     39         .type   func2,%function
     40         .fnstart
     41 func2:
     42         .cantunwind
     43         .handlerdata
     44 @ CHECK: error: .handlerdata can't be used with .cantunwind directive
     45 @ CHECK:        .handlerdata
     46 @ CHECK:        ^
     47 @ CHECK: error: .cantunwind was specified here
     48 @ CHECK:        .cantunwind
     49 @ CHECK:        ^
     50         .fnend
     51 
     52 
     53 
     54 @-------------------------------------------------------------------------------
     55 @ TEST3: personality + cantunwind
     56 @-------------------------------------------------------------------------------
     57         .globl  func3
     58         .align  2
     59         .type   func3,%function
     60         .fnstart
     61 func3:
     62         .personality    __gxx_personality_v0
     63         .cantunwind
     64 @ CHECK: error: .cantunwind can't be used with .personality directive
     65 @ CHECK:        .cantunwind
     66 @ CHECK:        ^
     67 @ CHECK: error: .personality was specified here
     68 @ CHECK:        .personality __gxx_personality_v0
     69 @ CHECK:        ^
     70         .fnend
     71 
     72 
     73 
     74 @-------------------------------------------------------------------------------
     75 @ TEST4: handlerdata + cantunwind
     76 @-------------------------------------------------------------------------------
     77         .globl  func4
     78         .align  2
     79         .type   func4,%function
     80         .fnstart
     81 func4:
     82         .handlerdata
     83         .cantunwind
     84 @ CHECK: error: .cantunwind can't be used with .handlerdata directive
     85 @ CHECK:        .cantunwind
     86 @ CHECK:        ^
     87 @ CHECK: error: .handlerdata was specified here
     88 @ CHECK:        .handlerdata
     89 @ CHECK:        ^
     90         .fnend
     91 
     92 
     93 
     94 @-------------------------------------------------------------------------------
     95 @ TEST5: cantunwind + fnstart
     96 @-------------------------------------------------------------------------------
     97         .globl  func5
     98         .align  2
     99         .type   func5,%function
    100         .cantunwind
    101 @ CHECK: error: .fnstart must precede .cantunwind directive
    102 @ CHECK:        .cantunwind
    103 @ CHECK:        ^
    104         .fnstart
    105 func5:
    106         .fnend
    107