aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-02 06:41:54 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-02 06:41:54 +0000
commit1f76918a33c1ca0e563910940f292303016f34fe (patch)
tree51a0c09acea1c4e52090facc58c968357c08e52d
parenta6b50f379d4b71acac73ac6b22cbe2d2c5b50b3f (diff)
downloadruby-1f76918a33c1ca0e563910940f292303016f34fe.tar.gz
label as lvalue is a GCCism
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--regexec.c5
-rw-r--r--vm_exec.h6
2 files changed, 5 insertions, 6 deletions
diff --git a/regexec.c b/regexec.c
index 4582c35c3f..9b6232e30b 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1461,9 +1461,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
# define CASE(x) L_##x: sbegin = s; OPCODE_EXEC_HOOK;
# define DEFAULT L_DEFAULT:
# define NEXT sprev = sbegin; JUMP
-# define JUMP goto *oplabels[*p++]
+# define JUMP RB_GNUC_EXTENSION_BLOCK(goto *oplabels[*p++])
- static const void *oplabels[] = {
+ RB_GNUC_EXTENSION static const void *oplabels[] = {
&&L_OP_FINISH, /* matching process terminator (no more alternative) */
&&L_OP_END, /* pattern code terminator (success end) */
@@ -4617,4 +4617,3 @@ onig_copy_encoding(OnigEncodingType *to, OnigEncoding from)
{
*to = *from;
}
-
diff --git a/vm_exec.h b/vm_exec.h
index 29120975ce..4362ace467 100644
--- a/vm_exec.h
+++ b/vm_exec.h
@@ -75,7 +75,7 @@ error !
#define LABEL(x) INSN_LABEL_##x
#define ELABEL(x) INSN_ELABEL_##x
-#define LABEL_PTR(x) &&LABEL(x)
+#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
#define INSN_ENTRY_SIG(insn) \
if (0) fprintf(stderr, "exec: %s@(%d, %d)@%s:%d\n", #insn, \
@@ -106,7 +106,7 @@ error !
/* for GCC 3.4.x */
#define TC_DISPATCH(insn) \
INSN_DISPATCH_SIG(insn); \
- goto *(void const *)GET_CURRENT_INSN(); \
+ RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); \
;
#else
@@ -115,7 +115,7 @@ error !
#define TC_DISPATCH(insn) \
DISPATCH_ARCH_DEPEND_WAY(insns_address_table[GET_CURRENT_INSN()]); \
INSN_DISPATCH_SIG(insn); \
- goto *insns_address_table[GET_CURRENT_INSN()]; \
+ RB_GNUC_EXTENSION_BLOCK(goto *insns_address_table[GET_CURRENT_INSN()]); \
rb_bug("tc error");