https://gcc.gnu.org/bugzilla/show_bug.cgi?id=73285
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|perhaps avoid duplication? |perhaps avoid duplication | |for function of argument | |order (double, int) or | |(int, double) --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Really I can see the following to be done (which does not optimize it fully but can then be done as aliases at the target level). Take a more complex example: int f0(int a, int *b) { return b[a]; } int f1(int *b, int a) { return b[a]; } --- CUT --- An IPA pass could figure out that f0 and f1 are the same function except the arguments are in a different order. Then f1 (or f0) calls the other function with the corrected order (with a sibcalling but marked as almost alias). At the target level, we see the almost alias had the same argument passing rules and just create them as an alias.