mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 23:56:05 +00:00
Reverting r226548 as one of the tests fails in some configurations.
Here's the fail log from our internal setup: === .../tools/clang/clang -cc1 -internal-isystem .../tools/clang/staging/include -nostdsysteminc .../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl -triple spir-unknown-unknown -emit-llvm -o - FileCheck .../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl .../tools/clang/test/CodeGenOpenCL/spir-calling-conv.cl:11:12: error: expected string not found in input // CHECK: %call = tail call spir_func i32 @get_dummy_id(i32 0) ^ <stdin>:6:52: note: scanning from here define spir_kernel void @foo(i32 addrspace(1)* %A) #0 { ^ <stdin>:7:2: note: possible intended match here %1 = tail call spir_func i32 @get_dummy_id(i32 0) #2 ^ === Here's a failure on a public CI server: http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_check/1183/ llvm-svn: 226558
This commit is contained in:
parent
a8c4d48478
commit
22c9d67e34
@ -210,9 +210,7 @@ namespace clang {
|
||||
CC_AAPCS, // __attribute__((pcs("aapcs")))
|
||||
CC_AAPCS_VFP, // __attribute__((pcs("aapcs-vfp")))
|
||||
CC_PnaclCall, // __attribute__((pnaclcall))
|
||||
CC_IntelOclBicc, // __attribute__((intel_ocl_bicc))
|
||||
CC_SpirFunction, // default for OpenCL functions on SPIR target
|
||||
CC_SpirKernel // inferred for OpenCL kernels on SPIR target
|
||||
CC_IntelOclBicc // __attribute__((intel_ocl_bicc))
|
||||
};
|
||||
|
||||
/// \brief Checks whether the given calling convention supports variadic
|
||||
@ -224,8 +222,6 @@ namespace clang {
|
||||
case CC_X86ThisCall:
|
||||
case CC_X86Pascal:
|
||||
case CC_X86VectorCall:
|
||||
case CC_SpirFunction:
|
||||
case CC_SpirKernel:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
|
@ -8043,9 +8043,7 @@ CallingConv ASTContext::getDefaultCallingConvention(bool IsVariadic,
|
||||
if (IsCXXMethod)
|
||||
return ABI->getDefaultMethodCallConv(IsVariadic);
|
||||
|
||||
if (LangOpts.MRTD && !IsVariadic) return CC_X86StdCall;
|
||||
|
||||
return Target->getDefaultCallingConv(TargetInfo::CCMT_Unknown);
|
||||
return (LangOpts.MRTD && !IsVariadic) ? CC_X86StdCall : CC_C;
|
||||
}
|
||||
|
||||
bool ASTContext::isNearlyEmpty(const CXXRecordDecl *RD) const {
|
||||
|
@ -1588,8 +1588,6 @@ StringRef FunctionType::getNameForCallConv(CallingConv CC) {
|
||||
case CC_AAPCS_VFP: return "aapcs-vfp";
|
||||
case CC_PnaclCall: return "pnaclcall";
|
||||
case CC_IntelOclBicc: return "intel_ocl_bicc";
|
||||
case CC_SpirFunction: return "spir_function";
|
||||
case CC_SpirKernel: return "spir_kernel";
|
||||
}
|
||||
|
||||
llvm_unreachable("Invalid calling convention.");
|
||||
|
@ -697,10 +697,6 @@ void TypePrinter::printFunctionProtoAfter(const FunctionProtoType *T,
|
||||
case CC_X86_64SysV:
|
||||
OS << " __attribute__((sysv_abi))";
|
||||
break;
|
||||
case CC_SpirFunction:
|
||||
case CC_SpirKernel:
|
||||
// Do nothing. These CCs are not available as attributes.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6346,15 +6346,6 @@ namespace {
|
||||
BuiltinVaListKind getBuiltinVaListKind() const override {
|
||||
return TargetInfo::VoidPtrBuiltinVaList;
|
||||
}
|
||||
|
||||
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override {
|
||||
return (CC == CC_SpirFunction ||
|
||||
CC == CC_SpirKernel) ? CCCR_OK : CCCR_Warning;
|
||||
}
|
||||
|
||||
CallingConv getDefaultCallingConv(CallingConvMethodType MT) const override {
|
||||
return CC_SpirFunction;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -51,8 +51,6 @@ static unsigned ClangCallConvToLLVMCallConv(CallingConv CC) {
|
||||
case CC_X86Pascal: return llvm::CallingConv::C;
|
||||
// TODO: Add support for __vectorcall to LLVM.
|
||||
case CC_X86VectorCall: return llvm::CallingConv::X86_VectorCall;
|
||||
case CC_SpirFunction: return llvm::CallingConv::SPIR_FUNC;
|
||||
case CC_SpirKernel: return llvm::CallingConv::SPIR_KERNEL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2476,24 +2476,8 @@ getCCForDeclaratorChunk(Sema &S, Declarator &D,
|
||||
}
|
||||
}
|
||||
|
||||
CallingConv CC = S.Context.getDefaultCallingConvention(FTI.isVariadic,
|
||||
IsCXXInstanceMethod);
|
||||
|
||||
// Attribute AT_OpenCLKernel affects the calling convention only on
|
||||
// the SPIR target, hence it cannot be treated as a calling
|
||||
// convention attribute. This is the simplest place to infer
|
||||
// "spir_kernel" for OpenCL kernels on SPIR.
|
||||
if (CC == CC_SpirFunction) {
|
||||
for (const AttributeList *Attr = D.getDeclSpec().getAttributes().getList();
|
||||
Attr; Attr = Attr->getNext()) {
|
||||
if (Attr->getKind() == AttributeList::AT_OpenCLKernel) {
|
||||
CC = CC_SpirKernel;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CC;
|
||||
return S.Context.getDefaultCallingConvention(FTI.isVariadic,
|
||||
IsCXXInstanceMethod);
|
||||
}
|
||||
|
||||
static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
|
||||
|
@ -1,18 +0,0 @@
|
||||
// RUN: %clang_cc1 %s -triple "spir-unknown-unknown" -emit-llvm -o - | FileCheck %s
|
||||
|
||||
int get_dummy_id(int D);
|
||||
|
||||
kernel void bar(global int *A);
|
||||
|
||||
kernel void foo(global int *A)
|
||||
// CHECK: define spir_kernel void @foo(i32 addrspace(1)* %A)
|
||||
{
|
||||
int id = get_dummy_id(0);
|
||||
// CHECK: %call = tail call spir_func i32 @get_dummy_id(i32 0)
|
||||
A[id] = id;
|
||||
bar(A);
|
||||
// CHECK: tail call spir_kernel void @bar(i32 addrspace(1)* %A)
|
||||
}
|
||||
|
||||
// CHECK: declare spir_func i32 @get_dummy_id(i32)
|
||||
// CHECK: declare spir_kernel void @bar(i32 addrspace(1)*)
|
@ -527,9 +527,6 @@ CXCallingConv clang_getFunctionTypeCallingConv(CXType X) {
|
||||
TCALLINGCONV(AAPCS_VFP);
|
||||
TCALLINGCONV(PnaclCall);
|
||||
TCALLINGCONV(IntelOclBicc);
|
||||
case CC_SpirFunction: return CXCallingConv_Unexposed;
|
||||
case CC_SpirKernel: return CXCallingConv_Unexposed;
|
||||
break;
|
||||
}
|
||||
#undef TCALLINGCONV
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user