Missing and Proposed Features, and Bugs

The following are issues with the current release of CPPX. Initials (e.g. (TRD)) indicate who owns the issue.

Language and Model Features Not Yet Implemented

In general these features are accepted by the compiler, but they appear in the output represented in the GCC model instead of in the Datrix model.
  1. Templates
  2. New and free
  3. Initializers of compound structures
  4. Virtual inheritance
  5. C++ source file entities and relationships
  6. Scope relationship (from entity to its enclosing scope)

Other Desired But Unimplemented Features

  1. Linker
  2. Options to specify initial size of gd graph.
  3. Option to suppress GCC leftovers (see above) in the case of errors or missing features. (Replace them with Datrix error node.)
  4. Synthesized names for derived types (e.g. *int or int (*)(int,int) (ex)
  5. GXL schema for Datrix.
  6. GXL schema for GD (the union schema).

Current Bug List

  1. Scope of enumerators should be enumerated type not parent scope (ex) (AJM)
  2. Visibility attributes not working properly (ex)
  3. Entities in a scope are in the reverse order by ArcSon ordinal.
  4. Except for built-in types which appear on the end of the list in the global namespace.
  5. Uses of enumerated constants look like uses of integer literals (ex) (AJM)
  6. Some redundant and artificial cast calls are not eliminated. (ex?)
  7. Some references to string literals are artificially complicated. (ex?)
  8. Type of literal is wrong for ArcBitDim (ex)
  9. Compound statements don't contain their local type declarations. (ex?) (AJM)
  10. Virtual inheritance causes funct_type to dump core.
  11. Method definitions contain an explicit this pointer(ex)
  12. The "std" namespace not handled properly by gd_reduce.

Technicalities

  1. Flags on generators to trim real constants
  2. Bootstrap gd2ta, gd2vcg, and gd2gxl from gd_graph.h.
  3. Auto grow on string table
  4. Auto grow on hash table
  5. Operator nodes should be appropriate subclass of node (i.e. BinaryOperator, UnaryOperator etc).