From 4e49b994de060d4a6c9318d0ed52ef038153426e Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 17 Jun 2020 17:45:29 +0100 Subject: [PATCH] recog: Tweak insn_gen_fn::operator() definition MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes a “left operand of comma has no effect” warning that some were seeing. Also fixes a spurious ellipsis that Jonathan Wakely pointed out. 2020-06-17 Richard Sandiford gcc/ * coretypes.h (first_type): New alias template. * recog.h (insn_gen_fn::operator()): Use it instead of a decltype. Remove spurious “...” and split the function type out into a typedef. --- gcc/coretypes.h | 4 ++++ gcc/recog.h | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/coretypes.h b/gcc/coretypes.h index cda2269..01ec2e2 100644 --- a/gcc/coretypes.h +++ b/gcc/coretypes.h @@ -359,6 +359,10 @@ struct kv_pair const ValueType value; /* the value of the name */ }; +/* Alias of the first type, ignoring the second. */ +template +using first_type = T1; + #else struct _dont_use_rtx_here_; diff --git a/gcc/recog.h b/gcc/recog.h index 0a71a02..d674d38 100644 --- a/gcc/recog.h +++ b/gcc/recog.h @@ -295,9 +295,10 @@ struct insn_gen_fn typedef void (*stored_funcptr) (void); template - rtx_insn *operator() (Ts... args...) const + rtx_insn *operator() (Ts... args) const { - return ((rtx_insn *(*) (decltype(args, NULL_RTX)...)) func) (args...); + typedef rtx_insn *(*funcptr) (first_type...); + return ((funcptr) func) (args...); } // This is for compatibility of code that invokes functions like -- 2.7.4