http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45742

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-11-12 
20:22:24 UTC ---
(In reply to comment #1)
> Apparently, VOLATILE has no effect at all.  Another test case:
[...]
> Tobias, any ideas?

No idea:

$ LANG= gfortran -v 2>&1|grep -E 'experi|Targ'
Target: x86_64-unknown-linux-gnu
gcc version 4.6.0 20101111 (experimental) [trunk revision 166614] (GCC) 

$ gfortran -fdump-tree-original -fdump-tree-optimized -O3 -c test.f90

$ cat test.f90.003t.original
...
  integer(kind=4) b;
  volatile integer(kind=4) j;

  b = ((j + j) + j) + j;
...

$ cat test.f90.144t.optimized
...
  j.1_1 ={v} j;
  j.1_2 ={v} j;
  D.1508_3 = j.1_2 + j.1_2;
  j.1_4 ={v} j;
  D.1509_5 = D.1508_3 + j.1_4;
  j.1_6 ={v} j;
  b.2_7 = D.1509_5 + j.1_6;

Looks good!

Reply via email to