[cfe-dev] Constant CFString merge
Jean-Daniel Dupas
devlists at shadowlab.org
Fri Aug 15 13:40:01 PDT 2008
Le 15 août 08 à 20:59, Daniel Dunbar a écrit :
> One problem here is how to handle emission of constant CFStrings when
> not in Objective-C mode.
>
> I don't really want to always have a CGObjCRuntime object around,
> because
> the runtime is likely to want to add data to the module which should
> only
> happen for ObjC files, and conditionalizing this in the
> CGObjCRuntime is
> somewhat gross.
In the patch, the obj-c runtime is not required. The implementation is
splitted into ASTContext (for the type declaration) and CodeGen (for
GetAddrOfConstantCFString()).
The apple objc runtime only call GetAddrOfConstantCFString(), and when
compiling a C file, you don't have to create an objc runtime, you can
just call GetAddrOfConstantCFString() of CodeGenModule.
> This made me think that perhaps having separate methods is not so bad.
> There is also the complexity that gcc supports several options which
> change
> how constant strings are handled, but these options should probably
> not
> conflict with how __builtin___CFStringMakeConstantString is
> implemented.
> I'm not yet sure how these options interact, however.
I don't know a lot of options that change the way objc/cf strings are
generated. I'm only aware about:
-fconstant-cfstrings
and
-fconstant-string-class
Both functions does not change the way constant strings are created,
but define if an alternative way should be used (instead of
GetAddrOfConstantCFString()).
If the first option (-fconstant-cfstrings ) is not defined, the CFSTR
macro definition create function call instead of call to the builtin
function.
The second option:
- if -fconstant-cfstrings is specified, it override this setting, and
constant cfstrings are generated.
- if -fconstant-cfstrings is not specified, obj string generation
should create a constant string specific to each runtime
(NSConstantString by default for the next runtime), so it does not use
constant CFString generation at all.
And so, I don't see any option that change the way
GetAddrOfConstantCFString() should behave (but maybe I miss something).
> I think perhaps we should split the UTF-16 fix, which definitely
> should be done
> for both, from the reorganization.
>
> - Daniel
More information about the cfe-dev
mailing list