aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2013-02-23 00:06:18 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2013-02-23 00:06:18 +0000
commit7728cddd7866fadd07f1191eee40985e3cdbc6bf (patch)
treef2172ec2dc07d771505b6693c88dc6f0b0cd67fd
parentff971d7973aaa00c286b788d30f6919c7b1f4de2 (diff)
Revert r175912, "Add support for coldcc to clang" at John's request.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175936 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--docs/LanguageExtensions.rst9
-rw-r--r--include/clang-c/Index.h1
-rw-r--r--include/clang/AST/Type.h1
-rw-r--r--include/clang/Basic/Attr.td4
-rw-r--r--include/clang/Basic/Specifiers.h5
-rw-r--r--include/clang/Basic/TargetInfo.h8
-rw-r--r--lib/AST/DumpXML.cpp1
-rw-r--r--lib/AST/Type.cpp1
-rw-r--r--lib/AST/TypePrinter.cpp4
-rw-r--r--lib/Basic/Targets.cpp7
-rw-r--r--lib/CodeGen/CGCall.cpp4
-rw-r--r--lib/Sema/SemaDeclAttr.cpp10
-rw-r--r--lib/Sema/SemaType.cpp3
-rw-r--r--test/CodeGen/coldcc.c12
-rw-r--r--tools/libclang/CXType.cpp1
15 files changed, 12 insertions, 59 deletions
diff --git a/docs/LanguageExtensions.rst b/docs/LanguageExtensions.rst
index 40459a445a..014e2645d8 100644
--- a/docs/LanguageExtensions.rst
+++ b/docs/LanguageExtensions.rst
@@ -1970,12 +1970,3 @@ Clang implements two kinds of checks with this attribute.
In this case Clang does not warn because the format string ``s`` and
the corresponding arguments are annotated. If the arguments are
incorrect, the caller of ``foo`` will receive a warning.
-
-LLVM-Specific Calling Conventions
-=================================
-
-Clang supports `LLVM's coldcc calling convention
-<http://llvm.org/docs/LangRef.html#calling-conventions>`_ via the ``coldcc``
-GNU-style attribute, or the ``clang::coldcc`` C++11 attribute. However,
-this calling convention is not guaranteed to be ABI compatible between
-different versions of the compiler.
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 12a8381ce1..c382fb17c1 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -2674,7 +2674,6 @@ enum CXCallingConv {
CXCallingConv_AAPCS_VFP = 7,
CXCallingConv_PnaclCall = 8,
CXCallingConv_IntelOclBicc = 9,
- CXCallingConv_Cold = 10,
CXCallingConv_Invalid = 100,
CXCallingConv_Unexposed = 200
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index 2284300032..df285101e3 100644
--- a/include/clang/AST/Type.h
+++ b/include/clang/AST/Type.h
@@ -3323,7 +3323,6 @@ public:
// No operand.
attr_noreturn,
attr_cdecl,
- attr_coldcc,
attr_fastcall,
attr_stdcall,
attr_thiscall,
diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td
index c3a44948b7..70217d2beb 100644
--- a/include/clang/Basic/Attr.td
+++ b/include/clang/Basic/Attr.td
@@ -277,10 +277,6 @@ def Cold : InheritableAttr {
let Spellings = [GNU<"cold">, CXX11<"gnu", "cold">];
}
-def ColdCC : InheritableAttr {
- let Spellings = [GNU<"coldcc">, CXX11<"clang", "coldcc">];
-}
-
def Common : InheritableAttr {
let Spellings = [GNU<"common">, CXX11<"gnu", "common">];
}
diff --git a/include/clang/Basic/Specifiers.h b/include/clang/Basic/Specifiers.h
index 3f640b5261..8706179a17 100644
--- a/include/clang/Basic/Specifiers.h
+++ b/include/clang/Basic/Specifiers.h
@@ -188,7 +188,6 @@ namespace clang {
enum CallingConv {
CC_Default,
CC_C, // __attribute__((cdecl))
- CC_Cold, // __attribute__((coldcc))
CC_X86StdCall, // __attribute__((stdcall))
CC_X86FastCall, // __attribute__((fastcall))
CC_X86ThisCall, // __attribute__((thiscall))
@@ -199,10 +198,6 @@ namespace clang {
CC_IntelOclBicc // __attribute__((intel_ocl_bicc))
};
- inline bool isTargetSpecific(CallingConv CC) {
- return CC >= CC_X86StdCall;
- }
-
} // end namespace clang
#endif // LLVM_CLANG_BASIC_SPECIFIERS_H
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 9a8689af85..deaa3eeb77 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -754,7 +754,13 @@ public:
/// and be substituted with the default calling convention, or (someday)
/// produce an error (such as using thiscall on a non-instance function).
virtual CallingConvCheckResult checkCallingConvention(CallingConv CC) const {
- return CCCR_Warning;
+ switch (CC) {
+ default:
+ return CCCR_Warning;
+ case CC_C:
+ case CC_Default:
+ return CCCR_OK;
+ }
}
protected:
diff --git a/lib/AST/DumpXML.cpp b/lib/AST/DumpXML.cpp
index 230f2df29c..be22ae450b 100644
--- a/lib/AST/DumpXML.cpp
+++ b/lib/AST/DumpXML.cpp
@@ -925,7 +925,6 @@ struct XMLDumper : public XMLDeclVisitor<XMLDumper>,
case CC_AAPCS_VFP: return set("cc", "aapcs_vfp");
case CC_PnaclCall: return set("cc", "pnaclcall");
case CC_IntelOclBicc: return set("cc", "intel_ocl_bicc");
- case CC_Cold: return set("cc", "coldcc");
}
}
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 0cadba2749..efd588a57a 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -1547,7 +1547,6 @@ StringRef FunctionType::getNameForCallConv(CallingConv CC) {
llvm_unreachable("no name for default cc");
case CC_C: return "cdecl";
- case CC_Cold: return "coldcc";
case CC_X86StdCall: return "stdcall";
case CC_X86FastCall: return "fastcall";
case CC_X86ThisCall: return "thiscall";
diff --git a/lib/AST/TypePrinter.cpp b/lib/AST/TypePrinter.cpp
index 751e298213..9d1717a220 100644
--- a/lib/AST/TypePrinter.cpp
+++ b/lib/AST/TypePrinter.cpp
@@ -626,9 +626,6 @@ void TypePrinter::printFunctionProtoAfter(const FunctionProtoType *T,
case CC_C:
OS << " __attribute__((cdecl))";
break;
- case CC_Cold:
- OS << " __attribute__((coldcc))";
- break;
case CC_X86StdCall:
OS << " __attribute__((stdcall))";
break;
@@ -1159,7 +1156,6 @@ void TypePrinter::printAttributedAfter(const AttributedType *T,
case AttributedType::attr_noreturn: OS << "noreturn"; break;
case AttributedType::attr_cdecl: OS << "cdecl"; break;
- case AttributedType::attr_coldcc: OS << "coldcc"; break;
case AttributedType::attr_fastcall: OS << "fastcall"; break;
case AttributedType::attr_stdcall: OS << "stdcall"; break;
case AttributedType::attr_thiscall: OS << "thiscall"; break;
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index bd80409bd2..eaf2e7d05e 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -1933,7 +1933,8 @@ public:
// We accept all non-ARM calling conventions
return (CC == CC_X86ThisCall ||
CC == CC_X86FastCall ||
- CC == CC_X86StdCall ||
+ CC == CC_X86StdCall ||
+ CC == CC_C ||
CC == CC_X86Pascal ||
CC == CC_IntelOclBicc) ? CCCR_OK : CCCR_Warning;
}
@@ -3026,7 +3027,9 @@ public:
}
virtual CallingConvCheckResult checkCallingConvention(CallingConv CC) const {
- return CC == CC_IntelOclBicc ? CCCR_OK : CCCR_Warning;
+ return (CC == CC_Default ||
+ CC == CC_C ||
+ CC == CC_IntelOclBicc) ? CCCR_OK : CCCR_Warning;
}
virtual CallingConv getDefaultCallingConv(CallingConvMethodType MT) const {
diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp
index fe0088dc0b..33b0475c56 100644
--- a/lib/CodeGen/CGCall.cpp
+++ b/lib/CodeGen/CGCall.cpp
@@ -37,7 +37,6 @@ using namespace CodeGen;
static unsigned ClangCallConvToLLVMCallConv(CallingConv CC) {
switch (CC) {
default: return llvm::CallingConv::C;
- case CC_Cold: return llvm::CallingConv::Cold;
case CC_X86StdCall: return llvm::CallingConv::X86_StdCall;
case CC_X86FastCall: return llvm::CallingConv::X86_FastCall;
case CC_X86ThisCall: return llvm::CallingConv::X86_ThisCall;
@@ -136,9 +135,6 @@ CodeGenTypes::arrangeFreeFunctionType(CanQual<FunctionProtoType> FTP) {
static CallingConv getCallingConventionForDecl(const Decl *D) {
// Set the appropriate calling convention for the Function.
- if (D->hasAttr<ColdCCAttr>())
- return CC_Cold;
-
if (D->hasAttr<StdCallAttr>())
return CC_X86StdCall;
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index d764bee097..5f6f81de14 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -3859,11 +3859,6 @@ static void handleCallConvAttr(Sema &S, Decl *D, const AttributeList &Attr) {
}
switch (Attr.getKind()) {
- case AttributeList::AT_ColdCC:
- D->addAttr(::new (S.Context)
- ColdCCAttr(Attr.getRange(), S.Context,
- Attr.getAttributeSpellingListIndex()));
- return;
case AttributeList::AT_FastCall:
D->addAttr(::new (S.Context)
FastCallAttr(Attr.getRange(), S.Context,
@@ -3944,7 +3939,6 @@ bool Sema::CheckCallingConvAttr(const AttributeList &attr, CallingConv &CC,
// move to TargetAttributesSema one day.
switch (attr.getKind()) {
case AttributeList::AT_CDecl: CC = CC_C; break;
- case AttributeList::AT_ColdCC: CC = CC_Cold; break;
case AttributeList::AT_FastCall: CC = CC_X86FastCall; break;
case AttributeList::AT_StdCall: CC = CC_X86StdCall; break;
case AttributeList::AT_ThisCall: CC = CC_X86ThisCall; break;
@@ -3977,9 +3971,6 @@ bool Sema::CheckCallingConvAttr(const AttributeList &attr, CallingConv &CC,
default: llvm_unreachable("unexpected attribute kind");
}
- if (!isTargetSpecific(CC))
- return false;
-
const TargetInfo &TI = Context.getTargetInfo();
TargetInfo::CallingConvCheckResult A = TI.checkCallingConvention(CC);
if (A == TargetInfo::CCCR_Warning) {
@@ -4783,7 +4774,6 @@ static void ProcessInheritableDeclAttr(Sema &S, Scope *scope, Decl *D,
break;
case AttributeList::AT_StdCall:
case AttributeList::AT_CDecl:
- case AttributeList::AT_ColdCC:
case AttributeList::AT_FastCall:
case AttributeList::AT_ThisCall:
case AttributeList::AT_Pascal:
diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp
index 402e522eeb..c47a7f59ac 100644
--- a/lib/Sema/SemaType.cpp
+++ b/lib/Sema/SemaType.cpp
@@ -100,7 +100,6 @@ static void diagnoseBadTypeAttribute(Sema &S, const AttributeList &attr,
#define FUNCTION_TYPE_ATTRS_CASELIST \
case AttributeList::AT_NoReturn: \
case AttributeList::AT_CDecl: \
- case AttributeList::AT_ColdCC: \
case AttributeList::AT_FastCall: \
case AttributeList::AT_StdCall: \
case AttributeList::AT_ThisCall: \
@@ -3104,8 +3103,6 @@ static AttributeList::Kind getAttrListKind(AttributedType::Kind kind) {
return AttributeList::AT_NoReturn;
case AttributedType::attr_cdecl:
return AttributeList::AT_CDecl;
- case AttributedType::attr_coldcc:
- return AttributeList::AT_ColdCC;
case AttributedType::attr_fastcall:
return AttributeList::AT_FastCall;
case AttributedType::attr_stdcall:
diff --git a/test/CodeGen/coldcc.c b/test/CodeGen/coldcc.c
deleted file mode 100644
index 8965cadfe4..0000000000
--- a/test/CodeGen/coldcc.c
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -Werror -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Werror -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple armv7-unknown-unknown -Werror -emit-llvm -o - %s | FileCheck %s
-
-void __attribute__((coldcc)) f1(void);
-
-void f2(void) {
- f1();
-// CHECK: call coldcc void @f1()
-}
-
-// CHECK: declare coldcc void @f1()
diff --git a/tools/libclang/CXType.cpp b/tools/libclang/CXType.cpp
index 90175c7980..945eb11427 100644
--- a/tools/libclang/CXType.cpp
+++ b/tools/libclang/CXType.cpp
@@ -500,7 +500,6 @@ CXCallingConv clang_getFunctionTypeCallingConv(CXType X) {
TCALLINGCONV(AAPCS_VFP);
TCALLINGCONV(PnaclCall);
TCALLINGCONV(IntelOclBicc);
- TCALLINGCONV(Cold);
}
#undef TCALLINGCONV
}