xref: /llvm-project/clang/test/CodeGen/arm-execute-only.c (revision 6f357afee2a1a14ee771d6f1442b6c5bee558ba1)
1 // RUN: %clang -target armv6t2-eabi -### %s 2>&1 \
2 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
3 
4 // RUN: %clang -target armv6t2-eabi -### -mexecute-only %s 2>&1 \
5 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
6 
7 // RUN: %clang -target armv6t2-eabi -### -mexecute-only -mno-execute-only %s 2>&1 \
8 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
9 
10 // RUN: %clang -target armv7m-eabi -### %s 2>&1 \
11 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
12 
13 // RUN: %clang -target armv7m-eabi -### -mexecute-only %s 2>&1 \
14 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
15 
16 // RUN: %clang -target armv7m-eabi -### -mexecute-only -mno-execute-only %s 2>&1 \
17 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
18 
19 // RUN: %clang -target armv8m.base-eabi -### %s 2>&1 \
20 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
21 
22 // RUN: %clang -target armv8m.base-eabi -### -mexecute-only %s 2>&1 \
23 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
24 
25 // RUN: %clang -target armv8m.base-eabi -### -mexecute-only -mno-execute-only %s 2>&1 \
26 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
27 
28 // RUN: %clang -target armv8m.main-eabi -### %s 2>&1 \
29 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
30 
31 // RUN: %clang -target armv8m.main-eabi -### -mexecute-only %s 2>&1 \
32 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
33 
34 // RUN: %clang -target armv8m.main-eabi -### -mexecute-only -mno-execute-only %s 2>&1 \
35 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
36 
37 
38 // -mpure-code flag for GCC compatibility
39 // RUN: %clang -target armv6t2-eabi -### %s 2>&1 \
40 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
41 
42 // RUN: %clang -target armv6t2-eabi -### -mpure-code %s 2>&1 \
43 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
44 
45 // RUN: %clang -target armv6t2-eabi -### -mpure-code -mno-pure-code %s 2>&1 \
46 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
47 
48 // RUN: %clang -target armv7m-eabi -### %s 2>&1 \
49 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
50 
51 // RUN: %clang -target armv7m-eabi -### -mpure-code %s 2>&1 \
52 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
53 
54 // RUN: %clang -target armv7m-eabi -### -mpure-code -mno-pure-code %s 2>&1 \
55 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
56 
57 // RUN: %clang -target armv8m.base-eabi -### %s 2>&1 \
58 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
59 
60 // RUN: %clang -target armv8m.base-eabi -### -mpure-code %s 2>&1 \
61 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
62 
63 // RUN: %clang -target armv8m.base-eabi -### -mpure-code -mno-pure-code %s 2>&1 \
64 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
65 
66 // RUN: %clang -target armv8m.main-eabi -### %s 2>&1 \
67 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
68 
69 // RUN: %clang -target armv8m.main-eabi -### -mpure-code %s 2>&1 \
70 // RUN:    | FileCheck %s -check-prefix CHECK-EXECUTE-ONLY
71 
72 // RUN: %clang -target armv8m.main-eabi -### -mpure-code -mno-pure-code %s 2>&1 \
73 // RUN:    | FileCheck %s -check-prefix CHECK-NO-EXECUTE-ONLY
74 
75 // CHECK-NO-EXECUTE-ONLY-NOT: "+execute-only"
76 // CHECK-EXECUTE-ONLY: "+execute-only"
77 
a()78 void a() {}
79