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