diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2020-06-17 17:45:29 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2020-06-17 17:45:29 +0100 |
commit | 4e49b994de060d4a6c9318d0ed52ef038153426e (patch) | |
tree | 967c862c5093961c5e54254cfaa0820e38a530a1 | |
parent | 914eadfe86a0400e0e378819001c785ecb30aab2 (diff) | |
download | gcc-4e49b994de060d4a6c9318d0ed52ef038153426e.zip gcc-4e49b994de060d4a6c9318d0ed52ef038153426e.tar.gz gcc-4e49b994de060d4a6c9318d0ed52ef038153426e.tar.bz2 |
recog: Tweak insn_gen_fn::operator() definition
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 <richard.sandiford@arm.com>
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.
-rw-r--r-- | gcc/coretypes.h | 4 | ||||
-rw-r--r-- | gcc/recog.h | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/coretypes.h b/gcc/coretypes.h index cda22697..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<typename T1, typename T2> +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<typename ...Ts> - 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<rtx, Ts>...); + return ((funcptr) func) (args...); } // This is for compatibility of code that invokes functions like |