For #pragma comment(linker, ...) MSVC expects the comment string to be quoted, but for #pragma comment(lib, ...) the compiler itself quotes the library name. Since this distinction disappears by the time the directive reaches the backend, move quoting for the "lib" version to the frontend. Differential Revision: http://reviews.llvm.org/D7653 llvm-svn: 229376
34 lines
1.4 KiB
C
34 lines
1.4 KiB
C
// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 %s -triple i686-pc-linux -fms-extensions -emit-llvm -o - | FileCheck -check-prefix LINUX %s
|
|
// RUN: %clang_cc1 %s -triple x86_64-scei-ps4 -fms-extensions -emit-llvm -o - | FileCheck -check-prefix PS4 %s
|
|
|
|
#pragma comment(lib, "msvcrt.lib")
|
|
#pragma comment(lib, "kernel32")
|
|
#pragma comment(lib, "USER32.LIB")
|
|
#pragma comment(lib, "with space")
|
|
|
|
#define BAR "2"
|
|
#pragma comment(linker," /bar=" BAR)
|
|
#pragma comment(linker," /foo=\"foo bar\"")
|
|
|
|
// CHECK: !llvm.module.flags = !{{{.*}}}
|
|
// CHECK: !{{[0-9]+}} = !{i32 6, !"Linker Options", ![[link_opts:[0-9]+]]}
|
|
// CHECK: ![[link_opts]] = !{![[msvcrt:[0-9]+]], ![[kernel32:[0-9]+]], ![[USER32:[0-9]+]], ![[space:[0-9]+]], ![[bar:[0-9]+]], ![[foo:[0-9]+]]}
|
|
// CHECK: ![[msvcrt]] = !{!"/DEFAULTLIB:msvcrt.lib"}
|
|
// CHECK: ![[kernel32]] = !{!"/DEFAULTLIB:kernel32.lib"}
|
|
// CHECK: ![[USER32]] = !{!"/DEFAULTLIB:USER32.LIB"}
|
|
// CHECK: ![[space]] = !{!"/DEFAULTLIB:\22with space.lib\22"}
|
|
// CHECK: ![[bar]] = !{!" /bar=2"}
|
|
// CHECK: ![[foo]] = !{!" /foo=\22foo bar\22"}
|
|
|
|
// LINUX: !{!"-lmsvcrt.lib"}
|
|
// LINUX: !{!"-lkernel32"}
|
|
// LINUX: !{!"-lUSER32.LIB"}
|
|
// LINUX: !{!" /bar=2"}
|
|
|
|
// PS4: !{!"\01msvcrt.lib"}
|
|
// PS4: !{!"\01kernel32"}
|
|
// PS4: !{!"\01USER32.LIB"}
|
|
// PS4: !{!" /bar=2"}
|