From 22c9d67e34eaac4c5232aa1fe8e8d30a508c8934 Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Tue, 20 Jan 2015 10:55:33 +0000 Subject: [PATCH] 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) ^ :6:52: note: scanning from here define spir_kernel void @foo(i32 addrspace(1)* %A) #0 { ^ :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 --- clang/include/clang/Basic/Specifiers.h | 6 +----- clang/lib/AST/ASTContext.cpp | 4 +--- clang/lib/AST/Type.cpp | 2 -- clang/lib/AST/TypePrinter.cpp | 4 ---- clang/lib/Basic/Targets.cpp | 9 --------- clang/lib/CodeGen/CGCall.cpp | 2 -- clang/lib/Sema/SemaType.cpp | 20 ++------------------ clang/test/CodeGenOpenCL/spir-calling-conv.cl | 18 ------------------ clang/tools/libclang/CXType.cpp | 3 --- 9 files changed, 4 insertions(+), 64 deletions(-) delete mode 100644 clang/test/CodeGenOpenCL/spir-calling-conv.cl diff --git a/clang/include/clang/Basic/Specifiers.h b/clang/include/clang/Basic/Specifiers.h index 180785b..a968d00 100644 --- a/clang/include/clang/Basic/Specifiers.h +++ b/clang/include/clang/Basic/Specifiers.h @@ -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; diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index c1bbc5f..7f17fe8 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -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 { diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 5a39ca0..e4f364d 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -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."); diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index b874dd0..e36fc17 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -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; } } diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 4762171..9aac3b7 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -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; - } }; diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index cb035d3..f9b26b6 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -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; } } diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 5624f709..7116973 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -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, diff --git a/clang/test/CodeGenOpenCL/spir-calling-conv.cl b/clang/test/CodeGenOpenCL/spir-calling-conv.cl deleted file mode 100644 index 4d96d83..0000000 --- a/clang/test/CodeGenOpenCL/spir-calling-conv.cl +++ /dev/null @@ -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)*) diff --git a/clang/tools/libclang/CXType.cpp b/clang/tools/libclang/CXType.cpp index 04778dd..81cff5a 100644 --- a/clang/tools/libclang/CXType.cpp +++ b/clang/tools/libclang/CXType.cpp @@ -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 } -- 2.7.4