I've noticed
../../gcc/analyzer/known-function-manager.cc:86:33: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
../../gcc/analyzer/known-function-manager.cc:87:26: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
../../gcc/analyzer/known-function-manager.cc:140:33: warning: arithmetic between different enumeration types ‘internal_fn’ and ‘built_in_function’ is deprecated
+[-Wdeprecated-enum-enum-conversion]
warnings. Fixed thusly.
2025-11-28 Jakub Jelinek <jakub@redhat.com>
* known-function-manager.cc (known_function_manager::add): Avoid
arithmetics between enumerators from different enum types.
(known_function_manager::get_internal_fn): Likewise.
std::unique_ptr<known_function> kf)
{
gcc_assert (ifn < IFN_LAST);
- delete m_combined_fns_arr[ifn + END_BUILTINS];
- m_combined_fns_arr[ifn + END_BUILTINS] = kf.release ();
+ delete m_combined_fns_arr[ifn + int (END_BUILTINS)];
+ m_combined_fns_arr[ifn + int (END_BUILTINS)] = kf.release ();
}
/* Get any known_function for FNDECL for call CD.
known_function_manager::get_internal_fn (enum internal_fn ifn) const
{
gcc_assert (ifn < IFN_LAST);
- return m_combined_fns_arr[ifn + END_BUILTINS];
+ return m_combined_fns_arr[ifn + int (END_BUILTINS)];
}
/* Get any known_function for NAME, without type-checking.