------- Comment #1 from pinskia at gcc dot gnu dot org 2006-09-02 21:29 ------- Well actually this is just address section which goes funny. We use CSE at the rtl level do to some address mode selection (which I feel is wrong). Part of the reasons why we go funny is that we do the add in 32bit.
What is happening with the other ones is the others are being converted into " return (&a[1])[i] + (&b[1])[i];" which are not converted back into a[i+1] and b[i+1] because I don't know but they should be. This is a regression because we do PRE/FRE at the tree level and let the address selection done at the rtl level (which is correct) but the rtl level address selectiong is not working to the level we need it to be for the regression not to show up. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|minor |normal Status|UNCONFIRMED |NEW Component|tree-optimization |rtl-optimization Ever Confirmed|0 |1 GCC build triplet|x86_64-redhat-linux | GCC host triplet|x86_64-redhat-linux | GCC target triplet|x86_64-redhat-linux |x86_64-*-*, i?86-*-* Keywords| |missed-optimization Last reconfirmed|0000-00-00 00:00:00 |2006-09-02 21:29:36 date| | Summary|Overzealous CSE with static |[4.1/4.2 Regression] address |array access |selection does not work | |correctly Target Milestone|--- |4.1.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28940