[llvm] Do not replace dead constant references in metadata with undef
[llvm-project.git] / lld / test / ELF / arm-tag-vfp-args.s
blob9a38b04b09c8936fb17b4b4310717a37070ffa18
1 // REQUIRES:arm
2 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-base.s -o %tbase.o
3 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-vfp.s -o %tvfp.o
4 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-toolchain.s -o %ttoolchain.o
5 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-compat.s -o %tcompat.o
6 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
8 // The default for this file is 0 (Base AAPCS)
9 // RUN: ld.lld %t.o -o %tdefault
10 // RUN: llvm-readobj --file-headers %tdefault | FileCheck -check-prefix=CHECK-BASE %s
12 // Expect explicit Base AAPCS.
13 // RUN: ld.lld %t.o %tbase.o -o %tbase
14 // RUN: llvm-readobj --file-headers %tbase | FileCheck -check-prefix=CHECK-BASE %s
16 // Expect explicit Base AAPCS when linking Base and Compatible.
17 // RUN: ld.lld %t.o %tbase.o %tcompat.o -o %tbasecompat
18 // RUN: llvm-readobj --file-headers %tbasecompat | FileCheck -check-prefix=CHECK-BASE %s
20 // CHECK-BASE: Flags [ (0x5000200)
21 // CHECK-BASE-NEXT: 0x200
22 // CHECK-BASE-NEXT: 0x1000000
23 // CHECK-BASE-NEXT: 0x4000000
24 // CHECK-BASE-NEXT: ]
26 // Expect Hard float VFP AAPCS
27 // RUN: ld.lld %t.o %tvfp.o -o %tvfp
28 // RUN: llvm-readobj --file-headers %tvfp | FileCheck -check-prefix=CHECK-VFP %s
30 // Expect Hard float VFP AAPCS when linking VFP and Compatible
31 // RUN: ld.lld %t.o %tvfp.o %tcompat.o -o %tvfpcompat
32 // RUN: llvm-readobj --file-headers %tvfpcompat | FileCheck -check-prefix=CHECK-VFP %s
34 // CHECK-VFP: Flags [ (0x5000400)
35 // CHECK-VFP-NEXT: 0x400
36 // CHECK-VFP-NEXT: 0x1000000
37 // CHECK-VFP-NEXT: 0x4000000
38 // CHECK-VFP-NEXT: ]
40 // Expect Toolchain specifc to not use either Base or VFP AAPCS
41 // RUN: ld.lld %t.o %ttoolchain.o -o %ttoolchain
42 // RUN: llvm-readobj --file-headers %ttoolchain | FileCheck -check-prefix=CHECK-TOOLCHAIN %s
44 // Expect Toolchain and Compatible to have same affect as Toolchain.
45 // RUN: ld.lld %t.o %ttoolchain.o %tcompat.o -o %ttoolchaincompat
46 // RUN: llvm-readobj --file-headers %ttoolchaincompat | FileCheck -check-prefix=CHECK-TOOLCHAIN %s
48 // CHECK-TOOLCHAIN: Flags [ (0x5000000)
49 // CHECK-TOOLCHAIN-NEXT: 0x1000000
50 // CHECK-TOOLCHAIN-NEXT: 0x4000000
51 // CHECK-TOOLCHAIN-NEXT: ]
53 .arch armv7-a
54 .eabi_attribute 20, 1
55 .eabi_attribute 21, 1
56 .eabi_attribute 23, 3
57 .eabi_attribute 24, 1
58 .eabi_attribute 25, 1
59 .eabi_attribute 26, 2
60 .eabi_attribute 30, 6
61 .eabi_attribute 34, 1
62 .eabi_attribute 18, 4
63 // We do not specify Tag_ABI_VFP_args (.eabi_attribute 28) in this file.
64 // When omitted the value of the tag defaults to 0, however if there
65 // are other files with explicit Tag_ABI_VFP_args we use that in
66 // preference.
69 .syntax unified
70 .globl _start
71 .type _start, %function
72 _start: bx lr