------- Comment #9 from tobi at gcc dot gnu dot org 2009-08-12 20:52 ------- Side remark: DO i = 1,10 call bar(i) END DO wouldn't be valid if bar changed its argument, i.e. the compiler should generate the same, better code it does for the case where you copy the argument (bar((i))).
I was worrying about the case where a whole array is passed as an argument, for a contrived example say: DO I=1,1000 DO J=1,1000 a(i,j) = i*j PRINT *, a ! don't want to copy all of a here END DO END DO The remark about OP_PARENTHESES was more about a clean implementation. Implementing this via OP_PARENTHESES would likely only be a few lines here and there, but it would be hackish as it would be workign around a deficiency further down. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31593