This is the mail archive of the gcc@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]

Re: [gfortran] Fix NULL reference types.



On Aug 19, 2004, at 1:34 PM, Mark Mitchell wrote:


Richard Kenner wrote:

Kenner and I discussed this back in 1998:

http://gcc.gnu.org/ml/gcc-bugs/1998-07/msg00040.html

I went back to that message. You list four properties. The latter two aren't
relevant for optimizers.


But the second is that it's never modified.
My feeling, though, is that REFERENCE_TYPE by itself shouldn't have that
property because we already have a way to represent something that's never
modified.


That means that only difference is that REFERENCE_TYPE values cannot be
null while POINTER_TYPE values can be. Does that seem right?


To me, yes.

RTH's complaint about Fortran and debugging is interesting. Although, I don't think Fortran has a notion of "reference type" in the same way that C++ does. It might be that DWARF 2/3 already provides some way of describing optional arguments that does not rely on their type being REFERENCE_TYPE. It might also be that we could adjust the debug-generators to generate reference types even for optional arguments.

I suppose that we could provide the same information I wanted to convey with REFERENCE_TYPE to the optimizer in some other way: a bit on VAR_DECLs, PARM_DECLs, FIELD_DECLs, etc. that says "never NULL".

I do think that we should find some way to give this information to the optimizers.

When diego's assert_expr (range information) stuff goes in, you can always just add ASSERT_EXPRS at the beginning of the function for these variables, that says "!= 0"

The fact that the value is never 0 should be communicated to the optimizers the same way we will communicate other range information about variables.
--Dan



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]