mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-11 02:16:50 +00:00
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) llvm-svn: 357718
This commit is contained in:
parent
f5daa97045
commit
a040174418
@ -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;
|
||||
|
@ -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"}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user