Go to file
Oleg Ranevskyy 8052318287 [clang-cl] Explicitly set object format to COFF in CL mode
Summary:
Currently object format is taken from the default target triple. For toolchains with a non-COFF default target this may result in an object format inappropriate for pc-windows and lead to compilation issues. 

For example, the default triple `aarch64-linux-elf` may produce something like `aarch64-pc-windows-msvc19.0.24215-elf` in CL mode. Clang creates `MicrosoftARM64TargetInfo` for such triple with data layout `e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128`. On the other hand, the AArch64 backend in `computeDataLayout` detects a non-COFF target and selects `e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128` as data layout for little endian. Different layouts used by clang and the backend cause an error:
```
error: backend data layout 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128'
 does not match expected target description 'e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128'
```
This can be observed on the clang's Driver/cl-pch.c test with AArch64 as a default target.

This patch enforces COFF in CL mode.

Reviewers: hans

Reviewed By: hans

Subscribers: cfe-commits, aemerson, asl, kristof.beyls

Differential Revision: https://reviews.llvm.org/D37336

llvm-svn: 312275
2017-08-31 20:31:30 +00:00
clang [clang-cl] Explicitly set object format to COFF in CL mode 2017-08-31 20:31:30 +00:00
clang-tools-extra [cppcoreguidelines] Don't rely on SmallPtrSet iteration order. 2017-08-30 20:18:40 +00:00
compiler-rt [libFuzzer] tolerate missing files when loading the seed corpus 2017-08-31 19:17:15 +00:00
debuginfo-tests Fix debuginfo-tests with GDB on Linux 2017-08-31 18:16:55 +00:00
libclc amdgcn: rewrite barrier() using fence and clang __builtin_amdgcn_s_barrier 2017-08-16 17:09:00 +00:00
libcxx [libcxx] [www] Change an absolute link to cxx1z_status.html to be relative. 2017-08-31 17:59:51 +00:00
libcxxabi Revert "[libcxxabi] When built with ASan, __cxa_throw calls __asan_handle_no_return" 2017-08-16 22:05:54 +00:00
libunwind Revert r312240 2017-08-31 15:51:23 +00:00
lld [ELF] - Removed unused dummy methods. NFC. 2017-08-31 11:05:38 +00:00
lldb lldb-mi: -var-update can hang when traversing complex types with pointers 2017-08-31 19:22:33 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [dsymutil] Don't mark forward declarations as canonical. 2017-08-31 20:22:31 +00:00
openmp Use va_copy instead of __va_copy to fix building libomp against musl libc 2017-08-19 23:53:36 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [polly] Fix non-deterministic output due to iteration of unordered ScopArrayInfo 2017-08-31 20:10:30 +00:00