xref: /minix3/external/bsd/llvm/dist/clang/test/Driver/arm-alignment.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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 aarch64-none-gnueabi -munaligned-access -### %s 2> %t
11 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
12 
13 // RUN: %clang -target aarch64-none-gnueabi -mstrict-align -munaligned-access -### %s 2> %t
14 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
15 
16 // RUN: %clang -target aarch64-none-gnueabi -mno-unaligned-access -munaligned-access -### %s 2> %t
17 // RUN: FileCheck --check-prefix=CHECK-UNALIGNED-AARCH64 < %t %s
18 
19 // CHECK-UNALIGNED-ARM: "-backend-option" "-arm-no-strict-align"
20 // CHECK-UNALIGNED-AARCH64: "-backend-option" "-aarch64-no-strict-align"
21 
22 
23 // RUN: %clang -target arm-none-gnueabi -mno-unaligned-access -### %s 2> %t
24 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
25 
26 // RUN: %clang -target arm-none-gnueabi -mstrict-align -### %s 2> %t
27 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
28 
29 // RUN: %clang -target arm-none-gnueabi -munaligned-access -mno-unaligned-access -### %s 2> %t
30 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
31 
32 // RUN: %clang -target arm-none-gnueabi -munaligned-access -mstrict-align -### %s 2> %t
33 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-ARM < %t %s
34 
35 // RUN: %clang -target aarch64-none-gnueabi -mno-unaligned-access -### %s 2> %t
36 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
37 
38 // RUN: %clang -target aarch64-none-gnueabi -mstrict-align -### %s 2> %t
39 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
40 
41 // RUN: %clang -target aarch64-none-gnueabi -munaligned-access -mno-unaligned-access -### %s 2> %t
42 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
43 
44 // RUN: %clang -target aarch64-none-gnueabi -munaligned-access -mstrict-align -### %s 2> %t
45 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
46 
47 // RUN: %clang -target aarch64-none-gnueabi -mkernel -mno-unaligned-access -### %s 2> %t
48 // RUN: FileCheck --check-prefix=CHECK-ALIGNED-AARCH64 < %t %s
49 
50 // CHECK-ALIGNED-ARM: "-backend-option" "-arm-strict-align"
51 // CHECK-ALIGNED-AARCH64: "-backend-option" "-aarch64-strict-align"
52 
53 // Make sure that v6M cores always trigger the unsupported aligned accesses error
54 // for all supported architecture triples.
55 // RUN: not %clang -c -target thumbv6m-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \
56 // RUN:   FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s
57 // RUN: not %clang -c -target thumb-none-gnueabi -mcpu=cortex-m0 -munaligned-access %s 2>&1 | \
58 // RUN:   FileCheck --check-prefix CHECK-UNALIGN-NOT-SUPPORTED %s
59 
60 // CHECK-UNALIGN-NOT-SUPPORTED: error: the v6m sub-architecture does not support unaligned accesses
61