On Nov 25, 2013, at 10:25 PM, Jan-Benedict Glaw <jbg...@lug-owl.de> wrote:

> Hi!
> 
> Build log at
> http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=40865
> 
> 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 -Werror 
> -fno-common  -DHAVE_CONFIG_H -I. -I. -I../../../gcc/gcc -I../../../gcc/gcc/. 
> -I../../../gcc/gcc/../include -I../../../gcc/gcc/../libcpp/include 
> -I/opt/cfarm/mpc/include  -I../../../gcc/gcc/../libdecnumber 
> -I../../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber 
> -I../../../gcc/gcc/../libbacktrace    -o cfgexpand.o -MT cfgexpand.o -MMD -MP 
> -MF ./.deps/cfgexpand.TPo ../../../gcc/gcc/cfgexpand.c
> ../../../gcc/gcc/cfgexpand.c: In function ‘basic_block_def* 
> expand_gimple_cond(basic_block, gimple)’:
> ../../../gcc/gcc/cfgexpand.c:2027:65: error: comparison is always true due to 
> limited range of data type [-Werror=type-limits]
>    else if (BRANCH_COST (optimize_insn_for_speed_p (), false) < 4)
>                                                                 ^
> cc1plus: all warnings being treated as errors
> make[2]: *** [cfgexpand.o] Error 1

Interesting.  In the pdp11 target, BRANCH_COST is either 0 or 1.  So yes, that 
comparison is always true.

Is there a requirement that all targets must have branch cost that it, at least 
some of the time, 4 or greater?  If so, why?  If not, then I suppose 
cfgexpand.c could be changed to defeat this message, but how, or why?  In 
general, it seems perfectly reasonable to have code guarded by conditions that 
may be always true, or always false.  That's what we have optimizers for.  
Defeating such optimizations by calling them an error seems like a bad idea.

        paul

Reply via email to