File tree Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Expand file tree Collapse file tree 2 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -589,7 +589,8 @@ void Verifier::visitGlobalValue(const GlobalValue &GV) {
589
589
Assert (!GV.isDSOLocal (),
590
590
" GlobalValue with DLLImport Storage is dso_local!" , &GV);
591
591
592
- Assert ((GV.isDeclaration () && GV.hasExternalLinkage ()) ||
592
+ Assert ((GV.isDeclaration () &&
593
+ (GV.hasExternalLinkage () || GV.hasExternalWeakLinkage ())) ||
593
594
GV.hasAvailableExternallyLinkage (),
594
595
" Global is marked as dllimport, but not external" , &GV);
595
596
}
Original file line number Diff line number Diff line change
1
+ ; RUN: opt -verify < %s 2>&1 | FileCheck %s
2
+ ; CHECK-NOT: Global is marked as dllimport, but not external
3
+
4
+ target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
5
+ target triple = "x86_64-pc-windows-msvc19.11.0"
6
+
7
+ @"?var_hook@@3HA" = extern_weak dllimport global i32 , align 4
8
+
9
+ ; Function Attrs: noinline optnone uwtable
10
+ define dso_local zeroext i1 @"?foo@@YA_NPEAHH@Z" (i32* %0 , i32 %1 ) #0 {
11
+ ret i1 0
12
+ }
13
+
14
+ declare extern_weak dllimport void @func_hook (i32 ) #1
15
+
16
+ attributes #0 = { noinline optnone uwtable }
17
+ attributes #1 = { uwtable }
18
+
19
+ ; Compiled from the following C++ example with --target=x86_64-pc-win32,
20
+ ; using the non-checking configuration
21
+ ;__declspec(dllimport) __attribute__((weak)) extern "C" void func_hook(int);
22
+ ;extern __declspec(dllimport) __attribute__((weak)) int var_hook;
23
+ ;bool foo(int *q, int p)
24
+ ;{
25
+ ; if (func_hook)
26
+ ; func_hook(p);
27
+ ; return &var_hook == q;
28
+ ;}
You can’t perform that action at this time.
0 commit comments