Hi Graham, On Mon, 2017-06-12 11:40:39 +0200, Jan-Benedict Glaw wrote: > On Fri, 2017-05-12 20:14:23 +0100, Graham Markall wrote: > > Since the combine pass canonicalises shift-add insns using plus and > > ashift (as opposed to plus and mult which it previously used to do), it > > no longer creates *add_n or *sub_n insns, as the patterns match plus and > > mult only. The outcome of this is that some opportunities to generate > > add{1,2,3} and sub{1,2,3} instructions are missed. > > [...] > > diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c > > index 91c28e7..42730d5 100644 > > --- a/gcc/config/arc/arc.c > > +++ b/gcc/config/arc/arc.c > > @@ -3483,6 +3483,14 @@ arc_print_operand (FILE *file, rtx x, int code) > > > > return; > > > > + case 'c': > > + if (GET_CODE (x) == CONST_INT) > > + fprintf (file, "%d", INTVAL (x) ); > > + else > > + output_operand_lossage ("invalid operands to %%c code"); > > + > > + return; > > + > > > Build robot found something (see log at > http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=704773), > seems to be introduced with the above patch fragment: > > g++ -fno-PIE -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 -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -I. -I. -I/home/jbglaw/repos-configlist_mk/gcc/gcc -I/home/jbglaw/repos-configlist_mk/gcc/gcc/. -I/home/jbglaw/repos-configlist_mk/gcc/gcc/../include -I/home/jbglaw/repos-configlist_mk/gcc/gcc/../libcpp/include -I/opt/cfarm/mpc/include -I/home/jbglaw/repos-configlist_mk/gcc/gcc/../libdecnumber -I/home/jbglaw/repos-configlist_mk/gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I/home/jbglaw/repos-configlist_mk/gcc/gcc/../libbacktrace -o arc.o -MT arc.o -MMD -MP -MF ./.deps/arc.TPo /home/jbglaw/repos-configlist_mk/gcc/gcc/config/arc/arc.c > /home/jbglaw/repos-configlist_mk/gcc/gcc/config/arc/arc.c: In function ‘void arc_print_operand(FILE*, rtx, int)’: > /home/jbglaw/repos-configlist_mk/gcc/gcc/config/arc/arc.c:3503:41: error: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long int’ [-Werror=format=] > fprintf (file, "%d", INTVAL (x) ); > ^ > cc1plus: all warnings being treated as errors This still doesn't build, see the two most current builds at http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=705416 (arc-elf32, --with-cpu=arc600) and http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=705415 (arceb-linux-uclibc, --with-cpu=arc700). MfG, JBG -- Jan-Benedict Glaw jbglaw@lug-owl.de +49-172-7608481 Signature of: The course of history shows that as a government grows, liberty the second : decreases." (Thomas Jefferson)