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