xref: /llvm-project/clang/test/Driver/arm-alignment.c (revision 34ebfabc34476b73a3d65d3bd046c35ffab411c4)
1 // RUN: %clang -target arm-none-gnueabi -munaligned-access -### %s 2> %t
2 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
3 
4 // RUN: %clang -target arm-none-gnueabi -mstrict-align -munaligned-access -### %s 2> %t
5 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
6 
7 // RUN: %clang -target arm-none-gnueabi -mno-unaligned-access -munaligned-access -### %s 2> %t
8 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
9 
10 // RUN: %clang -target armv6-apple-darwin -### %s 2> %t
11 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
12 
13 // RUN: %clang -target armv6-netbsd-eabi -### %s 2> %t
14 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
15 
16 // RUN: %clang -target armv7-unknown-linux -### %s 2> %t
17 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
18 
19 // RUN: %clang -target armv7-unknown-nacl-gnueabihf -### %s 2> %t
20 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
21 
22 // RUN: %clang -target armv7-windows -### %s 2> %t
23 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
24 
25 // RUN: %clang --target=armv6 -### %s 2> %t
26 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
27 
28 // RUN: %clang --target=armv7 -### %s 2> %t
29 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-ARM < %t %s
30 
31 // RUN: %clang -target thumbv6m-none-gnueabi -mcpu=cortex-m0 -### %s 2> %t
32 // RUN: FileCheck --check-prefix CHECK-ALIGNED-ARM <%t %s
33 
34 // RUN: %clang -target thumb-none-gnueabi -mcpu=cortex-m0 -### %s 2> %t
35 // RUN: FileCheck --check-prefix CHECK-ALIGNED-ARM <%t %s
36 
37 // RUN: %clang -target thumbv8m.base-none-gnueabi -### %s 2> %t
38 // RUN: FileCheck --check-prefix CHECK-ALIGNED-ARM <%t %s
39 
40 // RUN: %clang -target armv7em-apple-unknown-macho -mthumb -### %s 2> %t
41 // RUN: FileCheck --check-prefix CHECK-ALIGNED-ARM <%t %s
42 
43 // RUN: %clang -target armv7em-apple-darwin -mthumb -### %s 2> %t
44 // RUN: FileCheck --check-prefix CHECK-ALIGNED-ARM <%t %s
45 
46 // RUN: %clang --target=aarch64 -munaligned-access -### %s 2> %t
47 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
48 
49 // RUN: %clang --target=aarch64 -mstrict-align -munaligned-access -### %s 2> %t
50 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
51 
52 // RUN: %clang --target=aarch64 -mno-unaligned-access -munaligned-access -### %s 2> %t
53 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
54 
55 // CHECK-UNALIGNED-ARM-NOT: "-target-feature" "+strict-align"
56 // CHECK-UNALIGNED-AARCH64-NOT: "-target-feature" "+strict-align"
57 
58 
59 // RUN: %clang -target arm-none-gnueabi -mno-unaligned-access -### %s 2> %t
60 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
61 
62 // RUN: %clang -target arm-none-gnueabi -mstrict-align -### %s 2> %t
63 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
64 
65 // RUN: %clang -target arm-none-gnueabi -munaligned-access -mno-unaligned-access -### %s 2> %t
66 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
67 
68 // RUN: %clang -target arm-none-gnueabi -munaligned-access -mstrict-align -### %s 2> %t
69 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
70 
71 // RUN: %clang -target arm-none-gnueabi -### %s 2> %t
72 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
73 
74 // RUN: %clang -target armv5-apple-darwin -### %s 2> %t
75 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
76 
77 // RUN: %clang -target armv5t-netbsd-eabi -### %s 2> %t
78 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
79 
80 // RUN: %clang -target armv6-unknown-linux -### %s 2> %t
81 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
82 
83 // RUN: %clang -target armv6-unknown-nacl-gnueabihf -### %s 2> %t
84 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
85 
86 // RUN: %clang -target armv6m-apple-darwin -### %s 2> %t
87 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
88 
89 // RUN: %clang -target armv6m-netbsd-eabi -### %s 2> %t
90 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
91 
92 // RUN: %clang --target=aarch64 -mno-unaligned-access -### %s 2> %t
93 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
94 
95 // RUN: %clang --target=aarch64 -mstrict-align -### %s 2> %t
96 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
97 
98 // RUN: %clang --target=aarch64 -munaligned-access -mno-unaligned-access -### %s 2> %t
99 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
100 
101 // RUN: %clang --target=aarch64 -munaligned-access -mstrict-align -### %s 2> %t
102 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
103 
104 // RUN: %clang --target=aarch64 -mkernel -mno-unaligned-access -### %s 2> %t
105 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
106 
107 // RUN: %clang -target aarch64-unknown-openbsd -### %s 2> %t
108 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
109 
110 // CHECK-ALIGNED-ARM: "-target-feature" "+strict-align" {{.*}} "-Wunaligned-access"
111 // CHECK-ALIGNED-AARCH64: "-target-feature" "+strict-align" {{.*}} "-Wunaligned-access"
112 
113 // Make sure that v6M cores and v8M Baseline always trigger the unsupported
114 // aligned accesses error for all supported architecture triples.
115 // RUN: not %clang -c -target thumbv6m-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \
116 // RUN:   FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s
117 // RUN: not %clang -c -target thumb-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \
118 // RUN:   FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s
119 // RUN: not %clang -c -target thumbv8m.base-none-gnueabi -munaligned-access %s 2>&1 | \
120 // RUN:   FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s
121 
122 // CHECK-UNALIGN-NOT-SUPPORTED: error: the {{.*}} sub-architecture does not support unaligned accesses
123