On Sun, Dec 9, 2012 at 9:45 AM, Aaron Ballman <[email protected]> wrote: > Author: aaronballman > Date: Sun Dec 9 11:45:41 2012 > New Revision: 169705 > > URL: http://llvm.org/viewvc/llvm-project?rev=169705&view=rev > Log: > Virtual method overrides can no longer have mismatched calling conventions. > This fixes PR14339. > > Added: > cfe/trunk/test/SemaCXX/virtual-override-x64.cpp > cfe/trunk/test/SemaCXX/virtual-override-x86.cpp > Modified: > cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > cfe/trunk/include/clang/Basic/TargetInfo.h > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/lib/Basic/Targets.cpp > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/lib/Sema/SemaDeclAttr.cpp > cfe/trunk/lib/Sema/SemaDeclCXX.cpp > > Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=169705&r1=169704&r2=169705&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Sun Dec 9 11:45:41 > 2012 > @@ -1135,6 +1135,10 @@ > "than the function it overrides}1,2">; > def note_overridden_virtual_function : Note< > "overridden virtual function is here">; > +def err_conflicting_overriding_cc_attributes : Error< > + "virtual function %0 has different calling convention attributes " > + "%diff{($) than the function it overrides (which has calling convention > $)|" > + "than the function it overrides}1,2">; > > def err_covariant_return_inaccessible_base : Error< > "invalid covariant return for virtual function: %1 is a " > > Modified: cfe/trunk/include/clang/Basic/TargetInfo.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=169705&r1=169704&r2=169705&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/TargetInfo.h (original) > +++ cfe/trunk/include/clang/Basic/TargetInfo.h Sun Dec 9 11:45:41 2012 > @@ -742,13 +742,19 @@ > > bool isBigEndian() const { return BigEndian; } > > + enum CallingConvMethodType { > + CCMT_Unknown, > + CCMT_Member, > + CCMT_NonMember > + }; > + > /// \brief Gets the default calling convention for the given target and > /// declaration context. > - virtual CallingConv getDefaultCallingConv() const { > + virtual CallingConv getDefaultCallingConv(CallingConvMethodType MT) const { > // Not all targets will specify an explicit calling convention that we > can > // express. This will always do the right thing, even though it's not > // an explicit calling convention. > - return CC_Default; > + return CC_C; > }
You're messing with the usage of CC_Default in a really weird way. In what cases do we still use it? Are you sure it still works the way it's supposed to? -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
