On Oct 29, 2010, at 5:48 PM, Andrew Pinski wrote:
> On Fri, Oct 29, 2010 at 2:28 PM, Paul Koning <[email protected]> wrote:
>> I see documentation for TARGET_VALID_POINTER_MODE, and I see ports that
>> define it... but I don't see any code that uses it.
>
> Ok, there are two issues it seems. First it is used in target.def:
> /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */
> DEFHOOK
> (valid_pointer_mode,
> "",
> bool, (enum machine_mode mode),
> default_valid_pointer_mode)
>
> But the other issue is that the default
> default_addr_space_pointer_mode does not use it which means it is
> unused really. I think we should only have one or the other hook
> really.
Thanks. I did not know the correct string to look for ("valid_pointer_mode"
without the prefix). I did find a reference or two.
What triggered the question is that I'm trying to debug a testsuite ICE in
fortran, pdp11 target, where it aborts in convert_memory_address_addr_space
apparently trying to make a 32 bit pointer. But only 16 bit pointers are
valid, ptr_mode is HImode as expected and as far as I can tell from gccint
everything is set up correctly for that to be the only pointer type. I don't
have TARGET_VALID_POINTER_MODE defined and from what the documentation says it
doesn't seem like I have to. So where should I look to find an explanation for
why the fortran compiler is trying to make an SImode pointer?
paul