This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Switching to C++ by default in 4.8


And I want to say that tree/gimple/rtl are compiler's data(or state),
not compiler's text(or logic), the most important thing about them is
how to access their fields.


Given the above assumption, now I doubt the necessity of accessor macros or C++ getter/setter method.

Is "tree->code" more direct and efficient than "TREE_CODE(tree)" or
"tree->get_code()" ?

On a side note, the dragonegg plugin (which is written in C++) defines


  /// isa - Return true if the given tree has the specified code.
  template<enum tree_code code> bool isa(const_tree t) {
    return TREE_CODE(t) == code;
  }

which lets you write things like

if (isa<INTEGRAL_TYPE>(t)) ...

and so on.

While this is a bit more compact than "if (TREE_CODE(t) == INTEGRAL_TYPE",
the main advantage to my mind is that it is a standard C++ idiom that should
be natural for many C++ programmers.

Ciao, Duncan.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]