"dberlin at gcc dot gnu dot org" <[EMAIL PROTECTED]> writes:

| Nathan tells me it's lk_internal for a CONST_DECL.

Where does that come from?

There is a section numbered 3.5 and titled "Program and linkage".  It
says in paragraph 4

  A name having namespace scope has external linkage if it is the name of
  -- an object or reference, unless it has internal linkage; or

  -- a function, unless it has internal linkage; or

  -- a named class (clause 9), or an unnamed class defined in a
     typedef declaration in which the class has the typedef name for
     linkage purposes (7.1.3); or 

  -- a named enumeration (7.2), or an unnamed enumeration defined in a
     typedef declaration in which the enumeration has the typedef name
      for linkage purposes (7.1.3); or 

  -- an enumerator belonging to an enumeration with external linkage; or

  -- a template, unless it is a function template that has internal
     linkage (clause 14); or

  -- a namespace (7.3), unless it is declared within an unnamed namespace.

And in paragraph 8, it continues:

  Names not covered by these rules have no linkage. Moreover, except
  as noted, a name declared in a local scope (3.3.2) has no linkage. A
  name with no linkage (notably, the name of a class or enumeration
  declared in a local scope (3.3.2)) shall not be used to declare an
  entity with linkage. If a declaration uses a typedef name, it is the
  linkage of the type name to which the typedef refers that is considered.

those clearly indicates to me that the linkage of a CONST_DECL
depends on the linkage of its enumeration.

| fixing.

Please look at section 3.5 before fixing this.  
(besides an numeration does not have storage).

-- Gaby

Reply via email to