xref: /llvm-project/lld/test/COFF/weak-override.ll (revision 75cdab6dc2453a508157a9c383b93373a93078d6)
1; REQUIRES: x86
2; RUN: llvm-as -o %t-weak.obj %S/Inputs/weak-def.ll
3; RUN: llvm-as -o %t-strong.obj %S/Inputs/strong-def.ll
4; RUN: llvm-as -o %t.obj %s
5; RUN: lld-link /dll /out:%t-weak-first.dll %t.obj %t-weak.obj %t-strong.obj
6; RUN: lld-link /dll /out:%t-strong-first.dll %t.obj %t-strong.obj %t-weak.obj
7; RUN: lld-link /dll /out:%t-weak-only.dll %t.obj %t-weak.obj
8; RUN: llvm-objdump --no-print-imm-hex -d %t-weak-first.dll | FileCheck --check-prefix=CHECK-STRONG %s
9; RUN: llvm-objdump --no-print-imm-hex -d %t-strong-first.dll | FileCheck --check-prefix=CHECK-STRONG %s
10; RUN: llvm-objdump --no-print-imm-hex -d %t-weak-only.dll | FileCheck --check-prefix=CHECK-WEAK %s
11
12target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
13target triple = "x86_64-pc-windows-msvc"
14
15declare noundef i32 @foo() local_unnamed_addr
16
17define dllexport i32 @bar() local_unnamed_addr {
18  %1 = tail call noundef i32 @foo()
19  ret i32 %1
20}
21
22define void @_DllMainCRTStartup() {
23entry:
24  ret void
25}
26
27; CHECK-STRONG: movl $5678, %eax
28; CHECK-STRONG-NOT: movl $1234, %eax
29; CHECK-WEAK: movl $1234, %eax
30; CHECK-WEAK-NOT: movl $5678, %eax
31