On 11.10.14 12:43, Jan-Benedict Glaw wrote:
On Wed, 2014-10-08 17:10:01 -0000, hubi...@gcc.gnu.org <hubi...@gcc.gnu.org>
wrote:
URL: https://gcc.gnu.org/viewcvs?rev=216010&root=gcc&view=rev
* ipa-polymorphic-call.c (extr_type_from_vtbl_store): Do better
pattern matching of MEM_REF.
(check_stmt_for_type_change): Update.
This recent commit led to fallout for all targets build with
config-list.mk:
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 -Woverloaded-virtual -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 ipa-polymorphic-call.o -MT
ipa-polymorphic-call.o -MMD -MP -MF ./.deps/ipa-polymorphic-call.TPo
../../../gcc/gcc/ipa-polymorphic-call.c
../../../gcc/gcc/ipa-polymorphic-call.c: In function ‘tree_node*
extr_type_from_vtbl_ptr_store(gimple, type_change_info*, long int*)’:
../../../gcc/gcc/ipa-polymorphic-call.c:2117:1: error: assuming signed overflow
does not occur when assuming that (X + c) < X is always false
[-Werror=strict-overflow]
}
^
cc1plus: all warnings being treated as errors
make[2]: *** [ipa-polymorphic-call.o] Error 1
make[2]: Leaving directory
`/home/jbglaw/build-configlist_mk/iq2000-elf/build-gcc/mk/iq2000-elf/gcc'
make[1]: *** [all-gcc] Error 2
(Note that this `g++' is an up-to-date revision, and the line number
mentioned is also wrong.) It's probably caused by this chunk:
diff --git a/gcc/ipa-polymorphic-call.c b/gcc/ipa-polymorphic-call.c
index 3e4aa04..51c6709 100644
--- a/gcc/ipa-polymorphic-call.c
+++ b/gcc/ipa-polymorphic-call.c
[...]
@@ -1218,7 +1226,19 @@ extr_type_from_vtbl_ptr_store (gimple stmt, struct
type_change_info *tci,
print_generic_expr (dump_file, tci->instance, TDF_SLIM);
fprintf (dump_file, " with offset %i\n", (int)tci->offset);
}
- return NULL_TREE;
+ return tci->offset > GET_MODE_BITSIZE (Pmode) ? error_mark_node :
NULL_TREE;
+ }
+ if (offset != tci->offset
+ || size != POINTER_SIZE
+ || max_size != POINTER_SIZE)
+ {
+ if (dump_file)
+ fprintf (dump_file, " wrong offset %i!=%i or size %i\n",
+ (int)offset, (int)tci->offset, (int)size);
+ return offset + GET_MODE_BITSIZE (Pmode) <= offset
<------------------------
+ || (max_size != -1
+ && tci->offset + GET_MODE_BITSIZE (Pmode) > offset +
max_size)
+ ? error_mark_node : NULL;
}
}
This is visible on all config-list.mk builds, see eg. just a few
recent ones:
m32r-elf: http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=361814
lm32-elf: http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=361741
ia64-elf: http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=361682
ia64-linux:
http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=361738
This is Bug 63496
Andreas