File 0005-RB_GC_GUARD-stronger-than-gcc7.patch of Package ruby2.2
From cb85d94f376a5d4fca33f7f7e2822dc30c1cfe66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20R=C3=BCckert?= <mrueckert@suse.de>
Date: Tue, 21 Mar 2017 13:33:40 +0100
Subject: [PATCH 5/5] RB_GC_GUARD stronger than gcc7
From 9eb54f7fb4672a4b0f39772be819965a4b7088f5 Mon Sep 17 00:00:00 2001
From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Mon, 13 Feb 2017 08:14:19 +0000
Subject: [PATCH] ruby.h: RB_GC_GUARD stronger than gcc7
* include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from
optimization by using as an input to inline asm.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
---
include/ruby/ruby.h | 6 +++++-
marshal.c | 4 ++--
2 files changed, 7 insertions(+), 3 deletions(-)
---
include/ruby/ruby.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 6e430da179..84b6ff8d99 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -512,7 +512,7 @@ static inline int rb_type(VALUE obj);
* itself. don't use it directly */
#ifdef __GNUC__
#define RB_GC_GUARD_PTR(ptr) \
- __extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); rb_gc_guarded_ptr;})
+ __extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); __asm__("### RB_GC_GUARD" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr;})
#else
#ifdef _MSC_VER
#pragma optimize("", off)
--
2.12.0