970125-0.f

Jeffrey A Law law@cygnus.com
Mon Jun 1 20:31:00 GMT 1998


  In message < 199806012144.RAA08793@melange.gnu.org >you write:
  > >Note that we have (ADDR_EXPR (ADDR_EXPR ...))  which seems more than
  > >a little strange to me.
  > 
  > In the general case, not any stranger than (ADDR_EXPR (PLUS_EXPR ...)),
  > which gcc has supported for years.  (Making it possible for me to
  > rip a bunch of grody code out of g77, and apparently the changes
  > were driven by Kenner wanting to remove similar code from GNAT as well,
  > though maybe gpc drove this.)
So what does it mean to have ADDR_EXPR (PLUS_EXPR ...))).  Do you
put the result of the PLUS_EXPR into a stack slot, then take it's
address?

  > Specifically, (ADDR_EXPR (ADDR_EXPR (VAR_DECL `foo'))) in, e.g., a
  > list of arguments, means "pass a pointer to the address of foo".
  > Or, "pass the address of foo by reference", which is how g77 really
  > looks at it.
OK.  So you want/need the pointer to foo shoved into a stack slot
and we pass the address of the stack slot?  I can do that, though I
don't see how it's useful :-)  

jeff



More information about the Gcc-bugs mailing list