Hello. I reached asking about GCC GSoC project about adding and folding functions like roundeven. I could not apply for the idea this year but interested in the peoject and really hoping it would be carry forwarded. Since I've been studying source code and about the project, I think working on this from now would give me some heads up and hands on with the source code.
I did study <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1778.pdf>. It does tell that roundeven rounds its argument to nearest integral ties to even (least significant bit 0) returning integral value provided that the resulting value is exact. So, for the start, I'd be implementing this functionality for roundeven. As ita said in earlier mails that, similar functions like real_ceil are implemented in real.c and are used in fold-const-call.c. Roundeven might be implemented in similar way. Is it built-in (internal) function means not to be exposed to end-user? Studying some functions like real_ceil, there are call checks (flag_errno_math) so I believe similar would be needed for roundeven. In real.c where real_ceil is implemented, there are function calls (and implementations) like do_fix_trunc which also then call functions like decimal_do_dix_trunc (maybe the main functionality of do_fix_trunc?, other are just checks, like NaN or qNaN). I did not understand these functions really and what do they do. Also I did not understand the structure of REAL_VALUE_TYPE (r->cl and etc?) Also when does the real.c and fold-const-call.c comes in picture in the flow of GCC (Is it for GIMPLE level instruction selection (gimple stmnt to corresponding rtl instruction))? Thanks. Regards, -Tejas