[cfe-commits] PATCH : change clang Attrs.td to avoid conflict w/MinGW basetyps.h

kirk.beitz at nokia.com kirk.beitz at nokia.com
Mon Feb 14 10:56:26 PST 2011


Incorrectly originally posted to llvm-commits .  Hopefully someone can take a look at this and see that it is a very small, simple patch that will allow easier porting to Win32 under MinGW .

LLDB is attempting to use clang, and ran into a conflict attempting to port to MinGW .

Attached, please find a 1-line patch to tools/clang/include/clang/Basic/Attrs.td

It is used to generate tools/clang/includes/clang/AST/Attrs.inc, which gets #included by Attr.h (which in turn is getting #included several nested levels deep in our effort to build lldb under MinGW ).

Without this change, one of the classes to be generated defined "Args=Interface".

This causes the generated class to contain a private member named "interface".

Under MinGW, when code #includes Attr.h and "basetyps.h" from MinGW before it, a conflict results, because MinGW's basetyps.h will (under certain circumstances) pull in windows headers which have the following macro definition:

#define interface struct

This is a fairly common win32 occurrence.

The patch shows that 'Interface' is simply changed to 'InterFace' (with the F capitalized) so that the private member variable that gets generated becomes "interFace".

This mimics style elsewhere in Attrs.td (e.g. "Args=>FormatIdx" causes a private member formatIdx to be generated).

The capitalization difference leads to the resolution of the conflict with MinGW's basetyps.h .

Thanks in advance for any review/comments/feedback.


Index: include/clang/Basic/Attr.td
===================================================================
--- include/clang/Basic/Attr.td (revision 123723)
+++ include/clang/Basic/Attr.td (working copy)
@@ -258,7 +258,7 @@

 def IBOutletCollection : Attr {
   let Spellings = ["iboutletcollection"];
-  let Args = [TypeArgument<"Interface">];
+  let Args = [TypeArgument<"InterFace">];
 }

 def Malloc : Attr {



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110214/8e9b6eed/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Attr.td.patch
Type: application/octet-stream
Size: 415 bytes
Desc: Attr.td.patch
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110214/8e9b6eed/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110214/8e9b6eed/attachment.htm>


More information about the cfe-commits mailing list