diff --git a/ChangeLog b/ChangeLog index bc2511a651..1dbc297e24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Dec 2 06:02:00 2012 KOSAKI Motohiro + + * gc.h (SET_MACHINE_STACK_END): add volatile for preventing + harmful optimization. + Sun Dec 2 05:01:58 2012 Koichi Sasada * iseq.c (rb_iseq_line_trace_each): iterate `line' event only. diff --git a/gc.h b/gc.h index 2a3dd92c01..10f634e346 100644 --- a/gc.h +++ b/gc.h @@ -3,9 +3,9 @@ #define RUBY_GC_H 1 #if defined(__x86_64__) && defined(__GNUC__) && !defined(__native_client__) -#define SET_MACHINE_STACK_END(p) __asm__("movq\t%%rsp, %0" : "=r" (*(p))) +#define SET_MACHINE_STACK_END(p) __asm__ volatile ("movq\t%%rsp, %0" : "=r" (*(p))) #elif defined(__i386) && defined(__GNUC__) && !defined(__native_client__) -#define SET_MACHINE_STACK_END(p) __asm__("movl\t%%esp, %0" : "=r" (*(p))) +#define SET_MACHINE_STACK_END(p) __asm__ volatile ("movl\t%%esp, %0" : "=r" (*(p))) #else NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p)); #define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)