On Oct 29, 2010, at 5:48 PM, Andrew Pinski wrote: > On Fri, Oct 29, 2010 at 2:28 PM, Paul Koning <paul_kon...@dell.com> 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