[llvm] r357718 - Revert [X86] When using Win64 ABI, exit with error if SSE is disabled for varargs

James Y Knight via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 4 12:05:48 PDT 2019


Author: jyknight
Date: Thu Apr  4 12:05:48 2019
New Revision: 357718

URL: http://llvm.org/viewvc/llvm-project?rev=357718&view=rev
Log:
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)

Removed:
    llvm/trunk/test/CodeGen/X86/win64-nosse-error.ll
Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=357718&r1=357717&r2=357718&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Thu Apr  4 12:05:48 2019
@@ -3780,9 +3780,6 @@ X86TargetLowering::LowerCall(TargetLower
     } 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;

Removed: llvm/trunk/test/CodeGen/X86/win64-nosse-error.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/win64-nosse-error.ll?rev=357717&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/win64-nosse-error.ll (original)
+++ llvm/trunk/test/CodeGen/X86/win64-nosse-error.ll (removed)
@@ -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"}
-
-




More information about the llvm-commits mailing list