This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] bug 28684


Hello,

Attached is an initial implementation of the -freorder-fp flag described in
bug 28684
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28684).
The new flag should allow optimizations for floating-point arithmetic that
require
reordering floating-point operations (eg. a/b --> a*(1/b) or a+b+c -->
a+c+b).
Also, I attached a list of places where the -funsafe-math-optimization flag
occurs with an explanation for each one of them why it should [not]
be under the new flag.  There could be different occurrences of the unsafe
flag in each file so in case the decision was not unified I mentioned it.
The occurrences of the unsafe flag in .md files seems to be related to IEEE
standards
so I did not put the new flag in them.

I appreciate your comments.

Revital

(See attached file: diff_21_9)



  File                             Should be under the -freorder-fp?
====================================================================

1.  builtins.c - Looks like it should'nt. Most of the code involves
    optimizations like pow(x,0.5) = sqrt(x); but I am not sure about
    expand_builtin_pow.
--------------------------------------------------------------------

2.  builtins.def - Looks like it should'nt - related to rounding.
--------------------------------------------------------------------

3.  calls.c - Looks like it should'nt - Precision issues.
--------------------------------------------------------------------

4.  combine.c - Mixed.
--------------------------------------------------------------------

5.  config/alpha/alpha.c - No , deals with simplify comparision.
--------------------------------------------------------------------

6.  config/pa/pa.md
--------------------------------------------------------------------

7.  config/mips/mips.md
--------------------------------------------------------------------

8.  config/mn10300/mn10300.md
--------------------------------------------------------------------

9.  config/i386/i386.md
--------------------------------------------------------------------

10. config/i386/i386.c - Looks like it should'nt.
--------------------------------------------------------------------

11. config/rs6000/spe.md
--------------------------------------------------------------------

12. config/rs6000/predicates.md
--------------------------------------------------------------------

13. config/rs6000/rs6000.md
--------------------------------------------------------------------

14. config/rs6000/rs6000.c - Looks like it should'nt.
--------------------------------------------------------------------

15. config/sh/sh.md
--------------------------------------------------------------------

16. config/m68k/m68k.md
--------------------------------------------------------------------

17. config/xtensa/xtensa.md
--------------------------------------------------------------------

18. convert.c - No - Precision issues.
--------------------------------------------------------------------

19. flags.h - No - Treatment of NaN.
--------------------------------------------------------------------

20. fold-const.c - Mixed.
--------------------------------------------------------------------

21. fortran/trans-expr.c - Not sure.
--------------------------------------------------------------------

22. java/typeck.c - No - Precision issues.
--------------------------------------------------------------------

23. loop-unroll.c - Yes - Variable expansions in unroller.
--------------------------------------------------------------------

24. reg-stack.c - No - Related to truncate.
--------------------------------------------------------------------

25. simplify-rtx.c - Mixed - Part of it realted to rounding or
IEEE standard.
--------------------------------------------------------------------

26. tree-ssa-loop-im.c - Yes - convert a/b to a*(1/b).
--------------------------------------------------------------------

27. tree-ssa-math-opts.c  - Yes - CSE reciprocal.
--------------------------------------------------------------------

28. tree-ssa-reassoc.c  - Yes  - Reassociate expressions in
basic block BB.
--------------------------------------------------------------------

29. tree-tailcall.c - Yes - Reverse the order of operations.
--------------------------------------------------------------------

30. tree-vectorizer.c - Yes - Reduction.
--------------------------------------------------------------------

Attachment: diff_21_9
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]