summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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");