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.
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_;
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