https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65930
sergey.shalnov at intel dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sergey.shalnov at intel dot com
--- Comment #4 from sergey.shalnov at intel dot com ---
Richard,
I can confirm that the issue exists and it can be solved by make data types of
accumulator and equation equal.
As I can see you propose to introduce intermediate internal accumulator in
uint32 type and store it into accumulator (int) later. Please correct me if I'm
wrong.
Anyway, may I, please, propose a bit simpler way to solve the issue?
In GIMPLE statement we have (in the place of reduction tree-vect=loop.c:2877):
"sum_12 = (int) _6;"
I believe the issue disappears if we change it to:
"sum_12 = _6;"
I'm not sure but, if I remember correctly, the C standard treat these types
(uint->int) casting as "undefined behavior". In this case, the compiler can do
this type cast(it might be under some command line switches).
What do you think, could it help?
Sergey