Robert Dewar wrote: > Yes, absolutely, a compiler should generate warnings as much as possible when > it is making these kind of assujmptions.
Then, you will like the following kind of patches: Index: tree-data-ref.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/tree-data-ref.c,v retrieving revision 2.32 diff -d -u -p -r2.32 tree-data-ref.c --- tree-data-ref.c 8 Jun 2005 08:47:01 -0000 2.32 +++ tree-data-ref.c 20 Jun 2005 12:57:21 -0000 @@ -499,6 +499,8 @@ estimate_niter_from_size_of_data (struct fold (build2 (MINUS_EXPR, integer_type_node, data_size, init)), step)); + warning (0, "%H undefined behavior if loop runs for more than %qE iterations", + find_loop_location (loop), estimation); record_estimate (loop, estimation, boolean_true_node, stmt); } } This is the best the compiler can do: it has warned the user of a possible undefined behavior in the code, and that it will use this assumption for transforming the code. The other opportunity raised in this thread for inferring loop bounds from undefined behavior of overflowing signed induction variables is still not implemented. I will propose a patch with the corresponding warning messages. Sebastian