summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorCharles Davis <cdavis5x@gmail.com>2015-02-27 21:11:16 +0000
committerCharles Davis <cdavis5x@gmail.com>2015-02-27 21:11:16 +0000
commit83687fb9e654c9d0086e7f6b728c26fa0b729e71 (patch)
tree9caf33ad3f62641433067d9728ea3e87ff1333a4 /llvm
parentd7b6aa3251a3512025fa8488014eae03ca0c3fd2 (diff)
downloadbcm5719-llvm-83687fb9e654c9d0086e7f6b728c26fa0b729e71.tar.gz
bcm5719-llvm-83687fb9e654c9d0086e7f6b728c26fa0b729e71.zip
Target/X86: Never use the redzone for Win64 ABI functions.
Summary: Until now, we did this (among other things) based on whether or not the target was Windows. This is clearly wrong, not just for Win64 ABI functions on non-Windows, but for System V ABI functions on Windows, too. In this change, we make this decision based on the ABI the calling convention specifies instead. Reviewers: rnk Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7953 llvm-svn: 230793
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/X86/X86FrameLowering.cpp2
-rw-r--r--llvm/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll3
2 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp
index cead0995330..1d2c73c4308 100644
--- a/llvm/lib/Target/X86/X86FrameLowering.cpp
+++ b/llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -581,7 +581,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
bool Is64Bit = STI.is64Bit();
// standard x86_64 and NaCl use 64-bit frame/stack pointers, x32 - 32-bit.
const bool Uses64BitFramePtr = STI.isTarget64BitLP64() || STI.isTargetNaCl64();
- bool IsWin64 = STI.isTargetWin64();
+ bool IsWin64 = STI.isCallingConvWin64(Fn->getCallingConv());
// Not necessarily synonymous with IsWin64.
bool IsWinEH = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
bool NeedsWinEH = IsWinEH && Fn->needsUnwindTableEntry();
diff --git a/llvm/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll b/llvm/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll
index 98b1e0ed2f4..8d387136da9 100644
--- a/llvm/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll
+++ b/llvm/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll
@@ -1,7 +1,8 @@
; RUN: llc -mtriple=x86_64-mingw32 < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-linux < %s | FileCheck %s
; CHECK-NOT: -{{[1-9][0-9]*}}(%rsp)
-define x86_fp80 @a(i64 %x) nounwind readnone {
+define x86_64_win64cc x86_fp80 @a(i64 %x) nounwind readnone {
entry:
%conv = sitofp i64 %x to x86_fp80 ; <x86_fp80> [#uses=1]
ret x86_fp80 %conv
OpenPOWER on IntegriCloud