[Bug libfortran/93871] COTAN is slow for complex types
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 26 00:59:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93871
--- Comment #24 from kargl at gcc dot gnu.org ---
(In reply to kargl from comment #23)
> Created attachment 47913 [details]
> Diff that replaces handling of degree trig functions.
Fritz,
I have attached a patch that completely replaces how you handled
the various degree trig functions. This patch brings these
functions into alignment with how all other functions are handled.
The patch fixes a number of ICE issues with simplification.
Ironically, I did not include Thomas's patch that started me down
this path, so you'll want to revisit his patch. A simplify ChangeLog
follows.
* gfortran.h (GFC_ISYM_ACOSD,GFC_ISYM_ASIND, GFC_ISYM_ATAN2D,
GFC_ISYM_ATAND, GFC_ISYM_COSD, GFC_ISYM_COTAND, GFC_ISYM_SIND,
GFC_ISYM_TAND): New enum values.
* intrinsic.c (add_functions): Associate acosd, asind, atand, atan2d,
cosd, cotand, sind, and tand with its enum value, and give each
routine a simplification routine.
* intrinsic.c (add_functions): Connect cotan to gfc_simplify_cotan
(do_simplify): Remove special casing of DEC math functions.
* intrinsic.h: New prototypes for gfc_simplify_acosd,
gfc_simplify_asind, gfc_simplify_atand, gfc_simplify_cosd,
gfc_simplify_cotand, gfc_simplify_sind, gfc_simplify_tand.
Remove prototypes for deleted functions gfc_simplify_atrigd,
gfc_simplify_trigd, gfc_resolve_cotan, gfc_resolve_trigd
gfc_resolve_atrigd
* iresolve.c (is_trig_resolved, copy_replace_function_shallow,
gfc_resolve_cotan, get_radians, get_degrees, resolve_trig_call,
gfc_resolve_trigd, gfc_resolve_atrigd, gfc_resolve_atan2d): Deleted
functions.
* simplify.c (gfc_simplify_acosd, gfc_simplify_asind,
gfc_simplify_atand, gfc_simplify_atan2d, gfc_simplify_cosd,
gfc_simplify_sind, gfc_simplify_tand, gfc_simplify_cotand): New
function for, well, simplification.
* simplify.c (gfc_simplify_asinh): Fix error message.
* simplify.c (simplify_trig_call, radians_f, gfc_simplify_atrigd):
Delete function.
* trans-intrinsic.c (rad2deg, deg2rad, gfc_conv_intrinsic_atrigd,
gfc_conv_intrinsic_trigd, gfc_conv_intrinsic_cotan,
gfc_conv_intrinsic_atan2d): New function.
(gfc_conv_intrinsic_function): Use new enum values to select a new
function.
More information about the Gcc-bugs
mailing list