| ; RUN: opt -passes=verify < %s 2>&1 | FileCheck %s |
| ; CHECK-NOT: Global is marked as dllimport, but not external |
| |
| target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" |
| target triple = "x86_64-pc-windows-msvc19.11.0" |
| |
| @"?var_hook@@3HA" = extern_weak dllimport global i32, align 4 |
| |
| ; Function Attrs: noinline optnone uwtable |
| define dso_local zeroext i1 @"?foo@@YA_NPEAHH@Z"(ptr %0, i32 %1) #0 { |
| ret i1 0 |
| } |
| |
| declare extern_weak dllimport void @func_hook(i32) #1 |
| |
| attributes #0 = { noinline optnone uwtable } |
| attributes #1 = { uwtable } |
| |
| ; Compiled from the following C++ example with --target=x86_64-pc-win32, |
| ; using the non-checking configuration |
| ;__declspec(dllimport) __attribute__((weak)) extern "C" void func_hook(int); |
| ;extern __declspec(dllimport) __attribute__((weak)) int var_hook; |
| ;bool foo(int *q, int p) |
| ;{ |
| ; if (func_hook) |
| ; func_hook(p); |
| ; return &var_hook == q; |
| ;} |