[cfe-commits] [PATCH] Virtual methods with mismatched calling conventions

Richard Smith richard at metafoo.co.uk
Thu Dec 6 13:52:51 PST 2012


--- include/clang/Basic/DiagnosticSemaKinds.td	(revision 169073)
+++ include/clang/Basic/DiagnosticSemaKinds.td	(working copy)
@@ -1110,6 +1110,10 @@
   "than the function it overrides}1,2">;
 def note_overridden_virtual_function : Note<
   "overridden virtual function is here">;
+def error_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">;

Should be err_...

Other than that, this LGTM.

On Thu, Dec 6, 2012 at 7:07 AM, Aaron Ballman <aaron at aaronballman.com> wrote:
> Ping?
>
> On Sat, Dec 1, 2012 at 1:36 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>> This patch addresses PR14339 so that you are no longer able to
>> override a member function with mismatched calling conventions.  Eg)
>>
>> class E {
>> public:
>>   virtual void __attribute__((stdcall)) g();
>> };
>>
>> class F : public E {
>> public:
>>   void g();
>> };
>>
>> In order to accomplish this, the patch adds some functionality to the
>> TargetInfo subclasses so they can decide the default calling
>> convention based off the type of function it is to be attached to,
>> when that information is available.
>>
>> Comments and suggestions welcome!
>>
>> ~Aaron
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list