On Sun, Aug 12, 2012 at 5:27 PM, Diego Novillo <dnovi...@google.com> wrote: > On 12-08-12 18:38 , H.J. Lu wrote: >> >> On Sun, Aug 12, 2012 at 3:33 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >>> >>> On Sun, Aug 12, 2012 at 1:04 PM, Diego Novillo <dnovi...@google.com> >>> wrote: >>>> >>>> I will be sending 6 patches that implement all the changes we >>>> have been making on the cxx-conversion branch. As described in >>>> http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html, these patches >>>> change the default bootstrap process so that stage 1 always >>>> builds with a C++ compiler. >>>> >>>> Other than the bootstrap change, the patches make no functional >>>> changes to the compiler. Everything should build as it does now >>>> in trunk. >>>> >>>> I have split the merge in 6 main patches. I will send these >>>> patches to the respective maintainers and gcc-patches. >>>> Please remember that the patches conform to the new C++ coding >>>> guidelines (http://gcc.gnu.org/codingconventions.html#Cxx_Conventions): >>>> >>>> 1- Configuration changes. >>>> 2- Re-write of VEC. >>>> 3- Re-write of gengtype to support C++ templates and >>>> user-provided marking functions. >>>> 4- New hash table class. >>>> 5- Re-write double_int. >>>> 6- Implement tree macros as inline functions so they can be >>>> called from gdb. >>>> >>>> As discussed before, several of these patches do not fully change >>>> the call sites to use the new APIs. We will do this change once >>>> the branch has been merged into trunk. Otherwise, the branch >>>> becomes a maintenance nightmare (despite not having changed many >>>> caller sites we were already starting to run into maintenance >>>> problems). >>>> >>>> For those who would like to build the conversion, you can either >>>> checkout the branch from SVN >>>> (svn://gcc.gnu.org/gcc/branches/cxx-conversion) or get the merged >>>> trunk I have in the git repo (branch dnovillo/cxx-conversion). >>>> >>> >>> dnovillo/cxx-conversion git branch failed to bootstrap on >>> Fedora 17 x86-64 when configured with >>> >>> --enable-languages=c,c++,fortran,java,lto,objc,obj-c++,go >>> >>> I got >>> >>> /export/gnu/import/git/gcc-x32/gcc/objc/objc-act.c: In function >>> \u2018tree_node* objc_build_constructor(tree, >>> vec_t<constructor_elt_d>*)\u2019: >>> /export/gnu/import/git/gcc-x32/gcc/objc/objc-act.c:3212:44: error: >>> base operand of \u2018->\u2019 has non-pointer type >>> \u2018constructor_elt_d\u2019 >>> if (!VEC_index (constructor_elt, elts, 0)->index) >>> >> >> This patch fixes the error: >> >> diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c >> index 5c924bf..caa16c7 100644 >> --- a/gcc/objc/objc-act.c >> +++ b/gcc/objc/objc-act.c >> @@ -3209,7 +3209,7 @@ objc_build_constructor (tree type, >> VEC(constructor_elt,gc) *elts) >> #ifdef OBJCPLUS >> /* Adjust for impedance mismatch. We should figure out how to build >> CONSTRUCTORs that consistently please both the C and C++ gods. */ >> - if (!VEC_index (constructor_elt, elts, 0)->index) >> + if (!VEC_index (constructor_elt, elts, 0).index) >> TREE_TYPE (constructor) = init_list_type_node; >> #endif > > > Thanks. Missed this because --enable-languages=all does not enable obj-c++. > Please commit to the branch. I'll update the git image. > >
I checked it into cxx-conversion branch. -- H.J.