forked from OSchip/llvm-project
Driver: default to `-fno-use-cxatexit` on Windows
This primarily impacts the Windows MSVC and Windows itanium environments. Windows MSVC does not use `__cxa_atexit` and Itanium follows suit. Simplify the logic for the default value calculation and blanket the Windows environments to default to off for use of `__cxa_atexit`. llvm-svn: 312941
This commit is contained in:
parent
5941b0bb63
commit
015bded23f
|
@ -4022,7 +4022,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
// -fuse-cxa-atexit is default.
|
// -fuse-cxa-atexit is default.
|
||||||
if (!Args.hasFlag(
|
if (!Args.hasFlag(
|
||||||
options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
|
options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
|
||||||
!IsWindowsCygnus && !IsWindowsGNU &&
|
!RawTriple.isOSWindows() &&
|
||||||
RawTriple.getOS() != llvm::Triple::Solaris &&
|
RawTriple.getOS() != llvm::Triple::Solaris &&
|
||||||
getToolChain().getArch() != llvm::Triple::hexagon &&
|
getToolChain().getArch() != llvm::Triple::hexagon &&
|
||||||
getToolChain().getArch() != llvm::Triple::xcore &&
|
getToolChain().getArch() != llvm::Triple::xcore &&
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
// RUN: %clang -### -target armv7-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target armv7-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target armv7-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target armv7-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target i686-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target i686-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target i686-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target i686-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target x86_64-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target x86_64-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target x86_64-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target x86_64-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
||||||
|
// RUN: %clang -### -target hexagon-unknown-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-HEXAGON
|
||||||
|
// RUN: %clang -### -target xcore-unknown-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-XCORE
|
||||||
|
// RUN: %clang -### -target armv7-mti-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-MTI
|
||||||
|
// RUN: %clang -### -target mips-unknown-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-MIPS
|
||||||
|
// RUN: %clang -### -target mips-unknown-none-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-MIPS
|
||||||
|
// RUN: %clang -### -target mips-mti-none-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-MIPS
|
||||||
|
// RUN: %clang -### -target sparc-sun-solaris -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-SOLARIS
|
||||||
|
|
||||||
|
// CHECK-WINDOWS: "-fno-use-cxa-atexit"
|
||||||
|
// CHECK-SOLARIS: "-fno-use-cxa-atexit"
|
||||||
|
// CHECK-HEXAGON: "-fno-use-cxa-atexit"
|
||||||
|
// CHECK-XCORE: "-fno-use-cxa-atexit"
|
||||||
|
// CHECK-MTI: "-fno-use-cxa-atexit"
|
||||||
|
// CHECK-MIPS-NOT: "-fno-use-cxa-atexit"
|
||||||
|
|
Loading…
Reference in New Issue