Hi Aaron,

The identical-looking blocks look like a straight code-move so I haven't examined them closely (if there are any significant changes in there, do mention). Here's the rest..

+// Defines targets for target-specific attributes. The list of strings should +// specify architectures for which the target applies, based off the ArchType
+// enumeration in Triple.h.
+class TargetArch<list<string> arches> {
+  list<string> Arches = arches;
+  list<string> OSes;
+}
+def TargetARM : TargetArch<["arm", "thumb"]>;
+def TargetMSP430 : TargetArch<["msp430"]>;
+def TargetX86 : TargetArch<["x86"]>;
+def TargetX86Win : TargetArch<["x86", "x86_64"]> {
+  let OSes = ["Win32", "MinGW32"];
+}
+def TargetMips : TargetArch<["mips", "mipsel"]>;
+

Feels like it'd be more TableGen-ish to apply TargetArch<> directly to the instances without listing these utility wrappers. Maybe only provide the defs for TargetMips and TargetARM that add value? It's your call though if you prefer to keep it this way -- I don't have a strong opinion here.


-def DLLExport : InheritableAttr, TargetSpecificAttr {
+def DLLExport : InheritableAttr, TargetSpecificAttr<TargetX86Win> {
   let Spellings = [Declspec<"dllexport">];
   let Subjects = SubjectList<[Function, Var]>;
 }

-def DLLImport : InheritableAttr, TargetSpecificAttr {
+def DLLImport : InheritableAttr, TargetSpecificAttr<TargetX86Win> {
   let Spellings = [Declspec<"dllimport">];
// Technically, the subjects for DllImport are Function and Var, but there is
   // custom semantic handling required when MicrosoftExt is true.

Any reason for dllimport / dllexport to be x86 target attributes? That quirk looks like a historical leftover that can be handled by the ["Win32", "MinGW32"] predicate alone thanks to your changes. MSDN documents them as being general language features not specific to x86 and I believe they apply to other Microsoft architectures equally.

Alp.


On 04/01/2014 16:33, Aaron Ballman wrote:
New Years ping, with another rebased patch.  :-)

~Aaron

On Fri, Dec 27, 2013 at 12:10 PM, Aaron Ballman <[email protected]> wrote:
Holiday ping, with rebased patch.

~Aaron

On Thu, Dec 19, 2013 at 10:11 AM, Aaron Ballman <[email protected]> wrote:
Ping

On Sun, Dec 15, 2013 at 8:49 AM, Aaron Ballman <[email protected]> wrote:
This patch removes the TargetAttributesSema concept and replaces it
with one where the parsed attributes are responsible for knowing their
target-specific nature, instead of letting Sema figure it out. This is
necessary so that __has_attribute can eventually determine whether a
parsed attribute applies to the given target or not.

All of the semantic handling which was previously in
TargetAttributesSema.cpp has been moved to SemaDeclAttr.cpp, but still
only applies to the specific target by asking the attribute whether it
exists in the given target or not. The target-specific information is
generated automatically via tablegen.

~Aaron


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

--
http://www.nuanti.com
the browser experts

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to