diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-06-23 13:45:33 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-06-23 13:45:33 +0000 |
commit | 6e9e88b30aeca4239dd333c4b04b638973150f79 (patch) | |
tree | 9eb4155660c6a226c83fad8e57f3e9a2bd038458 /clang | |
parent | de393329b934570e18e05f6c29fe432fbc27283c (diff) | |
download | bcm5719-llvm-6e9e88b30aeca4239dd333c4b04b638973150f79.tar.gz bcm5719-llvm-6e9e88b30aeca4239dd333c4b04b638973150f79.zip |
CodeGen: support linker options on Windows ARM
We would incorrectly emit the directive sections due to the missing overridden
methods. We now emit the expected "/DEFAULTLIB" rather than "-l" options for
requested linkage
llvm-svn: 273558
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 10 | ||||
-rw-r--r-- | clang/test/CodeGen/dependent-lib.c | 1 | ||||
-rw-r--r-- | clang/test/CodeGen/pragma-comment.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/pragma-detect_mismatch.c | 1 | ||||
-rw-r--r-- | clang/test/PCH/pragma-comment.c | 3 | ||||
-rw-r--r-- | clang/test/PCH/pragma-detect_mismatch.c | 3 |
6 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 0c5b2deb7eb..75283a1942c 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -5083,6 +5083,16 @@ public: void setTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const override; + + void getDependentLibraryOption(llvm::StringRef Lib, + llvm::SmallString<24> &Opt) const override { + Opt = "/DEFAULTLIB:" + qualifyWindowsLibrary(Lib); + } + + void getDetectMismatchOption(llvm::StringRef Name, llvm::StringRef Value, + llvm::SmallString<32> &Opt) const override { + Opt = "/FAILIFMISMATCH:\"" + Name.str() + "=" + Value.str() + "\""; + } }; void WindowsARMTargetCodeGenInfo::setTargetAttributes( diff --git a/clang/test/CodeGen/dependent-lib.c b/clang/test/CodeGen/dependent-lib.c index b3abc2f5bc4..9cf49c88d77 100644 --- a/clang/test/CodeGen/dependent-lib.c +++ b/clang/test/CodeGen/dependent-lib.c @@ -1,3 +1,4 @@ +// RUN: %clang_cc1 %s --dependent-lib=msvcrt -triple thumbv7-windows -emit-llvm -o - | FileCheck %s // RUN: %clang_cc1 %s --dependent-lib=msvcrt -triple i686-pc-win32 -emit-llvm -o - | FileCheck %s // RUN: %clang_cc1 %s --dependent-lib=msvcrt -triple x86_64-pc-win32 -emit-llvm -o - | FileCheck %s // RUN: %clang_cc1 %s --dependent-lib=msvcrt -triple i686-pc-linux -emit-llvm -o - | FileCheck -check-prefix LINUX %s diff --git a/clang/test/CodeGen/pragma-comment.c b/clang/test/CodeGen/pragma-comment.c index 6da20686e95..71a7dfc0b01 100644 --- a/clang/test/CodeGen/pragma-comment.c +++ b/clang/test/CodeGen/pragma-comment.c @@ -1,5 +1,7 @@ // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -triple thumbv7-windows -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 thumbv7-linux-gnueabihf -fms-extensions -emit-llvm -o - | FileCheck -check-prefix LINUX %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 diff --git a/clang/test/CodeGen/pragma-detect_mismatch.c b/clang/test/CodeGen/pragma-detect_mismatch.c index c5f3af340aa..08259fc6be7 100644 --- a/clang/test/CodeGen/pragma-detect_mismatch.c +++ b/clang/test/CodeGen/pragma-detect_mismatch.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -triple thumbv7-windows -fms-extensions -emit-llvm -o - | FileCheck %s #pragma detect_mismatch("test", "1") diff --git a/clang/test/PCH/pragma-comment.c b/clang/test/PCH/pragma-comment.c index 14cbf6a2b51..07c3d40d3b1 100644 --- a/clang/test/PCH/pragma-comment.c +++ b/clang/test/PCH/pragma-comment.c @@ -1,7 +1,10 @@ // Test this without pch. +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-llvm -include %s -o - | FileCheck %s // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-llvm -include %s -o - | FileCheck %s // Test with pch. +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-pch -o %t +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-llvm -include-pch %t -o - | FileCheck %s // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-pch -o %t // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-llvm -include-pch %t -o - | FileCheck %s diff --git a/clang/test/PCH/pragma-detect_mismatch.c b/clang/test/PCH/pragma-detect_mismatch.c index 9de46bff7e9..ced4cf9d159 100644 --- a/clang/test/PCH/pragma-detect_mismatch.c +++ b/clang/test/PCH/pragma-detect_mismatch.c @@ -1,7 +1,10 @@ // Test this without pch. +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-llvm -include %s -o - | FileCheck %s // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-llvm -include %s -o - | FileCheck %s // Test with pch. +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-pch -o %t +// RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple thumbv7-windows -fms-extensions -emit-llvm -include-pch %t -o - | FileCheck %s // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-pch -o %t // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple x86_64-pc-win32 -fms-extensions -emit-llvm -include-pch %t -o - | FileCheck %s |