From: Paul Eggert Date: Sun, 3 Apr 2011 05:41:46 +0000 (-0700) Subject: * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~394^2~44 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b895abced91e6dcedf6c580ea3e51befc5c757c1;p=emacs.git * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int. Otherwise, GCC 4.6.0 optimizes the loop check away since the check can always succeed if overflow has undefined behavior. --- diff --git a/src/ChangeLog b/src/ChangeLog index 2c8a95c3571..62731238903 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2011-04-03 Paul Eggert + * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int. + Otherwise, GCC 4.6.0 optimizes the loop check away since the check + can always succeed if overflow has undefined behavior. + * search.c (boyer_moore, wordify): Remove vars set but not used. (wordify): Omit three unnecessary tests. diff --git a/src/alloc.c b/src/alloc.c index 07f1caae46b..54c4760abab 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5221,7 +5221,7 @@ int last_marked_index; links of a list, in mark_object. In debugging, the call to abort will hit a breakpoint. Normally this is zero and the check never goes off. */ -static int mark_object_loop_halt; +static size_t mark_object_loop_halt; static void mark_vectorlike (struct Lisp_Vector *ptr) @@ -5278,7 +5278,7 @@ mark_object (Lisp_Object arg) void *po; struct mem_node *m; #endif - int cdr_count = 0; + size_t cdr_count = 0; loop: