Home | History | Annotate | Download | only in ARM
      1 @ RUN: not llvm-mc -triple armv7-linux-eabi -filetype asm -o /dev/null %s 2>&1  \
      2 @ RUN:   | FileCheck %s
      3 
      4 	.syntax unified
      5 	.thumb
      6 
      7 	.global function
      8 	.type function,%function
      9 	.thumb_func
     10 function:
     11 	.personalityindex 0
     12 
     13 @ CHECK: error: .fnstart must precede .personalityindex directive
     14 @ CHECK: 	.personalityindex 0
     15 @ CHECK:        ^
     16 
     17 	.global ununwindable
     18 	.type ununwindable,%function
     19 	.thumb_func
     20 ununwindable:
     21 	.fnstart
     22 	.cantunwind
     23 	.personalityindex 0
     24 	.fnend
     25 
     26 @ CHECK: error: .personalityindex cannot be used with .cantunwind
     27 @ CHECK: 	.personalityindex 0
     28 @ CHECK:        ^
     29 @ CHECK: note: .cantunwind was specified here
     30 @ CHECK: 	.cantunwind
     31 @ CHECK:        ^
     32 
     33 	.global nodata
     34 	.type nodata,%function
     35 	.thumb_func
     36 nodata:
     37 	.fnstart
     38 	.handlerdata
     39 	.personalityindex 0
     40 	.fnend
     41 
     42 @ CHECK: error: .personalityindex must precede .handlerdata directive
     43 @ CHECK: 	.personalityindex 0
     44 @ CHECK:        ^
     45 @ CHECK: note: .handlerdata was specified here
     46 @ CHECK: 	.handlerdata
     47 @ CHECK:        ^
     48 
     49 	.global multiple_personality
     50 	.type multiple_personality,%function
     51 	.thumb_func
     52 multiple_personality:
     53 	.fnstart
     54 	.personality __aeabi_personality_pr0
     55 	.personalityindex 0
     56 	.fnend
     57 
     58 @ CHECK: error: multiple personality directives
     59 @ CHECK: 	.personalityindex 0
     60 @ CHECK:        ^
     61 @ CHECK: note: .personality was specified here
     62 @ CHECK: 	.personality __aeabi_personality_pr0
     63 @ CHECK:        ^
     64 @ CHECK: note: .personalityindex was specified here
     65 @ CHECK: 	.personalityindex 0
     66 @ CHECK:       ^
     67 
     68 	.global multiple_personality_indicies
     69 	.type multiple_personality_indicies,%function
     70 	.thumb_func
     71 multiple_personality_indicies:
     72 	.fnstart
     73 	.personalityindex 0
     74 	.personalityindex 1
     75 	.fnend
     76 
     77 @ CHECK: error: multiple personality directives
     78 @ CHECK: 	.personalityindex 1
     79 @ CHECK:        ^
     80 @ CHECK: note: .personalityindex was specified here
     81 @ CHECK: 	.personalityindex 0
     82 @ CHECK:        ^
     83 @ CHECK: note: .personalityindex was specified here
     84 @ CHECK: 	.personalityindex 1
     85 @ CHECK:        ^
     86 
     87 	.global invalid_expression
     88 	.type invalid_expression,%function
     89 	.thumb_func
     90 invalid_expression:
     91 	.fnstart
     92 	.personalityindex <expression>
     93 	.fnend
     94 
     95 @ CHECK: error: unknown token in expression
     96 @ CHECK: 	.personalityindex <expression>
     97 @ CHECK:                          ^
     98 
     99 	.global nonconstant_expression
    100 	.type nonconstant_expression,%function
    101 	.thumb_func
    102 nonconstant_expression:
    103 	.fnstart
    104 	.personalityindex nonconstant_expression
    105 	.fnend
    106 
    107 @ CHECK: error: index must be a constant number
    108 @ CHECK: 	.personalityindex nonconstant_expression
    109 @ CHECK:                          ^
    110 
    111 	.global bad_index
    112 	.type bad_index,%function
    113 	.thumb_func
    114 bad_index:
    115 	.fnstart
    116 	.personalityindex 42
    117 	.fnend
    118 
    119 @ CHECK: error: personality routine index should be in range [0-3]
    120 @ CHECK: 	.personalityindex 42
    121 @ CHECK:                          ^
    122 
    123