On Thu, Nov 21, 2019 at 10:35 AM Tobias Burnus <tob...@codesourcery.com> wrote: > > On 11/20/19 10:35 PM, Thomas König wrote: > >> Is there a risk of performance regressions due to higher register > >> pressure? > > richi points out (on IRC) that ideally LTO IPA opts would promote the > call-by reference to call-by value – but is not sure that it indeed > happens. [In any case, Linux distros have started to compile packages > with LTO.] > > One could try and see whether that indeed happens. – Still, I think the > real solution is to teach the middle end about the Fortran semantics.
OK, so I found it, it's handled via SSA_NAME_POINTS_TO_READONLY_MEMORY which is initialized during the rewrite into SSA form from the information given by the "fn spec" attribute: for (tree arg = DECL_ARGUMENTS (cfun->decl); arg; arg = DECL_CHAIN (arg), ++i) { if (i >= (unsigned) TREE_STRING_LENGTH (fnspec)) break; if (TREE_STRING_POINTER (fnspec)[i] == 'R' || TREE_STRING_POINTER (fnspec)[i] == 'r') so when the frontend sets "fn spec" from the intent it should already work. But the examples I saw above didn't use INTENT(IN) for the scalar parameters. Richard. > Cheers, > > Tobia > >