This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [buildbot] r201508: Build failures after pass C++ conversion
- From: David Malcolm <dmalcolm at redhat dot com>
- To: Jan-Benedict Glaw <jbglaw at lug-owl dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 06 Aug 2013 12:11:07 -0400
- Subject: Re: [buildbot] r201508: Build failures after pass C++ conversion
- References: <20130805201605 dot 1748 dot qmail at sourceware dot org> <20130806111256 dot GA16320 at lug-owl dot de> <1375805184 dot 1954 dot 15 dot camel at surprise>
On Tue, 2013-08-06 at 12:06 -0400, David Malcolm wrote:
> On Tue, 2013-08-06 at 13:12 +0200, Jan-Benedict Glaw wrote:
> > On Mon, 2013-08-05 20:16:05 -0000, dmalcolm@gcc.gnu.org <dmalcolm@gcc.gnu.org> wrote:
> > > New Revision: 201508
> > >
> > > URL: http://gcc.gnu.org/viewcvs?rev=201508&root=gcc&view=rev
> > > Log:
> > > Automated conversion of passes to C++ classes
> > >
> > > gcc/
> > >
> > > Patch autogenerated by refactor_passes.py from
> > > https://github.com/davidmalcolm/gcc-refactoring-scripts
> > > revision 03fe39476a4c4ea450b49e087cfa817b5f92021e
> >
> > I see quite some fall-out from this on epiphany-elf:
> >
> > g++ -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../../../../gcc/gcc -I../../../../gcc/gcc/build -I../../../../gcc/gcc/../include -I../../../../gcc/gcc/../libcpp/include -I../../../../gcc/gcc/../libdecnumber -I../../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I../../../../gcc/gcc/../libbacktrace \
> > -o build/genflags.o ../../../../gcc/gcc/genflags.c
> > In file included from ./tm.h:21:0,
> > from ../../../../gcc/gcc/genflags.c:26:
> > ../../../../gcc/gcc/config/epiphany/epiphany.h:932:8: error: ârtl_opt_passâ does not name a type
> > extern rtl_opt_pass *make_pass_mode_switch_use (gcc::context *ctxt);
> > ^
> > ../../../../gcc/gcc/config/epiphany/epiphany.h:933:8: error: ârtl_opt_passâ does not name a type
> > extern rtl_opt_pass *make_pass_resolve_sw_modes (gcc::context *ctxt);
> > ^
> Sorry about this, clearly I failed to test the target-specific passes.
>
> epiphany_init does some interesting manipulation of passes. I don't
> have epiphany hardware, but I've reproduced the build failure on my
> x86_64 box using --configure target=epiphany-elf, and the attached patch
> ports it to the new API. With this patch, stage 1 was able to build,
> and cc1 seems to generate assembler on a trivial test. I was able to
> step through epiphany_init's pass manipulation, and it appears to be
> doing the right thing.
>
> This does add two new headers to epiphany.c; I'm not seeing where to add
> the deps (gcc/config/epiphany/t-epiphany doesn't list epiphany.o).
>
> I'm kicking off a bootstrap of this (on x86_64) to further verify that
> the non-epiphany changes are good. What other testing can I do to
> verify this?
>
> gcc/
>
> * config/epiphany/epiphany.c (pass_mode_switch_use): New.
> (epiphany_init): Port to new C++ pass API.
> (epiphany_optimize_mode_switching): Likewise.
> * config/epiphany/epiphany.h: Likewise.
> * pass_manager.h (pass_manager::get_pass_split_all_insns): New.
> (pass_manager::get_pass_mode_switching): New.
> (pass_manager::get_pass_peephole2): New.
> * mode-switching.c (pass_mode_switching): Add clone method.
> * recog.c (pass_peephole2): Add clone method.
> (pass_split_all_insns): Add clone method.
>
This patch also removed "static" qualifiers from the register_pass_info,
which may have been overzealous, though they seemed pointless: the
struct is only used during the lifetime of the register_pass call.