From 2ba9cdcee6b0b97999c74c6fb19cdae08edd0e25 Mon Sep 17 00:00:00 2001 From: kosaki Date: Sat, 1 Dec 2012 21:15:01 +0000 Subject: [PATCH] * gc.h (SET_MACHINE_STACK_END): add volatile for preventing harmful optimization. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ gc.h | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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)