On May 19, 2012, at 11:38 AM, Jonathan Schleifer wrote:
> Here is an improved version, please use this. The old one did not override 
> the current default behaviour for all GNU runtimes to use the latest ABI 
> version which is not implemented by anything besides GNUstep - it's actually 
> not a GNU ABI anymore, but a GNUstep ABI. This should really be changed to a 
> sane default and only enabled when using -fgnustep-runtime, which should be 
> done similarly to how I did -fobjfw-runtime now.

This is a lot better, thanks.

Two critiques:

--- a/include/clang/Basic/LangOptions.def
+++ b/include/clang/Basic/LangOptions.def
@@ -81,6 +81,7 @@ LANGOPT(TraditionalCPP    , 1, 0, "traditional CPP emulation")
 LANGOPT(RTTI              , 1, 1, "run-time type information")
 LANGOPT(MSBitfields       , 1, 0, "Microsoft-compatible structure layout")
 LANGOPT(NeXTRuntime       , 1, 1, "NeXT Objective-C runtime")
+LANGOPT(ObjFWRuntime      , 1, 0, "ObjFW runtime")
 LANGOPT(Freestanding, 1, 0, "freestanding implementation")
 LANGOPT(NoBuiltin         , 1, 0, "disable builtin functions")

Let's go ahead and future-proof this into a single, enumerated field, with
isNeXTRuntime() and isGNURuntime() convenience accessors.
You'll need to introduce an 'ObjCRuntimeKind' enum.

--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -416,6 +416,7 @@ def fgnu89_inline : Flag<"-fgnu89-inline">, Group<f_Group>, 
Flags<[CC1Option]>,
 def fno_gnu89_inline : Flag<"-fno-gnu89-inline">, Group<f_Group>;
 def fgnu_runtime : Flag<"-fgnu-runtime">, Group<f_Group>, Flags<[CC1Option]>,
   HelpText<"Generate output compatible with the standard GNU Objective-C 
runtime">;
+def fobjfw_runtime: Flag<"-fobjfw-runtime">, Group<f_Group>, 
Flags<[CC1Option]>;
 def fheinous_gnu_extensions : Flag<"-fheinous-gnu-extensions">, 
Flags<[CC1Option]>;
 def filelist : Separate<"-filelist">, Flags<[LinkerInput]>;
 def findirect_virtual_calls : Flag<"-findirect-virtual-calls">, 
Alias<fapple_kext>;

Similarly, I think this is a good point at which to adopt a single 
-fobjc-runtime=<foo>
flag instead of having separate arguments for each new runtime.

I apologize that this means significantly more work for you;  it's always
awkward being the one forcing a generalization.

John.

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

Reply via email to