This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
This patch makes the LTO failures go away.
It propagates the information that we want (non-)restrict types from
gfc_trans_assignment_1 (where we have access to the LHS) down to
gfc_conv_structure (where the type specialization happens).
The call graph is roughly as follows (to be seen with a fixed font):
gfc_trans_assignment_1 [set restricted]
\
+-> gfc_conv_expr <------------------------------+-------+
\ \ \
+-> gfc_conv_structure [use restricted] <----+-|-----+ |
\ \| \|
+-> gfc_conv_initializer ----------------+ +
\ |
+-> gfc_conv_array_initializer -----------+
To avoid polluting every function (and every caller) with a restricted flag
I have added it to gfc_se, which has already a good deal of request
specification flags.
Unfortunately, gfc_conv_initializer and gfc_conv_array_initializer don't have
a gfc_se arg, so they don't avoid the restricted argument.
To avoid changing all gfc_conv_initializer callers it is made a wrapper around
the function with the restricted argument.
I didn't do the same for gfc_conv_array_initializer as it has a single caller,
so the interface change is harmless/non-invasive. As I had to update the
declaration I moved it from gfortran.h to trans-array.h by the way.
OK?
Attachment:
pr45586-3.CL
Description: Text document
Attachment:
pr45586_v7-3.patch
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |