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, dmalc...@gcc.gnu.org 
> > <dmalc...@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.

Reply via email to