------- Additional Comments From schlie at comcast dot net  2005-03-01 01:02 
-------
Subject: Re:  static initialization .data redundantly
 copied to ram prior to use.

> ------- Additional Comments From bjoern dot m dot haase at web dot de
> I think the key problem is, that C language permits you to pass pointers to
> your static const data structures to other functions. Possibly functions that
> are not located within the same source file. While functions whithin the
> source file that defines the const data structures could in principle know
> that these data should be located in program memory and that they should be
> accessed by using lpm instructions, I do not see how to pass this knowledge to
> externally defined functions. Only solution in my opinion would be to define
> different classes of pointers.

- Understood, however would seem to correspondingly require a new type
  and/or attribute be defined and visible from the parser through to type
  checking and rtl template matching; So wonder if it's sufficient to use
  the existing "static const" attributes to designate program-memory
  mapped data (which is what it is) and thereby assume that only references
  to "static const" are prog-mem references, and correspondingly require
  functions which access such data directly to explicitly identify their
  arguments accordingly, as otherwise the reference will be presumed to
  reference data-memory. However any "static const" may first be copied to
  a data-memory variable and then passed as reference as desired to utilize
  functions with more generalized arguments, and then freed, or whatever.
  
  Hopefully such attributes are already visible at the tree/rtl/template
  level so that memory operand templates may identify (static const *)
  types, and utilize program vs data memory loads as appropriate; as
  otherwise, it's not real clear that this has much a chance of being
  accomplished; and would be a shame to otherwise waist RAM on static
  const data already stored and accessible the program-memory. 




-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20243

Reply via email to