On Fri, Nov 14, 2014 at 12:07 PM, Vladimir Makarov <vmaka...@redhat.com> wrote: > The LRA rematerialization patch I've submitted about day ago broke H.J.'s > 32-bit bootstrap. So I switched off the rematerialization right away. The > set for bootstrapping used by H.J. was very useful. I've fixed several > existing and potential bugs. > > Here the patch fixing the bugs and switching on LRA remat back. The patch > was bootstrapped on x86-64 and i686 (using H.J.'s options). > > Committed as rev. 217588. > > 2014-11-14 Vladimir Makarov <vmaka...@redhat.com> > > * lra-int.h (lra_create_live_ranges): Add parameter. > * lra-lives.c (temp_bitmap): Move higher. > (initiate_live_solver): Move temp_bitmap initialization into > lra_live_ranges_init. > (finish_live_solver): Move temp_bitmap clearing into > live_ranges_finish. > (process_bb_lives): Add parameter. Use it to control live info > update and dead insn elimination. Pass it to mark_regno_live and > mark_regno_dead. > (lra_create_live_ranges): Add parameter. Pass it to > process_bb_lives. > (lra_live_ranges_init, lra_live_ranges_finish): See changes in > initiate_live_solver and finish_live_solver. > * lra-remat.c (do_remat): Process insn non-operand hard regs too. > Use temp_bitmap to update avail_cands. > * lra.c (lra): Pass new parameter to lra_create_live_ranges. Move > check with lra_need_for_spill_p after live range pass. Switch on > rematerialization pass.
Unfortunately, it failed to bootstrap ia32 GCC: https://gcc.gnu.org/ml/gcc-regression/2014-11/msg00392.html You can bootstrap ia32 GCC on Linux/x86-64: 1. Install ia32 binutils under /foo/bar. 2. Set PATH=/foo/bar:$PATH 3. Install 32-bit libraries used by GCC, glibc, mpfr, gmp, libmpc. ... 4. Configure GCC with CC="gcc -m32" CXX="g++ -m32" ../src-trunk/configure \ --with-arch=core2 --with-cpu=slm --prefix=/usr/5.0.0 --enable-clocale=gnu --enable-shared --with-demangler-in-ld i686-linux --with-fpmath=sse --enable-languages=c,c++ -- H.J.