On Wed, Apr 4, 2012 at 11:59 AM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> On Wed, Apr 4, 2012 at 11:15 AM, Gabriel Dos Reis
> <g...@integrable-solutions.net> wrote:
>> On Wed, Apr 4, 2012 at 4:06 AM, Richard Guenther
>> <richard.guent...@gmail.com> wrote:
>>> On Wed, Apr 4, 2012 at 10:32 AM, Gabriel Dos Reis
>>> <g...@integrable-solutions.net> wrote:
>>>> On Tue, Apr 3, 2012 at 8:13 PM, David Edelsohn <dje....@gmail.com> wrote:
>>>>> On Tue, Apr 3, 2012 at 1:37 PM, Diego Novillo <dnovi...@google.com> wrote:
>>>>>>
>>>>>> We would like to start the process to make GCC 4.8 build in C++ mode by
>>>>>> default.
>>>>>>
>>>>>> The mechanics of the change are simple enough.  I volunteer to test 
>>>>>> changing
>>>>>> the default on all primary targets (assuming I can get them from the GCC
>>>>>> build farm).
>>>>>
>>>>> I appreciate the motivation, but this may cause major problems on
>>>>> non-GNU/Linux platforms.  Testing on all primary targets is not
>>>>> enough.
>>>>>
>>>>> Do you expect GCC to be able to bootstrap starting from a vendor C++
>>>>> compiler or will this require G++?
>>>>
>>>> I would expect that we use C++03, and any C++ compiler.
>>>
>>> Yes.  Thus, for stage1 we should force -std=c++03 -pedantic if we
>>> build with GCC to
>>> avoid creep in of GNU features.
>>
>> Fully agreed.
>>
>>> Btw, I think we should only start forcing C++ when 1) there is a
>>> branch/patch out
>>> that shows benefit from using C++.  I previously mentioned that I'd like to 
>>> see
>>> 2) a patch that _properly_ wraps a C++ class for consumption by our garbage
>>> collector (thus, not a hack that works for a specific case but 
>>> infrastructure
>>> that we think will work for _all_ cases, including libstdc++ container use).
>>
>> I was actually thinking starting with abstractions that do not interact 
>> directly
>> with the memory manager, because I would like us to get our feet wet
>> before doing the full plunge.  Such a work would be confined to a part of
>> the compiler (say the C++ front-end).  Any particular reason you would
>> like to start
>> with the garbage collector which touches just about anything?
>
> Because the garbage collector is the thing that will block reasonable use
> of C++ if we cannot get it working.  And because of the fear that if we
> don't show how to do it _right_ first then people will start inventing a 
> dozent
> different ways of making it work for a special case.
>
> Note that I don't think it will touch everything.  I remember we discussed how
> to do it and basically settled on something like
>
> template <class T>
> struct gc_mark {
>  static void mark (T *) {}
> }
>
> and specializations that actually do something meaningful.
>
> which we can provide specializations for all existing types walked by
> gengtype trivially.  This would provide a way to support GCing objects
> whose types are not "supported" by gengtype - gengtype would simply
> emit gc_mark<T>::mark () calls which are trivially optimized away
> if there is nothing to mark.
>
> That said - somebody would need to prototype that, and VEC is a good
> candidate I think because it's used both with GC and non-GC memory.

This will, of course, be also a challenge for various non-GCC host C++
compilers ;)  (let's hope they get this part of templates right ... thus,
let's avoid the need to do partial specialization at least).

> Richard.
>
>> -- Gaby

Reply via email to