From: James Y Knight Date: Thu, 4 Apr 2019 19:05:48 +0000 (+0000) Subject: Revert [X86] When using Win64 ABI, exit with error if SSE is disabled for varargs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=56c2f3a56394820c98de0a5de3487f5a7cf3b0e9;p=llvm Revert [X86] When using Win64 ABI, exit with error if SSE is disabled for varargs It unnecessarily breaks previously-working code which used varargs, but didn't pass any float/double arguments (such as EDK2). Also revert the fixup on top of that: Revert [X86] Fix a test from r357317 This reverts r357317 (git commit d413f41de6baf500e5d20c638375447e18777db2) This reverts r357380 (git commit 7af32444b9b17719ebabb6bee6eb52465acc8507) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357718 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index e0c3aaac723..d599a61e70d 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -3780,9 +3780,6 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI, } else if (VA.isRegLoc()) { RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg)); if (isVarArg && IsWin64) { - if (!Subtarget.hasSSE1()) - errorUnsupported( - DAG, dl, "Win64 ABI varargs functions require SSE to be enabled"); // Win64 ABI requires argument XMM reg to be copied to the corresponding // shadow reg if callee is a varargs function. unsigned ShadowReg = 0; diff --git a/test/CodeGen/X86/win64-nosse-error.ll b/test/CodeGen/X86/win64-nosse-error.ll deleted file mode 100644 index 8cc55202442..00000000000 --- a/test/CodeGen/X86/win64-nosse-error.ll +++ /dev/null @@ -1,17 +0,0 @@ -; RUN: not --crash llc < %s -mattr="-sse" 2>&1 | FileCheck %s - -target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-macho" - -; Function Attrs: noimplicitfloat noinline noredzone nounwind optnone -define void @crash() #0 { - call void (i32*, ...) @func(i32* null, double undef) - ret void -} -; CHECK: in function crash void (): Win64 ABI varargs functions require SSE to be enabled -; Function Attrs: noimplicitfloat noredzone -declare void @func(i32*, ...) - -attributes #0 = { "target-cpu"="x86-64" "target-features"="-sse"} - -